Lines Matching refs:li
147 struct logint *li);
151 struct sockaddr_in *sin, struct logint *li);
172 static void free_logint(struct logint *li);
176 static void added_logint(struct logint *li, int s,
178 static void deleted_logint(struct logint *li, struct logint *newli, int s,
183 struct ifreq *ifr, struct logint *li);
572 struct logint *li; in solicitor() local
574 li = find_directly_connected_logint(sin->sin_addr, NULL); in solicitor()
575 if (li != NULL && (li->li_flags & IFF_NORTEXCH)) { in solicitor()
579 pr_type((int)icp->icmp_type), li->li_name); in solicitor()
607 struct logint *li, *li_tmp; in advertise() local
627 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in advertise()
628 if (li->li_state & ST_DELETED) in advertise()
642 ap->addr = li->li_localaddr.s_addr; in advertise()
643 ap->preference = htonl(li->li_preference); in advertise()
767 struct logint *li; in pr_pack() local
787 li = find_directly_connected_logint(ip->ip_src, NULL); in pr_pack()
788 if (li != NULL && (li->li_flags & IFF_NORTEXCH)) { in pr_pack()
792 pr_type((int)icp->icmp_type), li->li_name); in pr_pack()
980 if (li == NULL) { in pr_pack()
1130 struct logint *li; in sendbcast() local
1136 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in sendbcast()
1137 if (li->li_state & ST_DELETED) in sendbcast()
1140 if (li->li_flags & IFF_BROADCAST) { in sendbcast()
1147 cc = sendbcastif(s, packet, packetlen, li); in sendbcast()
1156 sendbcastif(int s, char *packet, int packetlen, struct logint *li) in sendbcastif() argument
1164 if ((li->li_flags & IFF_BROADCAST) == 0) { in sendbcastif()
1168 pr_type((int)icp->icmp_type), li->li_name); in sendbcastif()
1172 if (li->li_flags & IFF_NORTEXCH) { in sendbcastif()
1176 pr_type((int)icp->icmp_type), li->li_name); in sendbcastif()
1181 baddr.sin_addr = li->li_bcastaddr; in sendbcastif()
1199 struct logint *li; in sendmcast() local
1205 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in sendmcast()
1206 if (li->li_state & ST_DELETED) in sendmcast()
1209 if (li->li_flags & IFF_MULTICAST) { in sendmcast()
1216 cc = sendmcastif(s, packet, packetlen, sin, li); in sendmcast()
1226 struct logint *li) in sendmcastif() argument
1234 if ((li->li_flags & IFF_MULTICAST) == 0) { in sendmcastif()
1238 pr_type((int)icp->icmp_type), li->li_name); in sendmcastif()
1242 if (li->li_flags & IFF_NORTEXCH) { in sendmcastif()
1246 pr_type((int)icp->icmp_type), li->li_name); in sendmcastif()
1251 ifaddr.sin_addr = li->li_address; in sendmcastif()
1283 struct logint *li; in force_preference() local
1286 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in force_preference()
1287 if (li->li_state & ST_DELETED) in force_preference()
1290 li->li_preference = preference; in force_preference()
1309 struct logint *li; in initifs() local
1321 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in initifs()
1322 li->li_state |= ST_MARKED; in initifs()
1397 li = find_logint(pi, ifreq.ifr_name); in initifs()
1398 if (li != NULL) { in initifs()
1413 free_logint(li); in initifs()
1417 if (newli.li_flags != li->li_flags || in initifs()
1419 li->li_localaddr.s_addr || newli.li_index != in initifs()
1420 li->li_index) { in initifs()
1422 li->li_state |= ST_DELETED; in initifs()
1423 deleted_logint(li, &newli, s, joinaddr); in initifs()
1424 free_logint(li); in initifs()
1425 li = NULL; /* li recreated below */ in initifs()
1431 li->li_netmask = newli.li_netmask; in initifs()
1432 li->li_bcastaddr = newli.li_bcastaddr; in initifs()
1435 if (li == NULL) { in initifs()
1436 li = add_logint(pi, ifreq.ifr_name); in initifs()
1437 if (li == NULL) { in initifs()
1447 &ifreq, li)) { in initifs()
1448 free_logint(li); in initifs()
1451 li->li_preference = preference; in initifs()
1452 added_logint(li, s, joinaddr); in initifs()
1454 li->li_state &= ~ST_MARKED; in initifs()
1475 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in initifs()
1476 if (li->li_state & ST_MARKED) { in initifs()
1478 li->li_state |= ST_DELETED; in initifs()
1498 for (li = pi->pi_logical_first; li != NULL; in initifs()
1499 li = li->li_next) { in initifs()
1500 if (li->li_state & ST_DELETED) { in initifs()
1501 deleted_logint(li, NULL, s, in initifs()
1510 for (li = pi->pi_logical_first; li != NULL; in initifs()
1511 li = nextli) { in initifs()
1512 nextli = li->li_next; in initifs()
1513 if (li->li_state & ST_DELETED) in initifs()
1514 free_logint(li); in initifs()
1539 struct ifreq *ifr, struct logint *li) in getconfig() argument
1547 li->li_flags = if_flags; in getconfig()
1549 li->li_localaddr = sin->sin_addr; in getconfig()
1556 li->li_index = 0; in getconfig()
1558 li->li_index = lifreq.lifr_index; in getconfig()
1562 li->li_netmask.s_addr = (unsigned long)0xffffffff; in getconfig()
1569 li->li_address = sin->sin_addr; in getconfig()
1570 li->li_remoteaddr = sin->sin_addr; in getconfig()
1572 li->li_bcastaddr = sin->sin_addr; in getconfig()
1573 li->li_flags |= IFF_BROADCAST; in getconfig()
1579 li->li_address = li->li_localaddr; in getconfig()
1580 li->li_remoteaddr = li->li_address; in getconfig()
1586 li->li_netmask = sin->sin_addr; in getconfig()
1594 li->li_bcastaddr = sin->sin_addr; in getconfig()
1632 struct logint *li; in find_directly_connected_logint() local
1640 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in find_directly_connected_logint()
1641 if (li->li_state & ST_DELETED) in find_directly_connected_logint()
1645 if ((in.s_addr & li->li_netmask.s_addr) == in find_directly_connected_logint()
1646 (li->li_remoteaddr.s_addr & in find_directly_connected_logint()
1647 li->li_netmask.s_addr)) in find_directly_connected_logint()
1648 return (li); in find_directly_connected_logint()
1665 struct logint *li; in report_interfaces() local
1671 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in report_interfaces()
1673 li->li_name, li->li_state, li->li_flags, in report_interfaces()
1674 pr_name(li->li_address)); in report_interfaces()
1676 pr_name(li->li_localaddr), li->li_preference); in report_interfaces()
1678 pr_name(li->li_bcastaddr)); in report_interfaces()
1680 pr_name(li->li_remoteaddr)); in report_interfaces()
1682 pr_name(li->li_netmask)); in report_interfaces()
1744 struct logint *li; in find_logint() local
1746 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in find_logint()
1747 if (strcmp(li->li_name, name) == 0) in find_logint()
1748 return (li); in find_logint()
1760 struct logint *li; in add_logint() local
1762 li = malloc(sizeof (*li)); in add_logint()
1763 if (li == NULL) in add_logint()
1765 bzero((char *)li, sizeof (*li)); in add_logint()
1767 strncpy(li->li_name, name, sizeof (li->li_name)); in add_logint()
1769 li->li_prev = pi->pi_logical_last; in add_logint()
1773 pi->pi_logical_first = li; in add_logint()
1775 pi->pi_logical_last->li_next = li; in add_logint()
1777 li->li_next = NULL; in add_logint()
1778 li->li_physical = pi; in add_logint()
1779 pi->pi_logical_last = li; in add_logint()
1780 return (li); in add_logint()
1785 free_logint(struct logint *li) in free_logint() argument
1789 pi = li->li_physical; in free_logint()
1790 if (li->li_prev == NULL) { in free_logint()
1792 assert(pi->pi_logical_first == li); in free_logint()
1793 pi->pi_logical_first = li->li_next; in free_logint()
1795 assert(li->li_prev->li_next == li); in free_logint()
1796 li->li_prev->li_next = li->li_next; in free_logint()
1798 if (li->li_next == NULL) { in free_logint()
1800 assert(pi->pi_logical_last == li); in free_logint()
1801 pi->pi_logical_last = li->li_prev; in free_logint()
1803 assert(li->li_next->li_prev == li); in free_logint()
1804 li->li_next->li_prev = li->li_prev; in free_logint()
1806 free(li); in free_logint()
1815 struct logint *li; in deleted_phyint() local
1820 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in deleted_phyint()
1821 li->li_state |= ST_DELETED; in deleted_phyint()
1823 for (li = pi->pi_logical_first; li != NULL; li = li->li_next) { in deleted_phyint()
1824 deleted_logint(li, NULL, s, joinaddr); in deleted_phyint()
1833 added_logint(struct logint *li, int s, in added_logint() argument
1837 logdebug("Adding logical interface %s\n", li->li_name); in added_logint()
1839 if ((!(li->li_physical->pi_state & ST_JOINED)) && in added_logint()
1844 mreq.imr_interface = li->li_address; in added_logint()
1847 logdebug("Joining MC on interface %s\n", li->li_name); in added_logint()
1853 li->li_physical->pi_state |= ST_JOINED; in added_logint()
1854 li->li_state |= ST_JOINED; in added_logint()
1875 deleted_logint(struct logint *li, struct logint *newli, int s, in deleted_logint() argument
1882 logdebug("Deleting logical interface %s\n", li->li_name); in deleted_logint()
1884 assert(li->li_state & ST_DELETED); in deleted_logint()
1886 if (li->li_state & ST_JOINED) { in deleted_logint()
1889 pi = li->li_physical; in deleted_logint()
1897 mreq.imr_interface = li->li_address; in deleted_logint()
1900 logdebug("Leaving MC on interface %s\n", li->li_name); in deleted_logint()
1920 li->li_physical->pi_state &= ~ST_JOINED; in deleted_logint()
1921 li->li_state &= ~ST_JOINED; in deleted_logint()