extern structstd.c.solaris.lifreq[src]

IP interface request. See if_tcp(7p) for more info.

Fields

ifrn: extern union {
    /// Interface name, e.g. "lo0", "en0".
    name: [IFNAMESIZE]u8,
}
ru1: extern union {
    /// For subnet/token etc.
    addrlen: i32,
    /// Driver's PPA (physical point of attachment).
    ppa: u32,
}
type: u32

One of the IFT types, e.g. IFT_ETHER.

ifru: extern union {
    /// Address.
    addr: sockaddr.storage,
    /// Other end of a peer-to-peer link.
    dstaddr: sockaddr.storage,
    /// Broadcast address.
    broadaddr: sockaddr.storage,
    /// Address token.
    token: sockaddr.storage,
    /// Subnet prefix.
    subnet: sockaddr.storage,
    /// Interface index.
    ivalue: i32,
    /// Flags for SIOC?LIFFLAGS.
    flags: u64,
    /// Hop count metric
    metric: i32,
    /// Maximum transmission unit
    mtu: u32,
    // Technically [2]i32
    muxid: packed struct { ip: i32, arp: i32 },
    /// Neighbor reachability determination entries
    nd_req: lif_nd_req,
    /// Link info
    ifinfo_req: lif_ifinfo_req,
    /// Name of the multipath interface group
    groupname: [IFNAMESIZE]u8,
    binding: [IFNAMESIZE]u8,
    /// Zone id associated with this interface.
    zoneid: zoneid_t,
    /// Duplicate address detection state. Either in progress or completed.
    dadstate: u32,
}

Source Code

Source code
pub const lifreq = extern struct {
    // Not actually in a union, but the stdlib expects one for ifreq
    ifrn: extern union {
        /// Interface name, e.g. "lo0", "en0".
        name: [IFNAMESIZE]u8,
    },
    ru1: extern union {
        /// For subnet/token etc.
        addrlen: i32,
        /// Driver's PPA (physical point of attachment).
        ppa: u32,
    },
    /// One of the IFT types, e.g. IFT_ETHER.
    type: u32,
    ifru: extern union {
        /// Address.
        addr: sockaddr.storage,
        /// Other end of a peer-to-peer link.
        dstaddr: sockaddr.storage,
        /// Broadcast address.
        broadaddr: sockaddr.storage,
        /// Address token.
        token: sockaddr.storage,
        /// Subnet prefix.
        subnet: sockaddr.storage,
        /// Interface index.
        ivalue: i32,
        /// Flags for SIOC?LIFFLAGS.
        flags: u64,
        /// Hop count metric
        metric: i32,
        /// Maximum transmission unit
        mtu: u32,
        // Technically [2]i32
        muxid: packed struct { ip: i32, arp: i32 },
        /// Neighbor reachability determination entries
        nd_req: lif_nd_req,
        /// Link info
        ifinfo_req: lif_ifinfo_req,
        /// Name of the multipath interface group
        groupname: [IFNAMESIZE]u8,
        binding: [IFNAMESIZE]u8,
        /// Zone id associated with this interface.
        zoneid: zoneid_t,
        /// Duplicate address detection state. Either in progress or completed.
        dadstate: u32,
    },
}