Lines Matching refs:pif

76 	dhcp_pif_t *pif;  in insert_pif()  local
82 if ((pif = calloc(1, sizeof (*pif))) == NULL) { in insert_pif()
89 pif->pif_isv6 = isv6; in insert_pif()
90 pif->pif_hold_count = 1; in insert_pif()
91 pif->pif_running = B_TRUE; in insert_pif()
93 if (strlcpy(pif->pif_name, pname, LIFNAMSIZ) >= LIFNAMSIZ) { in insert_pif()
112 pif->pif_index = lifr.lifr_index; in insert_pif()
136 pif->pif_max = lifr.lifr_mtu; in insert_pif()
138 if (pif->pif_max < DHCP_DEF_MAX_SIZE) { in insert_pif()
140 "support DHCP (%u < %u)", pname, pif->pif_max, in insert_pif()
167 pif->pif_hwtype = dlpi_arptype(lifgr.gi_mactype); in insert_pif()
168 pif->pif_under_ipmp = (strcmp(pname, lifgr.gi_grifname) != 0); in insert_pif()
169 (void) strlcpy(pif->pif_grifname, lifgr.gi_grifname, LIFNAMSIZ); in insert_pif()
180 if (pif->pif_under_ipmp) { in insert_pif()
181 (void) strlcpy(lifr.lifr_name, pif->pif_grifname, in insert_pif()
190 pif->pif_grindex = lifr.lifr_index; in insert_pif()
198 if (!isv6 && pif->pif_hwtype == 0) { in insert_pif()
223 pif->pif_hwtype = dlpi_arptype(dlinfo.di_mactype); in insert_pif()
224 pif->pif_hwlen = dlinfo.di_physaddrlen; in insert_pif()
227 pname, pif->pif_hwtype, pif->pif_hwlen); in insert_pif()
229 if (pif->pif_hwlen > 0) { in insert_pif()
230 pif->pif_hwaddr = malloc(pif->pif_hwlen); in insert_pif()
231 if (pif->pif_hwaddr == NULL) { in insert_pif()
237 (void) memcpy(pif->pif_hwaddr, dlinfo.di_physaddr, in insert_pif()
238 pif->pif_hwlen); in insert_pif()
245 insque(pif, isv6 ? &v6root : &v4root); in insert_pif()
247 return (pif); in insert_pif()
251 release_pif(pif); in insert_pif()
263 hold_pif(dhcp_pif_t *pif) in hold_pif() argument
265 pif->pif_hold_count++; in hold_pif()
266 dhcpmsg(MSG_DEBUG2, "hold_pif: hold count on %s: %u", pif->pif_name, in hold_pif()
267 pif->pif_hold_count); in hold_pif()
279 release_pif(dhcp_pif_t *pif) in release_pif() argument
281 if (pif->pif_hold_count == 0) { in release_pif()
286 if (--pif->pif_hold_count == 0) { in release_pif()
288 pif->pif_name); in release_pif()
290 remque(pif); in release_pif()
291 free(pif->pif_hwaddr); in release_pif()
292 free(pif); in release_pif()
295 pif->pif_name, pif->pif_hold_count); in release_pif()
315 lookup_pif_by_uindex(uint16_t ifindex, dhcp_pif_t *pif, boolean_t isv6) in lookup_pif_by_uindex() argument
317 if (pif == NULL) in lookup_pif_by_uindex()
318 pif = isv6 ? v6root : v4root; in lookup_pif_by_uindex()
320 pif = pif->pif_next; in lookup_pif_by_uindex()
322 for (; pif != NULL; pif = pif->pif_next) { in lookup_pif_by_uindex()
323 if ((pif->pif_index & 0xffff) == ifindex) in lookup_pif_by_uindex()
327 return (pif); in lookup_pif_by_uindex()
341 dhcp_pif_t *pif; in lookup_pif_by_name() local
343 pif = isv6 ? v6root : v4root; in lookup_pif_by_name()
345 for (; pif != NULL; pif = pif->pif_next) { in lookup_pif_by_name()
346 if (strcmp(pif->pif_name, pname) == 0) in lookup_pif_by_name()
350 return (pif); in lookup_pif_by_name()
362 pif_status(dhcp_pif_t *pif, boolean_t isup) in pif_status() argument
367 pif->pif_running = isup; in pif_status()
368 dhcpmsg(MSG_DEBUG, "interface %s has %s", pif->pif_name, in pif_status()
370 for (lif = pif->pif_lifs; lif != NULL; lif = lif->lif_next) { in pif_status()
383 if (pif->pif_isv6) { \
404 insert_lif(dhcp_pif_t *pif, const char *lname, int *error) in insert_lif() argument
421 lif->lif_pif = pif; in insert_lif()
435 fd = pif->pif_isv6 ? v6_sock_fd : v4_sock_fd; in insert_lif()
473 if ((lifr.lifr_flags & IFF_RUNNING) && !pif->pif_running) { in insert_lif()
474 pif_status(pif, B_TRUE); in insert_lif()
475 } else if (!(lifr.lifr_flags & IFF_RUNNING) && pif->pif_running) { in insert_lif()
476 pif_status(pif, B_FALSE); in insert_lif()
487 } else if (!pif->pif_isv6 && (lifr.lifr_flags & IFF_BROADCAST)) { in insert_lif()
499 if (pif->pif_isv6) in insert_lif()
505 insque(lif, &pif->pif_lifs); in insert_lif()
552 dhcp_pif_t *pif; in release_lif() local
561 pif = lif->lif_pif; in release_lif()
562 if (pif->pif_isv6) in release_lif()
566 release_pif(pif); in release_lif()
642 lookup_lif_by_name(const char *lname, const dhcp_pif_t *pif) in lookup_lif_by_name() argument
646 for (lif = pif->pif_lifs; lif != NULL; lif = lif->lif_next) { in lookup_lif_by_name()
733 dhcp_pif_t *pif = lif->lif_pif; in verify_lif() local
738 isv6 = pif->pif_isv6; in verify_lif()
771 if (lifr.lifr_index != pif->pif_index) { in verify_lif()
774 lif->lif_name, pif->pif_index, lifr.lifr_index); in verify_lif()
778 if (pif->pif_under_ipmp) { in verify_lif()
779 (void) strlcpy(lifr.lifr_name, pif->pif_grifname, LIFNAMSIZ); in verify_lif()
789 if (lifr.lifr_index != pif->pif_grindex) { in verify_lif()
792 pif->pif_grindex, lifr.lifr_index); in verify_lif()
962 plumb_lif(dhcp_pif_t *pif, const in6_addr_t *addr) in plumb_lif() argument
972 for (lif = pif->pif_lifs; lif != NULL; lif = lif->lif_next) { in plumb_lif()
982 (void) strlcpy(lifr.lifr_name, pif->pif_name, sizeof (lifr.lifr_name)); in plumb_lif()
984 dhcpmsg(MSG_ERR, "plumb_lif: SIOCLIFADDIF %s", pif->pif_name); in plumb_lif()
1016 if (pif->pif_under_ipmp && !(lifr.lifr_flags & IFF_NOFAILOVER)) in plumb_lif()
1027 hold_pif(pif); in plumb_lif()
1028 if ((lif = insert_lif(pif, lifr.lifr_name, &error)) == NULL) in plumb_lif()
1107 dhcp_pif_t *pif; in attach_lif() local
1114 if ((pif = lookup_pif_by_name(pname, isv6)) != NULL) in attach_lif()
1115 hold_pif(pif); in attach_lif()
1116 else if ((pif = insert_pif(pname, isv6, error)) == NULL) in attach_lif()
1119 if (lookup_lif_by_name(lname, pif) != NULL) { in attach_lif()
1122 release_pif(pif); in attach_lif()
1128 return (insert_lif(pif, lname, error)); in attach_lif()
1145 dhcp_pif_t *pif = lif->lif_pif; in set_lif_dhcp() local
1147 fd = pif->pif_isv6 ? v6_sock_fd : v4_sock_fd; in set_lif_dhcp()
1188 if (pif->pif_under_ipmp && !(lifr.lifr_flags & IFF_NOFAILOVER)) in set_lif_dhcp()
1338 dhcp_pif_t *pif = lif->lif_pif; in open_ip_lif() local
1373 &pif->pif_index, sizeof (int)) == -1) { in open_ip_lif()
1391 ifindex = pif->pif_under_ipmp ? pif->pif_grindex : pif->pif_index; in open_ip_lif()
1411 if (pif->pif_under_ipmp && !(lifr.lifr_flags & IFF_NOFAILOVER)) { in open_ip_lif()
1458 if (bringup && pif->pif_under_ipmp) { in open_ip_lif()
1459 (void) strlcpy(lifr.lifr_name, pif->pif_grifname, LIFNAMSIZ); in open_ip_lif()
1615 dhcp_pif_t *pif; in get_max_mtu() local
1621 pif = isv6 ? v6root : v4root; in get_max_mtu()
1622 for (; pif != NULL; pif = pif->pif_next) { in get_max_mtu()
1623 for (lif = pif->pif_lifs; lif != NULL; in get_max_mtu()