usr/src/uts/common/inet/ipnet.h
83
struct ipnetif *ifa_shared;
usr/src/uts/common/inet/ipnet/ipnet.c
1013
ipnetif_t *ipnetif = ipnet->ipnet_if;
usr/src/uts/common/inet/ipnet/ipnet.c
1034
mutex_enter(&ipnetif->if_addr_lock);
usr/src/uts/common/inet/ipnet/ipnet.c
1036
&ipnetif->if_ip4addr_list : &ipnetif->if_ip6addr_list;
usr/src/uts/common/inet/ipnet/ipnet.c
1063
mutex_exit(&ipnetif->if_addr_lock);
usr/src/uts/common/inet/ipnet/ipnet.c
1266
ipnetif_t *ipnetif;
usr/src/uts/common/inet/ipnet/ipnet.c
1268
if ((ipnetif = kmem_zalloc(sizeof (*ipnetif), KM_NOSLEEP)) == NULL)
usr/src/uts/common/inet/ipnet/ipnet.c
1271
mutex_init(&ipnetif->if_addr_lock, NULL, MUTEX_DEFAULT, 0);
usr/src/uts/common/inet/ipnet/ipnet.c
1272
list_create(&ipnetif->if_ip4addr_list, sizeof (ipnetif_addr_t),
usr/src/uts/common/inet/ipnet/ipnet.c
1274
list_create(&ipnetif->if_ip6addr_list, sizeof (ipnetif_addr_t),
usr/src/uts/common/inet/ipnet/ipnet.c
1276
mutex_init(&ipnetif->if_reflock, NULL, MUTEX_DEFAULT, 0);
usr/src/uts/common/inet/ipnet/ipnet.c
1278
ipnetif->if_stackp = ips;
usr/src/uts/common/inet/ipnet/ipnet.c
1280
return (ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
1292
ipnetif_t *ipnetif;
usr/src/uts/common/inet/ipnet/ipnet.c
1303
if ((ipnetif = ipnet_alloc_if(ips)) == NULL) {
usr/src/uts/common/inet/ipnet/ipnet.c
1308
(void) strlcpy(ipnetif->if_name, name, LIFNAMSIZ);
usr/src/uts/common/inet/ipnet/ipnet.c
1309
ipnetif->if_index = (uint_t)index;
usr/src/uts/common/inet/ipnet/ipnet.c
1310
ipnetif->if_zoneid = netstack_get_zoneid(ips->ips_netstack);
usr/src/uts/common/inet/ipnet/ipnet.c
1311
ipnetif->if_dev = makedevice(ipnet_major, ifminor);
usr/src/uts/common/inet/ipnet/ipnet.c
1313
ipnetif->if_refcnt = 1;
usr/src/uts/common/inet/ipnet/ipnet.c
1315
ipnetif->if_flags = IPNETIF_LOOPBACK;
usr/src/uts/common/inet/ipnet/ipnet.c
1319
avl_insert(&ips->ips_avl_by_index, ipnetif, where);
usr/src/uts/common/inet/ipnet/ipnet.c
1321
avl_insert(&ips->ips_avl_by_name, ipnetif, where);
usr/src/uts/common/inet/ipnet/ipnet.c
1324
return (ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
1328
ipnetif_remove(ipnetif_t *ipnetif, ipnet_stack_t *ips)
usr/src/uts/common/inet/ipnet/ipnet.c
1336
if (ipnet->ipnet_if == ipnetif)
usr/src/uts/common/inet/ipnet/ipnet.c
1341
avl_remove(&ips->ips_avl_by_index, ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
1342
avl_remove(&ips->ips_avl_by_name, ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
1347
ipnetif_refrele(ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
1364
ipnetif_free(ipnetif_t *ipnetif)
usr/src/uts/common/inet/ipnet/ipnet.c
1366
ASSERT(ipnetif->if_refcnt == 0);
usr/src/uts/common/inet/ipnet/ipnet.c
1367
ASSERT(ipnetif->if_sharecnt == 0);
usr/src/uts/common/inet/ipnet/ipnet.c
1370
ipnet_purge_addrlist(&ipnetif->if_ip4addr_list);
usr/src/uts/common/inet/ipnet/ipnet.c
1371
list_destroy(&ipnetif->if_ip4addr_list);
usr/src/uts/common/inet/ipnet/ipnet.c
1372
ipnet_purge_addrlist(&ipnetif->if_ip6addr_list);
usr/src/uts/common/inet/ipnet/ipnet.c
1373
list_destroy(&ipnetif->if_ip6addr_list);
usr/src/uts/common/inet/ipnet/ipnet.c
1374
mutex_destroy(&ipnetif->if_addr_lock);
usr/src/uts/common/inet/ipnet/ipnet.c
1375
mutex_destroy(&ipnetif->if_reflock);
usr/src/uts/common/inet/ipnet/ipnet.c
1376
if (ipnetif->if_dev != 0)
usr/src/uts/common/inet/ipnet/ipnet.c
1377
id_free(ipnet_minor_space, getminor(ipnetif->if_dev));
usr/src/uts/common/inet/ipnet/ipnet.c
1378
kmem_free(ipnetif, sizeof (*ipnetif));
usr/src/uts/common/inet/ipnet/ipnet.c
1388
ipnet_add_ifaddr(uint64_t lif, ipnetif_t *ipnetif, net_handle_t nd)
usr/src/uts/common/inet/ipnet/ipnet.c
1395
uint64_t phyif = ipnetif->if_index;
usr/src/uts/common/inet/ipnet/ipnet.c
1433
mutex_enter(&ipnetif->if_addr_lock);
usr/src/uts/common/inet/ipnet/ipnet.c
1434
if (zoneid != ipnetif->if_zoneid) {
usr/src/uts/common/inet/ipnet/ipnet.c
1437
ifp2 = ipnetif_clone_create(ipnetif, zoneid);
usr/src/uts/common/inet/ipnet/ipnet.c
1441
&ipnetif->if_ip4addr_list : &ipnetif->if_ip6addr_list, ifaddr);
usr/src/uts/common/inet/ipnet/ipnet.c
1442
mutex_exit(&ipnetif->if_addr_lock);
usr/src/uts/common/inet/ipnet/ipnet.c
1446
ipnet_delete_ifaddr(ipnetif_addr_t *ifaddr, ipnetif_t *ipnetif, boolean_t isv6)
usr/src/uts/common/inet/ipnet/ipnet.c
1448
mutex_enter(&ipnetif->if_addr_lock);
usr/src/uts/common/inet/ipnet/ipnet.c
1453
&ipnetif->if_ip6addr_list : &ipnetif->if_ip4addr_list, ifaddr);
usr/src/uts/common/inet/ipnet/ipnet.c
1454
mutex_exit(&ipnetif->if_addr_lock);
usr/src/uts/common/inet/ipnet/ipnet.c
1461
ipnetif_t *ipnetif;
usr/src/uts/common/inet/ipnet/ipnet.c
1473
if ((ipnetif = ipnetif_getby_index(ifindex, ips)) == NULL) {
usr/src/uts/common/inet/ipnet/ipnet.c
1474
ipnetif = ipnetif_create(ifname, ifindex, ips, ifflags);
usr/src/uts/common/inet/ipnet/ipnet.c
1477
if (ipnetif != NULL) {
usr/src/uts/common/inet/ipnet/ipnet.c
1478
ipnetif->if_flags |=
usr/src/uts/common/inet/ipnet/ipnet.c
1482
if (ipnetif->if_multicnt != 0) {
usr/src/uts/common/inet/ipnet/ipnet.c
1485
ipnetif->if_flags |=
usr/src/uts/common/inet/ipnet/ipnet.c
1491
ipnetif_refrele(ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
1497
ipnetif_t *ipnetif;
usr/src/uts/common/inet/ipnet/ipnet.c
1499
if ((ipnetif = ipnetif_getby_index(ifindex, ips)) == NULL)
usr/src/uts/common/inet/ipnet/ipnet.c
1502
mutex_enter(&ipnetif->if_addr_lock);
usr/src/uts/common/inet/ipnet/ipnet.c
1504
&ipnetif->if_ip6addr_list : &ipnetif->if_ip4addr_list);
usr/src/uts/common/inet/ipnet/ipnet.c
1505
mutex_exit(&ipnetif->if_addr_lock);
usr/src/uts/common/inet/ipnet/ipnet.c
1512
ipnetif->if_flags &= isv6 ? ~IPNETIF_IPV6PLUMBED : ~IPNETIF_IPV4PLUMBED;
usr/src/uts/common/inet/ipnet/ipnet.c
1513
if (!(ipnetif->if_flags & (IPNETIF_IPV4PLUMBED | IPNETIF_IPV6PLUMBED)))
usr/src/uts/common/inet/ipnet/ipnet.c
1514
ipnetif_remove(ipnetif, ips);
usr/src/uts/common/inet/ipnet/ipnet.c
1515
ipnetif_refrele(ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
1522
ipnetif_t *ipnetif;
usr/src/uts/common/inet/ipnet/ipnet.c
1525
if ((ipnetif = ipnetif_getby_index(ifindex, ips)) == NULL)
usr/src/uts/common/inet/ipnet/ipnet.c
1527
if ((ifaddr = ipnet_match_lif(ipnetif, lifindex, isv6)) != NULL) {
usr/src/uts/common/inet/ipnet/ipnet.c
1532
ipnet_delete_ifaddr(ifaddr, ipnetif, isv6);
usr/src/uts/common/inet/ipnet/ipnet.c
1535
ipnet_add_ifaddr(lifindex, ipnetif, nd);
usr/src/uts/common/inet/ipnet/ipnet.c
1536
ipnetif_refrele(ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
1543
ipnetif_t *ipnetif;
usr/src/uts/common/inet/ipnet/ipnet.c
1546
if ((ipnetif = ipnetif_getby_index(ifindex, ips)) == NULL)
usr/src/uts/common/inet/ipnet/ipnet.c
1548
if ((ifaddr = ipnet_match_lif(ipnetif, lifindex, isv6)) != NULL)
usr/src/uts/common/inet/ipnet/ipnet.c
1549
ipnet_delete_ifaddr(ifaddr, ipnetif, isv6);
usr/src/uts/common/inet/ipnet/ipnet.c
1550
ipnetif_refrele(ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
1555
ipnetif_zonecheck(ipnetif, ips);
usr/src/uts/common/inet/ipnet/ipnet.c
1630
ipnetif_t *ipnetif;
usr/src/uts/common/inet/ipnet/ipnet.c
1640
if ((ipnetif = avl_find(&ips->ips_avl_by_name, name, NULL)) != NULL) {
usr/src/uts/common/inet/ipnet/ipnet.c
1641
if (ipnetif_in_zone(ipnetif, zoneid, ips))
usr/src/uts/common/inet/ipnet/ipnet.c
1642
dev = ipnetif->if_dev;
usr/src/uts/common/inet/ipnet/ipnet.c
1653
ipnetif_t *ipnetif;
usr/src/uts/common/inet/ipnet/ipnet.c
1656
if ((ipnetif = avl_find(&ips->ips_avl_by_index, &id, NULL)) != NULL)
usr/src/uts/common/inet/ipnet/ipnet.c
1657
ipnetif_refhold(ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
1659
return (ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
1665
ipnetif_t *ipnetif;
usr/src/uts/common/inet/ipnet/ipnet.c
1670
for (ipnetif = avl_first(tree); ipnetif != NULL;
usr/src/uts/common/inet/ipnet/ipnet.c
1671
ipnetif = avl_walk(tree, ipnetif, AVL_AFTER)) {
usr/src/uts/common/inet/ipnet/ipnet.c
1672
if (ipnetif->if_dev == dev) {
usr/src/uts/common/inet/ipnet/ipnet.c
1673
ipnetif_refhold(ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
1678
return (ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
1682
ipnet_match_lif(ipnetif_t *ipnetif, lif_if_t lid, boolean_t isv6)
usr/src/uts/common/inet/ipnet/ipnet.c
1687
mutex_enter(&ipnetif->if_addr_lock);
usr/src/uts/common/inet/ipnet/ipnet.c
1688
list = isv6 ? &ipnetif->if_ip6addr_list : &ipnetif->if_ip4addr_list;
usr/src/uts/common/inet/ipnet/ipnet.c
1694
mutex_exit(&ipnetif->if_addr_lock);
usr/src/uts/common/inet/ipnet/ipnet.c
1726
ipnetif_t *ipnetif, *nipnetif;
usr/src/uts/common/inet/ipnet/ipnet.c
1746
for (ipnetif = avl_first(&ips->ips_avl_by_index); ipnetif != NULL;
usr/src/uts/common/inet/ipnet/ipnet.c
1747
ipnetif = nipnetif) {
usr/src/uts/common/inet/ipnet/ipnet.c
1748
nipnetif = AVL_NEXT(&ips->ips_avl_by_index, ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
1749
ipnetif_remove(ipnetif, ips);
usr/src/uts/common/inet/ipnet/ipnet.c
1777
ipnetif_in_zone(ipnetif_t *ipnetif, zoneid_t zoneid, ipnet_stack_t *ips)
usr/src/uts/common/inet/ipnet/ipnet.c
1794
mutex_enter(&ipnetif->if_addr_lock);
usr/src/uts/common/inet/ipnet/ipnet.c
1795
ret = ipnet_addrs_in_zone(&ipnetif->if_ip4addr_list, zoneid) ||
usr/src/uts/common/inet/ipnet/ipnet.c
1796
ipnet_addrs_in_zone(&ipnetif->if_ip6addr_list, zoneid);
usr/src/uts/common/inet/ipnet/ipnet.c
1797
mutex_exit(&ipnetif->if_addr_lock);
usr/src/uts/common/inet/ipnet/ipnet.c
1809
ipnetif_zonecheck(ipnetif_t *ipnetif, ipnet_stack_t *ips)
usr/src/uts/common/inet/ipnet/ipnet.c
1817
if (ipnet->ipnet_if != ipnetif)
usr/src/uts/common/inet/ipnet/ipnet.c
1819
if (!ipnetif_in_zone(ipnetif, ipnet->ipnet_zoneid, ips))
usr/src/uts/common/inet/ipnet/ipnet.c
1828
ipnetif_t *ipnetif;
usr/src/uts/common/inet/ipnet/ipnet.c
1849
for (ipnetif = avl_first(&ips->ips_avl_by_index); ipnetif != NULL;
usr/src/uts/common/inet/ipnet/ipnet.c
1850
ipnetif = avl_walk(&ips->ips_avl_by_index, ipnetif, AVL_AFTER)) {
usr/src/uts/common/inet/ipnet/ipnet.c
1851
if (!ipnetif_in_zone(ipnetif, zoneid, ips))
usr/src/uts/common/inet/ipnet/ipnet.c
1854
(void) strlcpy(cbnode->ic_ifname, ipnetif->if_name, LIFNAMSIZ);
usr/src/uts/common/inet/ipnet/ipnet.c
1855
cbnode->ic_dev = ipnetif->if_dev;
usr/src/uts/common/inet/ipnet/ipnet.c
1903
ipnetif_refhold(ipnetif_t *ipnetif)
usr/src/uts/common/inet/ipnet/ipnet.c
1905
mutex_enter(&ipnetif->if_reflock);
usr/src/uts/common/inet/ipnet/ipnet.c
1906
ipnetif->if_refcnt++;
usr/src/uts/common/inet/ipnet/ipnet.c
1907
mutex_exit(&ipnetif->if_reflock);
usr/src/uts/common/inet/ipnet/ipnet.c
1911
ipnetif_refrele(ipnetif_t *ipnetif)
usr/src/uts/common/inet/ipnet/ipnet.c
1913
mutex_enter(&ipnetif->if_reflock);
usr/src/uts/common/inet/ipnet/ipnet.c
1914
ASSERT(ipnetif->if_refcnt > 0);
usr/src/uts/common/inet/ipnet/ipnet.c
1915
if (--ipnetif->if_refcnt == 0)
usr/src/uts/common/inet/ipnet/ipnet.c
1916
ipnetif_free(ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
1918
mutex_exit(&ipnetif->if_reflock);
usr/src/uts/common/inet/ipnet/ipnet.c
2053
ipnetif_t *ipnetif;
usr/src/uts/common/inet/ipnet/ipnet.c
2066
ipnetif = avl_find(&ips->ips_avl_by_shared, (void *)key, NULL);
usr/src/uts/common/inet/ipnet/ipnet.c
2068
ipnetif = avl_find(&ips->ips_avl_by_name, (void *)name, NULL);
usr/src/uts/common/inet/ipnet/ipnet.c
2070
if (ipnetif != NULL)
usr/src/uts/common/inet/ipnet/ipnet.c
2071
ipnetif_refhold(ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
2074
*ptr = ipnetif;
usr/src/uts/common/inet/ipnet/ipnet.c
2077
if (ipnetif == NULL)
usr/src/uts/common/inet/ipnet/ipnet.c
2375
ipnetif_clone_release(ipnetif_t *ipnetif)
usr/src/uts/common/inet/ipnet/ipnet.c
2379
ipnet_stack_t *ips = ipnetif->if_stackp;
usr/src/uts/common/inet/ipnet/ipnet.c
2381
mutex_enter(&ipnetif->if_reflock);
usr/src/uts/common/inet/ipnet/ipnet.c
2382
ASSERT(ipnetif->if_refcnt > 0);
usr/src/uts/common/inet/ipnet/ipnet.c
2383
if (--ipnetif->if_refcnt == 0)
usr/src/uts/common/inet/ipnet/ipnet.c
2385
ASSERT(ipnetif->if_sharecnt > 0);
usr/src/uts/common/inet/ipnet/ipnet.c
2386
if (--ipnetif->if_sharecnt == 0)
usr/src/uts/common/inet/ipnet/ipnet.c
2388
mutex_exit(&ipnetif->if_reflock);
usr/src/uts/common/inet/ipnet/ipnet.c
2391
avl_remove(&ips->ips_avl_by_shared, ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
2395
ASSERT(ipnetif->if_sharecnt == 0);
usr/src/uts/common/inet/ipnet/ipnet.c
2396
ipnetif_free(ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
396
ipnetif_t *ipnetif;
usr/src/uts/common/inet/ipnet/ipnet.c
426
if ((ipnetif = ipnetif_getby_index(phyif, ips)) == NULL) {
usr/src/uts/common/inet/ipnet/ipnet.c
427
ipnetif = ipnetif_create(name, phyif, ips, ifflags);
usr/src/uts/common/inet/ipnet/ipnet.c
428
if (ipnetif == NULL) {
usr/src/uts/common/inet/ipnet/ipnet.c
434
ipnetif->if_flags |=
usr/src/uts/common/inet/ipnet/ipnet.c
447
if (ipnet_match_lif(ipnetif, lif, isv6) != NULL)
usr/src/uts/common/inet/ipnet/ipnet.c
449
ipnet_add_ifaddr(lif, ipnetif, nd);
usr/src/uts/common/inet/ipnet/ipnet.c
452
ipnetif_refrele(ipnetif);
usr/src/uts/common/inet/ipnet/ipnet.c
920
ipnet_join_allmulti(ipnetif_t *ipnetif, ipnet_stack_t *ips)
usr/src/uts/common/inet/ipnet/ipnet.c
924
uint64_t index = ipnetif->if_index;
usr/src/uts/common/inet/ipnet/ipnet.c
927
if (ipnetif->if_multicnt == 0) {
usr/src/uts/common/inet/ipnet/ipnet.c
928
ASSERT((ipnetif->if_flags &
usr/src/uts/common/inet/ipnet/ipnet.c
930
if (ipnetif->if_flags & IPNETIF_IPV4PLUMBED) {
usr/src/uts/common/inet/ipnet/ipnet.c
934
ipnetif->if_flags |= IPNETIF_IPV4ALLMULTI;
usr/src/uts/common/inet/ipnet/ipnet.c
936
if (ipnetif->if_flags & IPNETIF_IPV6PLUMBED) {
usr/src/uts/common/inet/ipnet/ipnet.c
939
(ipnetif->if_flags & IPNETIF_IPV4ALLMULTI)) {
usr/src/uts/common/inet/ipnet/ipnet.c
941
ipnetif->if_flags &= ~IPNETIF_IPV4ALLMULTI;
usr/src/uts/common/inet/ipnet/ipnet.c
944
ipnetif->if_flags |= IPNETIF_IPV6ALLMULTI;
usr/src/uts/common/inet/ipnet/ipnet.c
947
ipnetif->if_multicnt++;
usr/src/uts/common/inet/ipnet/ipnet.c
955
ipnet_leave_allmulti(ipnetif_t *ipnetif, ipnet_stack_t *ips)
usr/src/uts/common/inet/ipnet/ipnet.c
959
uint64_t index = ipnetif->if_index;
usr/src/uts/common/inet/ipnet/ipnet.c
962
ASSERT(ipnetif->if_multicnt != 0);
usr/src/uts/common/inet/ipnet/ipnet.c
963
if (--ipnetif->if_multicnt == 0) {
usr/src/uts/common/inet/ipnet/ipnet.c
964
if (ipnetif->if_flags & IPNETIF_IPV4ALLMULTI) {
usr/src/uts/common/inet/ipnet/ipnet.c
967
ipnetif->if_flags &= ~IPNETIF_IPV4ALLMULTI;
usr/src/uts/common/inet/ipnet/ipnet.c
969
if (ipnetif->if_flags & IPNETIF_IPV6ALLMULTI) {
usr/src/uts/common/inet/ipnet/ipnet.c
972
ipnetif->if_flags &= ~IPNETIF_IPV6ALLMULTI;
usr/src/uts/common/inet/ipnet/ipnet_bpf.c
210
ipnetif_t *ipnetif;
usr/src/uts/common/inet/ipnet/ipnet_bpf.c
212
ipnetif = (ipnetif_t *)handle;
usr/src/uts/common/inet/ipnet/ipnet_bpf.c
213
*zip = ipnetif->if_zoneid;