Lines Matching +full:3 +full:- +full:wire
16 * 3. All advertising materials mentioning features or use of this software
70 /* Get first element -- for iteration */
72 ((htbl)->htbl_ptrs[(htbl)->htbl_hash((arg), 0) % (htbl)->htbl_size])
76 hash_link((htbl), (htbl)->htbl_hash((strp), (htbl)->htbl_key_off), \
178 hlp->hl_prev = head; in link_in()
179 if ((hlp->hl_next = *head) != NULL) { in link_in()
181 ((struct hlinkage *)((char *)*head + loffs))->hl_prev = in link_in()
182 &hlp->hl_next; in link_in()
195 if ((*hlp->hl_prev = hlp->hl_next) != NULL) { in link_out()
197 ((struct hlinkage *)((char *)hlp->hl_next + loffs))->hl_prev = in link_out()
198 hlp->hl_prev; in link_out()
208 if (htbl->htbl_grow && htbl->htbl_ifcount >= htbl->htbl_size * 5) in hash_link()
211 hep = &htbl->htbl_ptrs[hval % htbl->htbl_size]; in hash_link()
212 link_in(hep, strp, htbl->htbl_link_off); in hash_link()
213 htbl->htbl_ifcount++; in hash_link()
220 link_out(strp, htbl->htbl_link_off); in hash_unlink()
221 htbl->htbl_ifcount--; in hash_unlink()
272 if ((new_size = hash_table_sizes[htbl->htbl_size_index + 1]) == 0) in htbl_grow()
289 saved_old_ptrs = old_ptrs = htbl->htbl_ptrs; in htbl_grow()
290 old_size = htbl->htbl_size; in htbl_grow()
291 htbl->htbl_ptrs = new_ptrs; in htbl_grow()
292 htbl->htbl_size = new_size; in htbl_grow()
293 htbl->htbl_size_index++; in htbl_grow()
294 htbl->htbl_ifcount = 0; in htbl_grow()
297 * Go through the list of structures, and re-link each into in htbl_grow()
300 htbl->htbl_grow = _B_FALSE; in htbl_grow()
301 while (old_size-- > 0) { in htbl_grow()
306 htbl->htbl_grow = _B_TRUE; in htbl_grow()
321 if (ifp->int_if_flags & IFF_BROADCAST) in if_link()
326 phyi != NULL; phyi = phyi->phyi_link.hl_next) { in if_link()
327 if (phyi->phyi_index == ifindex) in if_link()
335 phyi->phyi_index = ifindex; in if_link()
339 size = strcspn(ifp->int_name, ":"); in if_link()
340 (void) strncpy(phyi->phyi_name, ifp->int_name, in if_link()
342 phyi->phyi_name[size] = '\0'; in if_link()
345 link_in((void **)&phyi->phyi_interface, ifp, in if_link()
347 ifp->int_phys = phyi; in if_link()
363 ifp = ifp->int_ahash.hl_next) { in ifwithaddr()
364 if (ifp->int_addr != addr) in ifwithaddr()
366 if (ifp->int_state & remote_state) in ifwithaddr()
368 if (!(ifp->int_state & (IS_BROKE | IS_PASSIVE))) in ifwithaddr()
377 ifp = ifp->int_bhash.hl_next) { in ifwithaddr()
378 if (ifp->int_brdaddr != addr) in ifwithaddr()
380 if (ifp->int_state & remote_state) in ifwithaddr()
382 if (!(ifp->int_state & (IS_BROKE | IS_PASSIVE))) in ifwithaddr()
399 ifp = ifp->int_nhash.hl_next) { in ifwithname()
400 if (strcmp(ifp->int_name, name) == 0) in ifwithname()
425 phyi = phyi->phyi_link.hl_next) { in phys_byname()
426 if (strncmp(phyi->phyi_name, name, nlen) == 0 && in phys_byname()
427 phyi->phyi_name[nlen] == '\0') in phys_byname()
440 ifp = ifp->int_ahash.hl_next) { in findremoteif()
441 if ((ifp->int_state & IS_REMOTE) && ifp->int_addr == addr) in findremoteif()
454 ifp = ifp->int_ahash.hl_next) { in findifaddr()
455 if (ifp->int_addr == addr) in findifaddr()
473 phyi = phyi->phyi_link.hl_next) { in ifwithindex()
474 if (phyi->phyi_index == index) in ifwithindex()
475 return (phyi->phyi_interface); in ifwithindex()
503 if (ifp->int_state & IS_DUP) in addr_on_ifp()
506 if (ifp->int_if_flags & IFF_POINTOPOINT) { in addr_on_ifp()
507 if (ifp->int_dstaddr == addr) { in addr_on_ifp()
512 if (ifp->int_addr == addr) { in addr_on_ifp()
516 ifp->int_name); in addr_on_ifp()
522 if (on_net(addr, ifp->int_net, ifp->int_mask) && in addr_on_ifp()
524 ifp->int_mask > p_best->int_mask)) { in addr_on_ifp()
545 for (ifp = ifnet; ifp != NULL; ifp = ifp->int_next) { in iflookup()
564 maybe->int_name); in iflookup()
584 if (ifp != NULL && ifp->int_ripv1_mask != HOST_MASK) { in ripv1_mask_net()
589 if (on_net(addr, ifp->int_net, ifp->int_std_mask)) in ripv1_mask_net()
590 mask = ifp->int_ripv1_mask; in ripv1_mask_net()
600 for (ifp = ifnet; ifp != NULL; ifp = ifp->int_next) { in ripv1_mask_net()
601 if (on_net(addr, ifp->int_std_net, ifp->int_std_mask) && in ripv1_mask_net()
602 ifp->int_ripv1_mask > mask && in ripv1_mask_net()
603 ifp->int_ripv1_mask != HOST_MASK) in ripv1_mask_net()
604 mask = ifp->int_ripv1_mask; in ripv1_mask_net()
614 for (r1p = r1nets; r1p != NULL; r1p = r1p->r1net_next) { in ripv1_mask_net()
620 if (on_net(addr, r1p->r1net_net, r1p->r1net_match) && in ripv1_mask_net()
621 r1p->r1net_mask > mask) in ripv1_mask_net()
622 mask = r1p->r1net_mask; in ripv1_mask_net()
697 for (ifp = ifnet; ifp != NULL; ifp = ifp->int_next) { in check_dup()
699 if (name != NULL && strcmp(name, ifp->int_name) == 0) in check_dup()
708 if (!allowdups && (ifp->int_state & IS_DUP)) in check_dup()
711 if (ifp->int_mask != mask) in check_dup()
714 if (!IS_IFF_UP(ifp->int_if_flags)) in check_dup()
718 * The local address can only be shared with a point-to-point in check_dup()
721 if ((ifp->int_addr == addr && in check_dup()
722 ((if_flags|ifp->int_if_flags) & IFF_POINTOPOINT) == 0) || in check_dup()
723 on_net(ifp->int_dstaddr, dstaddr_h, mask)) { in check_dup()
725 if (!(ifp->int_state & IS_ALIAS)) in check_dup()
727 if (!IS_RIP_OUT_OFF(ifp->int_state)) in check_dup()
729 if (IS_IFF_ROUTING(ifp->int_if_flags)) in check_dup()
751 if (!(ifp->int_state & IS_REMOTE)) in check_remote()
754 rt = rtfind(ifp->int_addr); in check_remote()
756 rt->rt_ifp != NULL && in check_remote()
757 on_net(ifp->int_addr, rt->rt_ifp->int_net, rt->rt_ifp->int_mask)) { in check_remote()
765 if (!(ifp->int_state & IS_BROKE)) { in check_remote()
767 naddr_ntoa(ifp->int_addr)); in check_remote()
777 struct rewire_data wire; in ifdel() local
783 ifp->int_state |= IS_BROKE; in ifdel()
789 if (ifp->int_if_flags & IFF_BROADCAST) in ifdel()
793 if ((phyi = ifp->int_phys) != NULL) { in ifdel()
795 if (phyi->phyi_interface == NULL) { in ifdel()
807 if (!(ifp->int_state & IS_DUP) && in ifdel()
808 (wire.if_new = check_dup(ifp->int_name, ifp->int_addr, in ifdel()
809 ifp->int_dstaddr, ifp->int_mask, ifp->int_if_flags, in ifdel()
811 !IS_IFF_QUIET(wire.if_new->int_if_flags)) { in ifdel()
814 wire.if_new->int_name, ifp->int_name); in ifdel()
817 wire.if_old = ifp; in ifdel()
818 wire.metric_delta = wire.if_new->int_metric - ifp->int_metric; in ifdel()
819 (void) rn_walktree(rhead, walk_rewire, &wire); in ifdel()
820 kern_rewire_ifp(wire.if_old, wire.if_new); in ifdel()
821 if_rewire_rdisc(wire.if_old, wire.if_new); in ifdel()
824 wire.if_new->int_state &= ~IS_DUP; in ifdel()
826 if (!IS_RIP_OFF(wire.if_new->int_state)) in ifdel()
828 if (!IS_RIP_OUT_OFF(wire.if_new->int_state)) in ifdel()
830 if (IS_IFF_ROUTING(wire.if_new->int_if_flags)) in ifdel()
833 set_rdisc_mg(wire.if_new, 1); in ifdel()
834 rip_mcast_on(wire.if_new); in ifdel()
850 if (!(ifp->int_state & IS_DUP) && !IS_IFF_QUIET(ifp->int_if_flags)) { in ifdel()
851 tot_interfaces--; in ifdel()
852 if (!IS_RIP_OFF(ifp->int_state)) in ifdel()
853 rip_interfaces--; in ifdel()
854 if (!IS_RIP_OUT_OFF(ifp->int_state)) in ifdel()
855 ripout_interfaces--; in ifdel()
856 if (IS_IFF_ROUTING(ifp->int_if_flags)) in ifdel()
857 fwd_interfaces--; in ifdel()
882 if (0 == (ifp->int_state & (IS_SICK | IS_BROKE))) { in if_sick()
883 ifp->int_state |= IS_SICK; in if_sick()
884 ifp->int_act_time = NEVER; in if_sick()
888 if (recurse && ifp->int_phys != NULL) { in if_sick()
890 for (ifp1 = ifp->int_phys->phyi_interface; in if_sick()
891 ifp1 != NULL; ifp1 = ifp1->int_ilist.hl_next) { in if_sick()
905 struct rewire_data wire; in if_bad() local
907 if (ifp->int_state & IS_BROKE) in if_bad()
912 ifp->int_state |= (IS_BROKE | IS_SICK); in if_bad()
913 ifp->int_act_time = NEVER; in if_bad()
914 ifp->int_query_time = NEVER; in if_bad()
919 if (recurse && ifp->int_phys != NULL) { in if_bad()
921 for (ifp1 = ifp->int_phys->phyi_interface; in if_bad()
922 ifp1 != NULL; ifp1 = ifp1->int_ilist.hl_next) { in if_bad()
929 if (!(ifp->int_state & IS_DUP) && in if_bad()
930 (wire.if_new = check_dup(ifp->int_name, ifp->int_addr, in if_bad()
931 ifp->int_dstaddr, ifp->int_mask, ifp->int_if_flags, in if_bad()
933 !IS_IFF_QUIET(wire.if_new->int_if_flags)) { in if_bad()
935 wire.if_new->int_name, ifp->int_name); in if_bad()
936 wire.if_old = ifp; in if_bad()
937 wire.metric_delta = wire.if_new->int_metric - ifp->int_metric; in if_bad()
938 (void) rn_walktree(rhead, walk_rewire, &wire); in if_bad()
939 if_rewire_rdisc(wire.if_old, wire.if_new); in if_bad()
942 wire.if_new->int_state &= ~IS_DUP; in if_bad()
945 ifp->int_state |= IS_DUP; in if_bad()
948 set_rdisc_mg(wire.if_new, 1); in if_bad()
949 rip_mcast_on(wire.if_new); in if_bad()
967 if (ifp->int_state & IS_BROKE) { in if_ok()
969 type, ifp->int_name, naddr_ntoa(ifp->int_dstaddr)); in if_ok()
970 ifp->int_state &= ~(IS_BROKE | IS_SICK); in if_ok()
972 } else if (ifp->int_state & IS_SICK) { in if_ok()
974 type, ifp->int_name, naddr_ntoa(ifp->int_dstaddr)); in if_ok()
975 ifp->int_state &= ~IS_SICK; in if_ok()
978 if (recurse && ifp->int_phys != NULL && IS_IFF_UP(ifp->int_if_flags)) { in if_ok()
979 ifp->int_phys->phyi_data.ts = 0; in if_ok()
982 for (ifp1 = ifp->int_phys->phyi_interface; in if_ok()
983 ifp1 != NULL; ifp1 = ifp1->int_ilist.hl_next) { in if_ok()
990 if (!(ifp->int_state & IS_DUP)) in if_ok()
993 if (ifp->int_state & IS_REMOTE) in if_ok()
1001 if (ifp->int_if_flags & IFF_POINTOPOINT) { in remote_address_ok()
1002 if (addr == ifp->int_dstaddr) in remote_address_ok()
1004 } else if (on_net(addr, ifp->int_net, ifp->int_mask)) { in remote_address_ok()
1056 for (ifp = ifnet; ifp != NULL; ifp = ifp->int_next) in ifscan()
1057 ifp->int_state &= ~IS_CHECKED; in ifscan()
1060 if ((sock = socket(PF_INET, SOCK_DGRAM, 0)) == -1) in ifscan()
1071 if (ioctl(sock, SIOCGLIFNUM, &lifn) == -1) { in ifscan()
1103 if (ioctl(sock, SIOCGLIFCONF, &lifc) == -1) { in ifscan()
1120 if (lifc.lifc_len >= needed - sizeof (struct lifreq)) in ifscan()
1129 (void) strlcpy(ifs.int_name, lifrp->lifr_name, in ifscan()
1133 ifs.int_addr = ((struct sockaddr_in *)&lifrp->lifr_addr)-> in ifscan()
1136 if (ioctl(sock, SIOCGLIFFLAGS, lifrp) == -1) { in ifscan()
1144 ifs.int_if_flags = lifrp->lifr_flags; in ifscan()
1165 if (ioctl(sock, SIOCGLIFINDEX, lifrp) == -1) { in ifscan()
1173 ifindex = lifrp->lifr_index; in ifscan()
1177 * Get the destination address for point-to-point in ifscan()
1181 sinp = (struct sockaddr_in *)&lifrp->lifr_dstaddr; in ifscan()
1182 if (ioctl(sock, SIOCGLIFDSTADDR, lifrp) == -1) { in ifscan()
1194 ifs.int_net = ntohl(sinp->sin_addr.s_addr); in ifscan()
1209 ifs.int_dstaddr = sinp->sin_addr.s_addr; in ifscan()
1213 sinp = (struct sockaddr_in *)&lifrp->lifr_addr; in ifscan()
1214 if (ioctl(sock, SIOCGLIFNETMASK, lifrp) == -1) { in ifscan()
1224 if (sinp->sin_addr.s_addr == INADDR_ANY) { in ifscan()
1230 "%s has all-zero netmask", in ifscan()
1238 ifs.int_mask = ntohl(sinp->sin_addr.s_addr); in ifscan()
1246 if (ioctl(sock, SIOCGLIFBRDADDR, lifrp) == -1) { in ifscan()
1258 haddr = ntohl(sinp->sin_addr.s_addr); in ifscan()
1273 ifs.int_brdaddr = sinp->sin_addr.s_addr; in ifscan()
1276 if (ioctl(sock, SIOCGLIFMETRIC, lifrp) == -1) { in ifscan()
1285 ifs.int_metric = lifrp->lifr_metric; in ifscan()
1307 * Do not output RIP or Router-Discovery packets via in ifscan()
1355 "-->" : ""), in ifscan()
1358 ifp->int_name, in ifscan()
1359 addrname(ifp->int_addr, ifp->int_mask, 1), in ifscan()
1360 ((ifp->int_if_flags & IFF_POINTOPOINT) ? in ifscan()
1361 "-->" : ""), in ifscan()
1362 ((ifp->int_if_flags & IFF_POINTOPOINT) ? in ifscan()
1363 naddr_ntoa(ifp->int_dstaddr) : "")); in ifscan()
1378 ifp->int_state |= IS_CHECKED; in ifscan()
1379 ifp->int_state = (ifp->int_state & ~IS_DUP) | in ifscan()
1382 if ((ifp->int_phys == NULL && ifindex != 0) || in ifscan()
1383 (ifp->int_phys != NULL && in ifscan()
1384 ifp->int_phys->phyi_index != ifindex) || in ifscan()
1385 0 != ((ifp->int_if_flags ^ ifs.int_if_flags) in ifscan()
1389 ifp->int_addr != ifs.int_addr || in ifscan()
1390 ifp->int_brdaddr != ifs.int_brdaddr || in ifscan()
1391 ifp->int_dstaddr != ifs.int_dstaddr || in ifscan()
1392 ifp->int_mask != ifs.int_mask || in ifscan()
1393 ifp->int_metric != ifs.int_metric) { in ifscan()
1399 ifp->int_name); in ifscan()
1408 if (IS_IFF_UP(ifp->int_if_flags)) { in ifscan()
1411 ifp->int_name, in ifscan()
1412 naddr_ntoa(ifp->int_dstaddr)); in ifscan()
1414 ifp->int_if_flags &= ~IFF_UP; in ifscan()
1415 } else if (ifp->int_phys != NULL && in ifscan()
1416 now.tv_sec > (ifp->int_phys->phyi_data.ts + in ifscan()
1420 ifp->int_name, in ifscan()
1421 now.tv_sec - in ifscan()
1422 ifp->int_phys->phyi_data.ts); in ifscan()
1428 if (!IS_IFF_UP(ifp->int_if_flags)) { in ifscan()
1429 ifp->int_if_flags |= IFF_UP; in ifscan()
1437 if ((phyi = ifp->int_phys) == NULL || in ifscan()
1438 now.tv_sec < phyi->phyi_data.ts + in ifscan()
1443 if (get_if_kstats(ifp, &newstats) == -1) { in ifscan()
1447 phyi->phyi_name); in ifscan()
1454 if (phyi->phyi_data.ts == 0) { in ifscan()
1455 phyi->phyi_data = newstats; in ifscan()
1459 in = newstats.ipackets - phyi->phyi_data.ipackets; in ifscan()
1460 ierr = newstats.ierrors - phyi->phyi_data.ierrors; in ifscan()
1461 out = newstats.opackets - phyi->phyi_data.opackets; in ifscan()
1462 oerr = newstats.oerrors - phyi->phyi_data.oerrors; in ifscan()
1463 phyi->phyi_data = newstats; in ifscan()
1488 if (!(ifp->int_state & IS_SICK)) { in ifscan()
1492 ifp->int_name, in ifscan()
1493 naddr_ntoa(ifp->int_dstaddr), in ifscan()
1498 if (!(ifp->int_state & IS_BROKE)) { in ifscan()
1502 ifp->int_name, in ifscan()
1503 naddr_ntoa(ifp->int_dstaddr), in ifscan()
1511 ifp->int_act_time = now.tv_sec; in ifscan()
1528 "point-to-point, nor loopback", in ifscan()
1545 if (ifp->int_phys != NULL && in ifscan()
1546 get_if_kstats(ifp, &ifp->int_phys->phyi_data) == -1) { in ifscan()
1550 ifp->int_phys->phyi_name); in ifscan()
1555 if (!(ifp->int_if_flags & (IFF_POINTOPOINT|IFF_LOOPBACK))) { in ifscan()
1557 ifp1 = ifp1->int_next) { in ifscan()
1558 if (ifp1->int_mask == ifp->int_mask) in ifscan()
1562 * we don't care about point-to-point in ifscan()
1565 if (ifp1->int_if_flags & in ifscan()
1571 if (ifp->int_phys == ifp1->int_phys) in ifscan()
1574 if (on_net(ifp->int_addr, in ifscan()
1575 ifp1->int_net, ifp1->int_mask) || in ifscan()
1576 on_net(ifp1->int_addr, in ifscan()
1577 ifp->int_net, ifp->int_mask)) { in ifscan()
1581 ifp->int_name, in ifscan()
1582 addrname(htonl(ifp->int_net), in ifscan()
1583 ifp->int_mask, 1), in ifscan()
1584 ifp1->int_name, in ifscan()
1585 addrname(htonl(ifp1->int_net), in ifscan()
1586 ifp1->int_mask, 1)); in ifscan()
1592 if (!(ifp->int_state & IS_DUP) && in ifscan()
1593 !IS_IFF_QUIET(ifp->int_if_flags)) { in ifscan()
1596 if (!IS_RIP_OFF(ifp->int_state)) in ifscan()
1598 if (!IS_RIP_OUT_OFF(ifp->int_state)) in ifscan()
1600 if (IS_IFF_ROUTING(ifp->int_if_flags)) in ifscan()
1611 * If we are multi-homed and have at least two interfaces that in ifscan()
1618 * If we are multi-homed, optionally advertise a route to in ifscan()
1630 if (gethostname(myname, MAXHOSTNAMELEN) == -1) { in ifscan()
1648 if (rt->rt_ifp != ifp || in ifscan()
1649 rt->rt_router != loopaddr) { in ifscan()
1655 loop_rts.rts_time = rt->rt_time; in ifscan()
1657 rtchange(rt, rt->rt_state | RS_MHOME, in ifscan()
1671 ifp1 = ifp->int_next; /* because we may delete it */ in ifscan()
1674 if (!(ifp->int_state & (IS_CHECKED | IS_REMOTE))) { in ifscan()
1676 ifp->int_name); in ifscan()
1681 if ((ifp->int_state & IS_BROKE) && in ifscan()
1682 !(ifp->int_state & IS_PASSIVE)) in ifscan()
1689 if (!(ifp->int_state & (IS_NO_RIPV1_OUT | IS_DUP)) && in ifscan()
1692 if (!(ifp->int_state & IS_NO_RIPV1_IN)) in ifscan()
1696 for (ifp = ifnet; ifp != NULL; ifp = ifp->int_next) { in ifscan()
1700 * might affect routes for point-to-point links. in ifscan()
1706 * Add routes to the local end of point-to-point interfaces in ifscan()
1709 if ((ifp->int_if_flags & IFF_POINTOPOINT) && in ifscan()
1710 !(ifp->int_state & IS_REMOTE) && foundloopback) { in ifscan()
1715 del_static(ifp->int_addr, HOST_MASK, 0, ifp, 0); in ifscan()
1716 rt = rtget(ifp->int_addr, HOST_MASK); in ifscan()
1717 if (rt != NULL && rt->rt_router != loopaddr) { in ifscan()
1722 if (!(rt->rt_state & RS_LOCAL) || in ifscan()
1723 rt->rt_metric > ifp->int_metric) { in ifscan()
1726 ifp1 = rt->rt_ifp; in ifscan()
1730 loop_rts.rts_time = rt->rt_time; in ifscan()
1732 rtchange(rt, ((rt->rt_state & ~RS_NET_SYN) | in ifscan()
1738 rtadd(ifp->int_addr, HOST_MASK, in ifscan()
1746 intnetp = intnetp->intnet_next) { in ifscan()
1747 rt = rtget(intnetp->intnet_addr, intnetp->intnet_mask); in ifscan()
1749 !(rt->rt_state & RS_NO_NET_SYN) && in ifscan()
1750 !(rt->rt_state & RS_NET_INT)) { in ifscan()
1756 loop_rts.rts_metric = intnetp->intnet_metric-1; in ifscan()
1758 rtadd(intnetp->intnet_addr, intnetp->intnet_mask, in ifscan()
1776 * interface that is on a different class-A,B,or C network. in check_net_syn()
1779 ifp->int_state |= IS_NEED_NET_SYN; in check_net_syn()
1780 rt = rtget(ifp->int_std_addr, ifp->int_std_mask); in check_net_syn()
1782 0 == (rt->rt_state & RS_NO_NET_SYN) && in check_net_syn()
1783 (!(rt->rt_state & RS_NET_SYN) || in check_net_syn()
1784 rt->rt_metric > ifp->int_metric)) { in check_net_syn()
1791 new.rts_gate = ifp->int_addr; in check_net_syn()
1792 new.rts_router = ifp->int_addr; in check_net_syn()
1793 new.rts_metric = ifp->int_metric; in check_net_syn()
1795 rtadd(ifp->int_std_addr, ifp->int_std_mask, in check_net_syn()
1800 ifp->int_state &= ~IS_NEED_NET_SYN; in check_net_syn()
1802 rt = rtget(ifp->int_std_addr, ifp->int_std_mask); in check_net_syn()
1804 (rt->rt_state & RS_NET_SYN) && in check_net_syn()
1805 rt->rt_ifp == ifp) in check_net_syn()
1813 * Create route to other end if a point-to-point link,
1826 if (ifp->int_state & IS_BROKE) in addrouteforif()
1831 * unnumbered point-to-point interfaces. in addrouteforif()
1833 if ((ifp->int_state & IS_DUP) || in addrouteforif()
1834 ((ifp->int_if_flags & IFF_POINTOPOINT) && ifp->int_dstaddr == 0)) in addrouteforif()
1841 if (ifp->int_state & IS_SUBNET) in addrouteforif()
1844 dst = (0 != (ifp->int_if_flags & (IFF_POINTOPOINT | IFF_LOOPBACK)) ? in addrouteforif()
1845 ifp->int_dstaddr : htonl(ifp->int_net)); in addrouteforif()
1849 new.rts_router = ifp->int_addr; in addrouteforif()
1850 new.rts_gate = ifp->int_addr; in addrouteforif()
1851 new.rts_metric = ifp->int_metric; in addrouteforif()
1853 if (ifp->int_if_flags & IFF_POINTOPOINT) in addrouteforif()
1855 else if (ifp->int_if_flags & IFF_LOOPBACK) in addrouteforif()
1864 if ((ifp->int_state & IS_REMOTE) && in addrouteforif()
1865 !(ifp->int_state & IS_EXTERNAL) && in addrouteforif()
1874 del_static(dst, ifp->int_mask, 0, ifp, 0); in addrouteforif()
1875 rt = rtget(dst, ifp->int_mask); in addrouteforif()
1876 if (!IS_IFF_ROUTING(ifp->int_if_flags)) in addrouteforif()
1879 if ((rt->rt_ifp != ifp || rt->rt_router != ifp->int_addr) && in addrouteforif()
1880 (rt->rt_ifp == NULL || in addrouteforif()
1881 (rt->rt_ifp->int_state & IS_BROKE))) { in addrouteforif()
1885 rtchange(rt, ((rt->rt_state | rt_newstate) & in addrouteforif()
1890 if (ifp->int_transitions++ > 0) in addrouteforif()
1891 trace_act("re-installing interface %s;" in addrouteforif()
1893 ifp->int_name, ifp->int_transitions); in addrouteforif()
1895 rtadd(dst, ifp->int_mask, rt_newstate, &new); in addrouteforif()
1903 * returns 0 for success, -1 for failure.
1911 return (-1); in kstat_named_value()
1914 return (-1); in kstat_named_value()
1915 } else if (knp->data_type != KSTAT_DATA_UINT32) { in kstat_named_value()
1916 return (-1); in kstat_named_value()
1918 *value = knp->value.ui32; in kstat_named_value()
1926 struct physical_interface *phyi = ifp->int_phys; in get_if_kstats()
1931 if (phyi->phyi_data.ts == now.tv_sec) { in get_if_kstats()
1932 if (newdata != &phyi->phyi_data) in get_if_kstats()
1933 *newdata = phyi->phyi_data; in get_if_kstats()
1938 return (-1); in get_if_kstats()
1942 * If that fails, fallback to legacy ktats for those non-GLDv3 links. in get_if_kstats()
1944 if (((ksp = kstat_lookup(kc, "link", 0, phyi->phyi_name)) == NULL) && in get_if_kstats()
1945 ((ksp = kstat_lookup(kc, NULL, -1, phyi->phyi_name)) == NULL)) { in get_if_kstats()
1947 return (-1); in get_if_kstats()
1950 if (kstat_read(kc, ksp, NULL) == -1) { in get_if_kstats()
1952 return (-1); in get_if_kstats()
1955 if ((kstat_named_value(ksp, "ipackets", &newdata->ipackets) == -1) || in get_if_kstats()
1956 (kstat_named_value(ksp, "opackets", &newdata->opackets) == -1)) { in get_if_kstats()
1957 newdata->ts = 0; in get_if_kstats()
1959 return (-1); in get_if_kstats()
1963 if (!(ifp->int_if_flags & IFF_LOOPBACK)) { in get_if_kstats()
1965 &newdata->ierrors) == -1) || in get_if_kstats()
1967 &newdata->oerrors) == -1)) { in get_if_kstats()
1968 newdata->ts = 0; in get_if_kstats()
1970 return (-1); in get_if_kstats()
1974 newdata->ts = now.tv_sec; in get_if_kstats()
1989 if (ifp != NULL && !IS_IFF_ROUTING(ifp->int_if_flags)) in should_supply()