ifaddr
struct ifaddr;
void arp_ifinit(struct ifnet *, struct ifaddr *);
void arp_ifinit2(struct ifnet *, struct ifaddr *, u_char *);
struct sockaddr_in ifaddr;
ifaddr = *((struct sockaddr_in *)&lifr.lifr_addr);
ifaddr.sin_addr = saddr->sin_addr;
if (getnetmaskbyaddr(ifaddr.sin_addr, &saddr->sin_addr) == 0) {
struct sockaddr_in ifaddr;
ifaddr.sin_family = AF_INET;
ifaddr.sin_addr = li->li_address;
pr_name(ifaddr.sin_addr));
(char *)&ifaddr.sin_addr,
sizeof (ifaddr.sin_addr)) < 0) {
pr_name(ifaddr.sin_addr));
pr_name(ifaddr.sin_addr));
struct ifaddr *ifa;
ifa = (struct ifaddr *)malloc(sizeof(*ifa));
struct ifaddr *ifa;
struct sockaddr_storage ifaddr;
(void) memcpy(&ifaddr, ifa->ifa_addr, sizeof (ifaddr));
(probelif->li_addr.family == ifaddr.ss_family)) {
(void) memcpy(&probelif->li_addr, &ifaddr,
(void) memcpy(&probelif->li_addr, &ifaddr,
ipaddr_t ifaddr;
ifaddr = INADDR_ANY;
ifaddr = INADDR_ANY;
ifaddr = (ipaddr_t)v4_mreqp->imr_interface.s_addr;
error = optfn(connp, checkonly, &v6group, ifaddr, ifindex,
ipaddr_t ifaddr;
ifaddr = INADDR_ANY;
ifaddr = (ipaddr_t)imreqp->imr_interface.s_addr;
error = optfn(connp, checkonly, &v6group, ifaddr, ifindex,
ipaddr_t ifaddr;
INADDR_ANY, ALL_ZONES, ipst, &ifaddr, NULL,
ifaddr = INADDR_ANY;
bcopy(&ifaddr, (char *)opt + off, IP_ADDR_LEN);
INADDR_ANY, ALL_ZONES, ipst, &ifaddr, NULL,
ifaddr = INADDR_ANY;
bcopy(&ifaddr, (char *)opt + off, IP_ADDR_LEN);
dst, INADDR_ANY, ALL_ZONES, ipst, &ifaddr,
ifaddr = INADDR_ANY;
bcopy(&ifaddr, (char *)opt + off, IP_ADDR_LEN);
ipaddr_t ifaddr;
INADDR_ANY, ALL_ZONES, ipst, &ifaddr, NULL,
ifaddr = INADDR_ANY;
bcopy(&ifaddr, (char *)opt + off, IP_ADDR_LEN);
&ifaddr, NULL, NULL) != 0) {
ifaddr = INADDR_ANY;
bcopy(&ifaddr, (char *)opt + off, IP_ADDR_LEN);
sin6->sin6_addr = *ifaddr;
const in6_addr_t *author, const in6_addr_t *ifaddr, const ill_t *ill,
ill_mcast_lookup(const in6_addr_t *group, ipaddr_t ifaddr, uint_t ifindex,
} else if (ifaddr != INADDR_ANY) {
ipif = ipif_lookup_addr(ifaddr, NULL, zoneid, ipst);
const in6_addr_t *v6src, ipaddr_t ifaddr, uint_t ifindex, ill_t **illpp)
ill = ill_mcast_lookup(v6group, ifaddr, ifindex, IPCL_ZONEID(connp),
ipaddr_t ifaddr;
ifaddr = imsf->imsf_interface.s_addr;
ifaddr = INADDR_ANY;
ilg = ilg_lookup(connp, group, ifaddr, ifindex);
ipaddr_t ifaddr;
ifaddr = imsf->imsf_interface.s_addr;
ifaddr = INADDR_ANY;
ilg = ilg_lookup(connp, group, ifaddr, ifindex);
ilg->ilg_ifaddr = ifaddr;
ilg = ilg_lookup(connp, group, ifaddr, ifindex);
ilm->ilm_ifaddr = ifaddr; /* For netstat */
const in6_addr_t *v6group, ipaddr_t ifaddr, uint_t ifindex,
err = ip_opt_check(connp, v6group, v6src, ifaddr, ifindex, &ill);
err = ilg_add(connp, v6group, ifaddr, ifindex, ill, fmode, v6src);
ipaddr_t ifaddr, uint_t ifindex, mcast_record_t fmode,
ilg = ilg_lookup(connp, v6group, ifaddr, ifindex);
err = ip_opt_check(connp, v6group, v6src, ifaddr, ifindex,
const in6_addr_t *v6group, ipaddr_t ifaddr, uint_t ifindex,
err = ip_opt_check(connp, v6group, v6src, ifaddr, ifindex,
return (ip_opt_delete_group_excl(connp, v6group, ifaddr, ifindex,
ilg_add(conn_t *connp, const in6_addr_t *v6group, ipaddr_t ifaddr,
ilg = ilg_lookup(connp, v6group, ifaddr, ifindex);
ilg->ilg_ifaddr = ifaddr;
ilg = ilg_lookup(connp, v6group, ifaddr, ifindex);
ilm->ilm_ifaddr = ifaddr; /* For netstat */
ilg_lookup(conn_t *connp, const in6_addr_t *v6group, ipaddr_t ifaddr,
if (ilg->ilg_ifaddr == ifaddr &&
ipaddr_t ifaddr;
ifaddr = ilg->ilg_ifaddr;
ilg = ilg_lookup(connp, &v6group, ifaddr, ifindex);
ilm->ilm_ifaddr = ifaddr; /* For netstat */
static ilg_t *ilg_lookup(conn_t *, const in6_addr_t *, ipaddr_t ifaddr,
ipaddr_t ifaddr, uint_t ifindex, ill_t *ill, mcast_record_t fmode,
const in6_addr_t *v6group, ipaddr_t ifaddr, uint_t ifindex,
ipaddr_t ifaddr;
ifaddr = 0;
ifaddr = ipif->ipif_lcl_addr;
brdaddr, 0, ifaddr, ill, new_mp, gc);
ipaddr_t ifaddr, const ill_t *ill, mblk_t *mp,
sin->sin_addr.s_addr = ifaddr;
ipaddr_t author, ipaddr_t ifaddr, const ill_t *ill, mblk_t *mp,
struct ifaddr *if_addrlist;
ipnetif_addr_t *ifaddr;
for (ifaddr = list_head(list);
ifaddr != NULL && addrtype == IPNETADDR_UNKNOWN;
ifaddr = list_next(list, ifaddr)) {
ipnet->ipnet_zoneid != ifaddr->ifa_zone)
if (ifaddr->ifa_ip4addr != INADDR_ANY &&
*(addr->iap_addr4) == ifaddr->ifa_ip4addr)
else if (ifaddr->ifa_brdaddr != INADDR_ANY &&
*(addr->iap_addr4) == ifaddr->ifa_brdaddr)
&ifaddr->ifa_ip6addr))
ipnetif_addr_t *ifaddr;
if ((ifaddr = kmem_alloc(sizeof (*ifaddr), KM_NOSLEEP)) == NULL)
ifaddr->ifa_zone = zoneid;
ifaddr->ifa_id = lif;
ifaddr->ifa_shared = NULL;
ifaddr->ifa_ip4addr =
ifaddr->ifa_brdaddr = bcast.sin_addr.s_addr;
ifaddr->ifa_ip6addr = ((struct sockaddr_in6 *)&addr)->sin6_addr;
ifaddr->ifa_shared = ifp2;
&ipnetif->if_ip4addr_list : &ipnetif->if_ip6addr_list, ifaddr);
ipnet_delete_ifaddr(ipnetif_addr_t *ifaddr, ipnetif_t *ipnetif, boolean_t isv6)
if (ifaddr->ifa_shared != NULL)
ipnetif_clone_release(ifaddr->ifa_shared);
&ipnetif->if_ip6addr_list : &ipnetif->if_ip4addr_list, ifaddr);
kmem_free(ifaddr, sizeof (*ifaddr));
ipnetif_addr_t *ifaddr;
if ((ifaddr = ipnet_match_lif(ipnetif, lifindex, isv6)) != NULL) {
ipnet_delete_ifaddr(ifaddr, ipnetif, isv6);
ipnetif_addr_t *ifaddr;
if ((ifaddr = ipnet_match_lif(ipnetif, lifindex, isv6)) != NULL)
ipnet_delete_ifaddr(ifaddr, ipnetif, isv6);
ipnetif_addr_t *ifaddr;
for (ifaddr = list_head(list); ifaddr != NULL;
ifaddr = list_next(list, ifaddr)) {
if (lid == ifaddr->ifa_id)
return (ifaddr);
struct ifaddr *ifa_next; /* next address for interface */
struct ifaddr *if_addrlist; /* linked list of addresses per if */
struct ifaddr ia_ifa; /* protocol-independent info */