Class: Socket::Ifaddr (Ruby 2.2.3)
Description: Class : Socket::Ifaddr - Ruby 2.2.3

- Home
- Core 2.2.3
- Std-lib 2.2.3
- Downloads

Support for the Ruby 2.2 series has ended. See here for reference.

### Home Classes Methods

### In Files

- socket/ancdata.c

### Parent

Data

### Methods

- #addr
- #broadaddr
- #dstaddr
- #flags
- #ifindex
- #inspect
- #name
- #netmask

### Class/Module Index

Quicksearch

- Addrinfo
- BasicSocket
- IPSocket
- Object
- SOCKSSocket
- Socket
- Socket::AncillaryData
- Socket::Ifaddr
- Socket::Option
- Socket::UDPSource
- SocketError
- TCPServer
- TCPSocket
- UDPSocket
- UNIXServer
- UNIXSocket

No matching classes.

# Socket::Ifaddr

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

### Public Instance Methods

addr => addrinfo click to toggle source

Returns the address of ifaddr. nil is returned if address is not available in ifaddr.

                   static VALUE
    ifaddr_addr(VALUE self)
    {
        rb_ifaddr_t *rifaddr = get_ifaddr(self);
        struct ifaddrs *ifa = rifaddr->ifaddr;
        if (ifa->ifa_addr)
            return rsock_sockaddr_obj(ifa->ifa_addr, rsock_sockaddr_len(ifa->ifa_addr));
        return Qnil;
    }

broadaddr => addrinfo click to toggle source

Returns the broadcast address of ifaddr. nil is returned if the flags doesn't have IFF_BROADCAST.

                   static VALUE
    ifaddr_broadaddr(VALUE self)
    {
        rb_ifaddr_t *rifaddr = get_ifaddr(self);
        struct ifaddrs *ifa = rifaddr->ifaddr;
        if ((ifa->ifa_flags & IFF_BROADCAST) && ifa->ifa_broadaddr)
            return rsock_sockaddr_obj(ifa->ifa_broadaddr, rsock_sockaddr_len(ifa->ifa_broadaddr));
        return Qnil;
    }

dstaddr => addrinfo click to toggle source

Returns the destination address of ifaddr. nil is returned if the flags doesn't have IFF_POINTOPOINT.

                   static VALUE
    ifaddr_dstaddr(VALUE self)
    {
        rb_ifaddr_t *rifaddr = get_ifaddr(self);
        struct ifaddrs *ifa = rifaddr->ifaddr;
        if ((ifa->ifa_flags & IFF_POINTOPOINT) && ifa->ifa_dstaddr)
            return rsock_sockaddr_obj(ifa->ifa_dstaddr, rsock_sockaddr_len(ifa->ifa_dstaddr));
        return Qnil;
    }

flags => integer click to toggle source

Returns the flags of ifaddr.

                   static VALUE
    ifaddr_flags(VALUE self)
    {
        rb_ifaddr_t *rifaddr = get_ifaddr(self);
        struct ifaddrs *ifa = rifaddr->ifaddr;
        return IFAFLAGS2NUM(ifa->ifa_flags);
    }

ifindex => integer click to toggle source

Returns the interface index of ifaddr.

                   static VALUE
    ifaddr_ifindex(VALUE self)
    {
        rb_ifaddr_t *rifaddr = get_ifaddr(self);
        struct ifaddrs *ifa = rifaddr->ifaddr;
        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);
    }

inspect => string click to toggle source

Returns a string to show contents of ifaddr.

                   static VALUE
    ifaddr_inspect(VALUE self)
    {
        rb_ifaddr_t *rifaddr = get_ifaddr(self);
        struct ifaddrs *ifa;
        VALUE result;

        ifa = rifaddr->ifaddr;

        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;
    }

name => string click to toggle source

Returns the interface name of ifaddr.

                   static VALUE
    ifaddr_name(VALUE self)
    {
        rb_ifaddr_t *rifaddr = get_ifaddr(self);
        struct ifaddrs *ifa = rifaddr->ifaddr;
        return rb_str_new_cstr(ifa->ifa_name);
    }

netmask => addrinfo click to toggle source

Returns the netmask address of ifaddr. nil is returned if netmask is not available in ifaddr.

                   static VALUE
    ifaddr_netmask(VALUE self)
    {
        rb_ifaddr_t *rifaddr = get_ifaddr(self);
        struct ifaddrs *ifa = rifaddr->ifaddr;
        if (ifa->ifa_netmask)
            return rsock_sockaddr_obj(ifa->ifa_netmask, rsock_sockaddr_len(ifa->ifa_netmask));
        return Qnil;
    }