1. Socket::
  2. Ifaddr

class Socket::Ifaddr

Socket::Ifaddr represents a result of getifaddrs() function.

Public Instance Methods

Source
static VALUEifaddr_addr(VALUE self){    struct ifaddrs *ifa = get_ifaddrs(self);    if (ifa->ifa_addr)        return rsock_sockaddr_obj(ifa->ifa_addr, rsock_sockaddr_len(ifa->ifa_addr));    return Qnil;}

Returns the address ofifaddr. nil is returned if address is not available inifaddr.

Source
static VALUEifaddr_broadaddr(VALUE self){    struct ifaddrs *ifa = get_ifaddrs(self);    if ((ifa->ifa_flags & IFF_BROADCAST) && ifa->ifa_broadaddr)        return rsock_sockaddr_obj(ifa->ifa_broadaddr, rsock_sockaddr_len(ifa->ifa_broadaddr));    return Qnil;}

Returns the broadcast address ofifaddr. nil is returned if the flags doesn’t have IFF_BROADCAST.

Source
static VALUEifaddr_dstaddr(VALUE self){    struct ifaddrs *ifa = get_ifaddrs(self);    if ((ifa->ifa_flags & IFF_POINTOPOINT) && ifa->ifa_dstaddr)        return rsock_sockaddr_obj(ifa->ifa_dstaddr, rsock_sockaddr_len(ifa->ifa_dstaddr));    return Qnil;}

Returns the destination address ofifaddr. nil is returned if the flags doesn’t have IFF_POINTOPOINT.

Source
static VALUEifaddr_flags(VALUE self){    struct ifaddrs *ifa = get_ifaddrs(self);    return IFAFLAGS2NUM(ifa->ifa_flags);}

Returns the flags ofifaddr.

The value is bitwise-or of Socket::IFF_* constants such as Socket::IFF_LOOPBACK.

Source
static VALUEifaddr_ifindex(VALUE self){    struct ifaddrs *ifa = get_ifaddrs(self);    unsigned int ifindex = if_nametoindex(ifa->ifa_name);    if (ifindex == 0) {        rb_raise(rb_eArgError, "invalid interface name: %s", ifa->ifa_name);    }    return UINT2NUM(ifindex);}

Returns the interface index ofifaddr.

Source
static VALUEifaddr_inspect(VALUE self){    struct ifaddrs *ifa = get_ifaddrs(self);    VALUE result;    result = rb_str_new_cstr("#<");    rb_str_append(result, rb_class_name(CLASS_OF(self)));    rb_str_cat2(result, " ");    rb_str_cat2(result, ifa->ifa_name);    if (ifa->ifa_flags)        ifaddr_inspect_flags(ifa->ifa_flags, result);    if (ifa->ifa_addr) {      rb_str_cat2(result, " ");      rsock_inspect_sockaddr(ifa->ifa_addr,          rsock_sockaddr_len(ifa->ifa_addr),          result);    }    if (ifa->ifa_netmask) {      rb_str_cat2(result, " netmask=");      rsock_inspect_sockaddr(ifa->ifa_netmask,          rsock_sockaddr_len(ifa->ifa_netmask),          result);    }    if ((ifa->ifa_flags & IFF_BROADCAST) && ifa->ifa_broadaddr) {      rb_str_cat2(result, " broadcast=");      rsock_inspect_sockaddr(ifa->ifa_broadaddr,          rsock_sockaddr_len(ifa->ifa_broadaddr),          result);    }    if ((ifa->ifa_flags & IFF_POINTOPOINT) && ifa->ifa_dstaddr) {      rb_str_cat2(result, " dstaddr=");      rsock_inspect_sockaddr(ifa->ifa_dstaddr,          rsock_sockaddr_len(ifa->ifa_dstaddr),          result);    }    rb_str_cat2(result, ">");    return result;}

Returns a string to show contents ofifaddr.

Source
static VALUEifaddr_name(VALUE self){    struct ifaddrs *ifa = get_ifaddrs(self);    return rb_str_new_cstr(ifa->ifa_name);}

Returns the interface name ofifaddr.

Source
static VALUEifaddr_netmask(VALUE self){    struct ifaddrs *ifa = get_ifaddrs(self);    if (ifa->ifa_netmask)        return rsock_sockaddr_obj(ifa->ifa_netmask, rsock_sockaddr_len(ifa->ifa_netmask));    return Qnil;}

Returns the netmask address ofifaddr. nil is returned if netmask is not available inifaddr.

Source
static VALUEifaddr_vhid(VALUE self){    struct ifaddrs *ifa = get_ifaddrs(self);    if (ifa->ifa_data)        return (INT2FIX(((struct if_data*)ifa->ifa_data)->ifi_vhid));    else        return Qnil;}

Returns the vhid address ofifaddr. nil is returned if there is no vhid.