Spec-Zone.ru › Ruby 4.0
  1. Socket::
  2. Ifaddr

class Socket::Ifaddr

Родительский класс:
Object

Socket::Ifaddr представляет результат вызова функции getifaddrs().

Открытые методы экземпляра

addr → addrinfo Показать исходный код
static VALUE
ifaddr_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;
}

Возвращает адрес ifaddr. Если адрес недоступен в ifaddr, возвращает nil.

broadaddr → addrinfo Показать исходный код
static VALUE
ifaddr_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;
}

Возвращает широковещательный адрес ifaddr. Если среди флагов нет IFF_BROADCAST, возвращает nil.

dstaddr → addrinfo Показать исходный код
static VALUE
ifaddr_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;
}

Возвращает адрес назначения ifaddr. Если среди флагов нет IFF_POINTOPOINT, возвращает nil.

flags → integer Показать исходный код
static VALUE
ifaddr_flags(VALUE self)
{
    struct ifaddrs *ifa = get_ifaddrs(self);
    return IFAFLAGS2NUM(ifa->ifa_flags);
}

Возвращает флаги ifaddr.

Значение представляет собой побитовое ИЛИ констант Socket::IFF_*, таких как Socket::IFF_LOOPBACK.

ifindex → integer Показать исходный код
static VALUE
ifaddr_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);
}

Возвращает индекс интерфейса ifaddr.

inspect → string Показать исходный код
static VALUE
ifaddr_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;
}

Возвращает строку с содержимым ifaddr.

name → string Показать исходный код
static VALUE
ifaddr_name(VALUE self)
{
    struct ifaddrs *ifa = get_ifaddrs(self);
    return rb_str_new_cstr(ifa->ifa_name);
}

Возвращает имя интерфейса ifaddr.

netmask → addrinfo Показать исходный код
static VALUE
ifaddr_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;
}

Возвращает адрес маски подсети ifaddr. Если маска подсети недоступна в ifaddr, возвращает nil.

vhid → Integer Показать исходный код
static VALUE
ifaddr_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;
}

Возвращает адрес vhid для ifaddr. Если vhid отсутствует, возвращает nil.

Ruby Core © 1993–2025 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API