Lines Matching refs:li
152 struct logint *li);
156 struct sockaddr_in *sin, struct logint *li);
177 static void free_logint(struct logint *li);
181 static void added_logint(struct logint *li, int s,
183 static void deleted_logint(struct logint *li, struct logint *newli, int s,
188 struct ifreq *ifr, struct logint *li);
574 struct logint *li; in solicitor() local
576 li = find_directly_connected_logint(sin->sin_addr, NULL); in solicitor()
577 if (li != NULL && (li->li_flags & IFF_NORTEXCH)) { in solicitor()
581 pr_type((int)icp->icmp_type), li->li_name); in solicitor()
609 struct logint *li, *li_tmp; in advertise() local
629 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in advertise()
630 if (li->li_state & ST_DELETED) in advertise()
644 ap->addr = li->li_localaddr.s_addr; in advertise()
645 ap->preference = htonl(li->li_preference); in advertise()
769 struct logint *li; in pr_pack() local
789 li = find_directly_connected_logint(ip->ip_src, NULL); in pr_pack()
790 if (li != NULL && (li->li_flags & IFF_NORTEXCH)) { in pr_pack()
794 pr_type((int)icp->icmp_type), li->li_name); in pr_pack()
982 if (li == NULL) { in pr_pack()
1132 struct logint *li; in sendbcast() local
1138 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in sendbcast()
1139 if (li->li_state & ST_DELETED) in sendbcast()
1142 if (li->li_flags & IFF_BROADCAST) { in sendbcast()
1149 cc = sendbcastif(s, packet, packetlen, li); in sendbcast()
1158 sendbcastif(int s, char *packet, int packetlen, struct logint *li) in sendbcastif() argument
1166 if ((li->li_flags & IFF_BROADCAST) == 0) { in sendbcastif()
1170 pr_type((int)icp->icmp_type), li->li_name); in sendbcastif()
1174 if (li->li_flags & IFF_NORTEXCH) { in sendbcastif()
1178 pr_type((int)icp->icmp_type), li->li_name); in sendbcastif()
1183 baddr.sin_addr = li->li_bcastaddr; in sendbcastif()
1201 struct logint *li; in sendmcast() local
1207 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in sendmcast()
1208 if (li->li_state & ST_DELETED) in sendmcast()
1211 if (li->li_flags & IFF_MULTICAST) { in sendmcast()
1218 cc = sendmcastif(s, packet, packetlen, sin, li); in sendmcast()
1228 struct logint *li) in sendmcastif() argument
1236 if ((li->li_flags & IFF_MULTICAST) == 0) { in sendmcastif()
1240 pr_type((int)icp->icmp_type), li->li_name); in sendmcastif()
1244 if (li->li_flags & IFF_NORTEXCH) { in sendmcastif()
1248 pr_type((int)icp->icmp_type), li->li_name); in sendmcastif()
1253 ifaddr.sin_addr = li->li_address; in sendmcastif()
1285 struct logint *li; in force_preference() local
1288 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in force_preference()
1289 if (li->li_state & ST_DELETED) in force_preference()
1292 li->li_preference = preference; in force_preference()
1311 struct logint *li; in initifs() local
1323 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in initifs()
1324 li->li_state |= ST_MARKED; in initifs()
1399 li = find_logint(pi, ifreq.ifr_name); in initifs()
1400 if (li != NULL) { in initifs()
1415 free_logint(li); in initifs()
1419 if (newli.li_flags != li->li_flags || in initifs()
1421 li->li_localaddr.s_addr || newli.li_index != in initifs()
1422 li->li_index) { in initifs()
1424 li->li_state |= ST_DELETED; in initifs()
1425 deleted_logint(li, &newli, s, joinaddr); in initifs()
1426 free_logint(li); in initifs()
1427 li = NULL; /* li recreated below */ in initifs()
1433 li->li_netmask = newli.li_netmask; in initifs()
1434 li->li_bcastaddr = newli.li_bcastaddr; in initifs()
1437 if (li == NULL) { in initifs()
1438 li = add_logint(pi, ifreq.ifr_name); in initifs()
1439 if (li == NULL) { in initifs()
1449 &ifreq, li)) { in initifs()
1450 free_logint(li); in initifs()
1453 li->li_preference = preference; in initifs()
1454 added_logint(li, s, joinaddr); in initifs()
1456 li->li_state &= ~ST_MARKED; in initifs()
1477 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in initifs()
1478 if (li->li_state & ST_MARKED) { in initifs()
1480 li->li_state |= ST_DELETED; in initifs()
1500 for (li = pi->pi_logical_first; li != NULL; in initifs()
1501 li = li->li_next) { in initifs()
1502 if (li->li_state & ST_DELETED) { in initifs()
1503 deleted_logint(li, NULL, s, in initifs()
1512 for (li = pi->pi_logical_first; li != NULL; in initifs()
1513 li = nextli) { in initifs()
1514 nextli = li->li_next; in initifs()
1515 if (li->li_state & ST_DELETED) in initifs()
1516 free_logint(li); in initifs()
1541 struct ifreq *ifr, struct logint *li) in getconfig() argument
1549 li->li_flags = if_flags; in getconfig()
1551 li->li_localaddr = sin->sin_addr; in getconfig()
1558 li->li_index = 0; in getconfig()
1560 li->li_index = lifreq.lifr_index; in getconfig()
1564 li->li_netmask.s_addr = (unsigned long)0xffffffff; in getconfig()
1571 li->li_address = sin->sin_addr; in getconfig()
1572 li->li_remoteaddr = sin->sin_addr; in getconfig()
1574 li->li_bcastaddr = sin->sin_addr; in getconfig()
1575 li->li_flags |= IFF_BROADCAST; in getconfig()
1581 li->li_address = li->li_localaddr; in getconfig()
1582 li->li_remoteaddr = li->li_address; in getconfig()
1588 li->li_netmask = sin->sin_addr; in getconfig()
1596 li->li_bcastaddr = sin->sin_addr; in getconfig()
1634 struct logint *li; in find_directly_connected_logint() local
1642 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in find_directly_connected_logint()
1643 if (li->li_state & ST_DELETED) in find_directly_connected_logint()
1647 if ((in.s_addr & li->li_netmask.s_addr) == in find_directly_connected_logint()
1648 (li->li_remoteaddr.s_addr & in find_directly_connected_logint()
1649 li->li_netmask.s_addr)) in find_directly_connected_logint()
1650 return (li); in find_directly_connected_logint()
1667 struct logint *li; in report_interfaces() local
1673 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in report_interfaces()
1675 li->li_name, li->li_state, li->li_flags, in report_interfaces()
1676 pr_name(li->li_address)); in report_interfaces()
1678 pr_name(li->li_localaddr), li->li_preference); in report_interfaces()
1680 pr_name(li->li_bcastaddr)); in report_interfaces()
1682 pr_name(li->li_remoteaddr)); in report_interfaces()
1684 pr_name(li->li_netmask)); in report_interfaces()
1746 struct logint *li; in find_logint() local
1748 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in find_logint()
1749 if (strcmp(li->li_name, name) == 0) in find_logint()
1750 return (li); in find_logint()
1762 struct logint *li; in add_logint() local
1764 li = malloc(sizeof (*li)); in add_logint()
1765 if (li == NULL) in add_logint()
1767 bzero((char *)li, sizeof (*li)); in add_logint()
1769 strncpy(li->li_name, name, sizeof (li->li_name)); in add_logint()
1771 li->li_prev = pi->pi_logical_last; in add_logint()
1775 pi->pi_logical_first = li; in add_logint()
1777 pi->pi_logical_last->li_next = li; in add_logint()
1779 li->li_next = NULL; in add_logint()
1780 li->li_physical = pi; in add_logint()
1781 pi->pi_logical_last = li; in add_logint()
1782 return (li); in add_logint()
1787 free_logint(struct logint *li) in free_logint() argument
1791 pi = li->li_physical; in free_logint()
1792 if (li->li_prev == NULL) { in free_logint()
1794 assert(pi->pi_logical_first == li); in free_logint()
1795 pi->pi_logical_first = li->li_next; in free_logint()
1797 assert(li->li_prev->li_next == li); in free_logint()
1798 li->li_prev->li_next = li->li_next; in free_logint()
1800 if (li->li_next == NULL) { in free_logint()
1802 assert(pi->pi_logical_last == li); in free_logint()
1803 pi->pi_logical_last = li->li_prev; in free_logint()
1805 assert(li->li_next->li_prev == li); in free_logint()
1806 li->li_next->li_prev = li->li_prev; in free_logint()
1808 free(li); in free_logint()
1817 struct logint *li; in deleted_phyint() local
1822 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in deleted_phyint()
1823 li->li_state |= ST_DELETED; in deleted_phyint()
1825 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in deleted_phyint()
1826 deleted_logint(li, NULL, s, joinaddr); in deleted_phyint()
1835 added_logint(struct logint *li, int s, in added_logint() argument
1839 logdebug("Adding logical interface %s\n", li->li_name); in added_logint()
1841 if ((!(li->li_physical->pi_state & ST_JOINED)) && in added_logint()
1846 mreq.imr_interface = li->li_address; in added_logint()
1849 logdebug("Joining MC on interface %s\n", li->li_name); in added_logint()
1855 li->li_physical->pi_state |= ST_JOINED; in added_logint()
1856 li->li_state |= ST_JOINED; in added_logint()
1877 deleted_logint(struct logint *li, struct logint *newli, int s, in deleted_logint() argument
1884 logdebug("Deleting logical interface %s\n", li->li_name); in deleted_logint()
1886 assert(li->li_state & ST_DELETED); in deleted_logint()
1888 if (li->li_state & ST_JOINED) { in deleted_logint()
1891 pi = li->li_physical; in deleted_logint()
1899 mreq.imr_interface = li->li_address; in deleted_logint()
1902 logdebug("Leaving MC on interface %s\n", li->li_name); in deleted_logint()
1922 li->li_physical->pi_state &= ~ST_JOINED; in deleted_logint()
1923 li->li_state &= ~ST_JOINED; in deleted_logint()