Lines Matching refs:ifv

183 #define	TRUNK(ifv)	((ifv)->ifv_trunk)  argument
184 #define PARENT(ifv) (TRUNK(ifv)->parent) argument
278 static int vlan_inshash(struct ifvlantrunk *trunk, struct ifvlan *ifv);
279 static int vlan_remhash(struct ifvlantrunk *trunk, struct ifvlan *ifv);
315 static int vlan_config(struct ifvlan *ifv, struct ifnet *p, uint16_t tag,
318 static void vlan_capabilities(struct ifvlan *ifv);
432 vlan_inshash(struct ifvlantrunk *trunk, struct ifvlan *ifv) in vlan_inshash() argument
441 i = HASH(ifv->ifv_vid, trunk->hmask); in vlan_inshash()
443 if (ifv->ifv_vid == ifv2->ifv_vid) in vlan_inshash()
453 i = HASH(ifv->ifv_vid, trunk->hmask); in vlan_inshash()
455 CK_SLIST_INSERT_HEAD(&trunk->hash[i], ifv, ifv_list); in vlan_inshash()
462 vlan_remhash(struct ifvlantrunk *trunk, struct ifvlan *ifv) in vlan_remhash() argument
471 i = HASH(ifv->ifv_vid, trunk->hmask); in vlan_remhash()
473 if (ifv2 == ifv) { in vlan_remhash()
491 struct ifvlan *ifv; in vlan_growhash() local
515 while ((ifv = CK_SLIST_FIRST(&trunk->hash[i])) != NULL) { in vlan_growhash()
516 CK_SLIST_REMOVE(&trunk->hash[i], ifv, ifvlan, ifv_list); in vlan_growhash()
517 j = HASH(ifv->ifv_vid, n2 - 1); in vlan_growhash()
518 CK_SLIST_INSERT_HEAD(&hash2[j], ifv, ifv_list); in vlan_growhash()
534 struct ifvlan *ifv; in vlan_gethash() local
538 CK_SLIST_FOREACH(ifv, &trunk->hash[HASH(vid, trunk->hmask)], ifv_list) in vlan_gethash()
539 if (ifv->ifv_vid == vid) in vlan_gethash()
540 return (ifv); in vlan_gethash()
550 struct ifvlan *ifv;
554 CK_SLIST_FOREACH(ifv, &trunk->hash[i], ifv_list)
555 printf("%s ", ifv->ifv_ifp->if_xname);
570 vlan_inshash(struct ifvlantrunk *trunk, struct ifvlan *ifv) in vlan_inshash() argument
573 if (trunk->vlans[ifv->ifv_vid] != NULL) in vlan_inshash()
575 trunk->vlans[ifv->ifv_vid] = ifv; in vlan_inshash()
582 vlan_remhash(struct ifvlantrunk *trunk, struct ifvlan *ifv) in vlan_remhash() argument
585 trunk->vlans[ifv->ifv_vid] = NULL; in vlan_remhash()
683 struct ifvlan *ifv; in vlan_ifevent() local
697 VLAN_FOREACH(ifv, trunk) { in vlan_ifevent()
698 ifv->ifv_ifp->if_baudrate = ifp->if_baudrate; in vlan_ifevent()
713 struct ifvlan *ifv; in vlan_iflladdr() local
732 VLAN_FOREACH(ifv, trunk) { in vlan_iflladdr()
740 ifv_ifp = ifv->ifv_ifp; in vlan_iflladdr()
745 taskqueue_enqueue(taskqueue_thread, &ifv->lladdr_task); in vlan_iflladdr()
761 struct ifvlan *ifv; in vlan_ifdetach() local
779 VLAN_FOREACH_UNTIL_SAFE(ifv, ifp->if_vlantrunk, in vlan_ifdetach()
781 vlan_unconfig_locked(ifv->ifv_ifp, 1); in vlan_ifdetach()
794 struct ifvlan *ifv; in vlan_trunkdev() local
801 ifv = ifp->if_softc; in vlan_trunkdev()
803 if (ifv->ifv_trunk) in vlan_trunkdev()
804 ifp = PARENT(ifv); in vlan_trunkdev()
818 struct ifvlan *ifv; in vlan_tag() local
822 ifv = ifp->if_softc; in vlan_tag()
823 *vidp = ifv->ifv_vid; in vlan_tag()
830 struct ifvlan *ifv; in vlan_pcp() local
834 ifv = ifp->if_softc; in vlan_pcp()
835 *pcpp = ifv->ifv_pcp; in vlan_pcp()
846 struct ifvlan *ifv; in vlan_cookie() local
850 ifv = ifp->if_softc; in vlan_cookie()
851 return (ifv->ifv_cookie); in vlan_cookie()
861 struct ifvlan *ifv; in vlan_setcookie() local
865 ifv = ifp->if_softc; in vlan_setcookie()
866 ifv->ifv_cookie = cookie; in vlan_setcookie()
877 struct ifvlan *ifv; in vlan_devat() local
885 ifv = vlan_gethash(trunk, vid); in vlan_devat()
886 if (ifv) in vlan_devat()
887 ifp = ifv->ifv_ifp; in vlan_devat()
1067 struct ifvlan *ifv; in vlan_clone_create() local
1151 ifv = malloc(sizeof(struct ifvlan), M_VLAN, M_WAITOK | M_ZERO); in vlan_clone_create()
1152 ifp = ifv->ifv_ifp = if_alloc(IFT_ETHER); in vlan_clone_create()
1153 CK_SLIST_INIT(&ifv->vlan_mc_listhead); in vlan_clone_create()
1154 ifp->if_softc = ifv; in vlan_clone_create()
1190 error = vlan_config(ifv, p, vid, proto); in vlan_clone_create()
1203 free(ifv, M_VLAN); in vlan_clone_create()
1324 struct ifvlan *ifv = ifp->if_softc; in vlan_clone_modify_nl() local
1325 error = vlan_config(ifv, ifp_parent, attrs.vlan_id, attrs.vlan_proto); in vlan_clone_modify_nl()
1349 struct ifvlan *ifv = ifp->if_softc; in vlan_clone_dump_nl() local
1350 if (TRUNK(ifv) != NULL) in vlan_clone_dump_nl()
1351 parent_index = PARENT(ifv)->if_index; in vlan_clone_dump_nl()
1352 vlan_id = ifv->ifv_vid; in vlan_clone_dump_nl()
1353 vlan_proto = ifv->ifv_proto; in vlan_clone_dump_nl()
1375 struct ifvlan *ifv = ifp->if_softc; in vlan_clone_destroy() local
1391 taskqueue_drain(taskqueue_thread, &ifv->lladdr_task); in vlan_clone_destroy()
1394 free(ifv, M_VLAN); in vlan_clone_destroy()
1415 struct ifvlan *ifv; in vlan_transmit() local
1421 ifv = ifp->if_softc; in vlan_transmit()
1422 if (TRUNK(ifv) == NULL) { in vlan_transmit()
1427 p = PARENT(ifv); in vlan_transmit()
1462 if (!ether_8021q_frame(&m, ifp, p, &ifv->ifv_qtag)) { in vlan_transmit()
1484 struct ifvlan *ifv; in vlan_output() local
1492 ifv = ifp->if_softc; in vlan_output()
1494 if (TRUNK(ifv) == NULL) { in vlan_output()
1498 p = PARENT(ifv); in vlan_output()
1499 ifv = p->if_softc; in vlan_output()
1549 struct ifvlan *ifv; in vlan_input() local
1608 ifv = vlan_gethash(trunk, vid); in vlan_input()
1609 if (ifv == NULL || !UP_AND_RUNNING(ifv->ifv_ifp)) { in vlan_input()
1637 m->m_pkthdr.rcvif = ifv->ifv_ifp; in vlan_input()
1638 if_inc_counter(ifv->ifv_ifp, IFCOUNTER_IPACKETS, 1); in vlan_input()
1641 (*ifv->ifv_ifp->if_input)(ifv->ifv_ifp, m); in vlan_input()
1647 struct ifvlan *ifv; in vlan_lladdr_fn() local
1650 ifv = (struct ifvlan *)arg; in vlan_lladdr_fn()
1651 ifp = ifv->ifv_ifp; in vlan_lladdr_fn()
1662 vlan_config(struct ifvlan *ifv, struct ifnet *p, uint16_t vid, in vlan_config() argument
1688 if (ifv->ifv_trunk) { in vlan_config()
1689 trunk = ifv->ifv_trunk; in vlan_config()
1695 ifv->ifv_proto = proto; in vlan_config()
1697 if (ifv->ifv_vid != vid) { in vlan_config()
1698 int oldvid = ifv->ifv_vid; in vlan_config()
1701 vlan_remhash(trunk, ifv); in vlan_config()
1702 ifv->ifv_vid = vid; in vlan_config()
1703 error = vlan_inshash(trunk, ifv); in vlan_config()
1707 ifv->ifv_vid = oldvid; in vlan_config()
1709 ret = vlan_inshash(trunk, ifv); in vlan_config()
1732 ifv->ifv_vid = vid; /* must set this before vlan_inshash() */ in vlan_config()
1733 ifv->ifv_pcp = 0; /* Default: best effort delivery. */ in vlan_config()
1734 error = vlan_inshash(trunk, ifv); in vlan_config()
1737 ifv->ifv_proto = proto; in vlan_config()
1738 ifv->ifv_encaplen = ETHER_VLAN_ENCAP_LEN; in vlan_config()
1739 ifv->ifv_mintu = ETHERMIN; in vlan_config()
1740 ifv->ifv_pflags = 0; in vlan_config()
1741 ifv->ifv_capenable = -1; in vlan_config()
1742 ifv->ifv_capenable2 = -1; in vlan_config()
1754 ifv->ifv_mtufudge = 0; in vlan_config()
1763 ifv->ifv_mtufudge = ifv->ifv_encaplen; in vlan_config()
1766 ifv->ifv_trunk = trunk; in vlan_config()
1767 ifp = ifv->ifv_ifp; in vlan_config()
1773 ifp->if_mtu = p->if_mtu - ifv->ifv_mtufudge; in vlan_config()
1779 ifp->if_pcp = ifv->ifv_pcp; in vlan_config()
1799 vlan_capabilities(ifv); in vlan_config()
1806 TASK_INIT(&ifv->lladdr_task, 0, vlan_lladdr_fn, ifv); in vlan_config()
1817 taskqueue_enqueue(taskqueue_thread, &ifv->lladdr_task); in vlan_config()
1834 EVENTHANDLER_INVOKE(vlan_config, p, ifv->ifv_vid); in vlan_config()
1854 struct ifvlan *ifv; in vlan_unconfig_locked() local
1860 ifv = ifp->if_softc; in vlan_unconfig_locked()
1861 trunk = ifv->ifv_trunk; in vlan_unconfig_locked()
1872 while ((mc = CK_SLIST_FIRST(&ifv->vlan_mc_listhead)) != NULL) { in vlan_unconfig_locked()
1889 CK_SLIST_REMOVE_HEAD(&ifv->vlan_mc_listhead, mc_entries); in vlan_unconfig_locked()
1895 vlan_remhash(trunk, ifv); in vlan_unconfig_locked()
1896 ifv->ifv_trunk = NULL; in vlan_unconfig_locked()
1909 if (ifv->ifv_pflags) in vlan_unconfig_locked()
1921 EVENTHANDLER_INVOKE(vlan_unconfig, parent, ifv->ifv_vid); in vlan_unconfig_locked()
1929 struct ifvlan *ifv; in vlan_setflag() local
1934 ifv = ifp->if_softc; in vlan_setflag()
1947 if (status != (ifv->ifv_pflags & flag)) { in vlan_setflag()
1948 error = (*func)(PARENT(ifv), status); in vlan_setflag()
1951 ifv->ifv_pflags &= ~flag; in vlan_setflag()
1952 ifv->ifv_pflags |= status; in vlan_setflag()
1982 struct ifvlan *ifv; in vlan_link_state() local
1992 VLAN_FOREACH(ifv, trunk) { in vlan_link_state()
1993 ifv->ifv_ifp->if_baudrate = trunk->parent->if_baudrate; in vlan_link_state()
1994 if_link_state_change(ifv->ifv_ifp, in vlan_link_state()
2004 struct ifvlan *ifv; \
2007 ifv = ifp->if_softc; \
2009 if (TRUNK(ifv) != NULL) { \
2010 p = PARENT(ifv); \
2078 vlan_capabilities(struct ifvlan *ifv) in vlan_capabilities() argument
2090 p = PARENT(ifv); in vlan_capabilities()
2091 ifp = ifv->ifv_ifp; in vlan_capabilities()
2094 mena = p->if_capenable & ifv->ifv_capenable; in vlan_capabilities()
2095 mena2 = p->if_capenable2 & ifv->ifv_capenable2; in vlan_capabilities()
2217 struct ifvlan *ifv; in vlan_trunk_capabilities() local
2226 VLAN_FOREACH(ifv, trunk) in vlan_trunk_capabilities()
2227 vlan_capabilities(ifv); in vlan_trunk_capabilities()
2240 struct ifvlan *ifv; in vlan_ioctl() local
2249 ifv = ifp->if_softc; in vlan_ioctl()
2265 if (TRUNK(ifv) != NULL) { in vlan_ioctl()
2266 p = PARENT(ifv); in vlan_ioctl()
2297 trunk = TRUNK(ifv); in vlan_ioctl()
2301 (PARENT(ifv)->if_mtu - ifv->ifv_mtufudge) || in vlan_ioctl()
2303 (ifv->ifv_mintu - ifv->ifv_mtufudge)) in vlan_ioctl()
2354 error = vlan_config(ifv, p, vlr.vlr_tag, vlr.vlr_proto); in vlan_ioctl()
2374 if (TRUNK(ifv) != NULL) { in vlan_ioctl()
2375 strlcpy(vlr.vlr_parent, PARENT(ifv)->if_xname, in vlan_ioctl()
2377 vlr.vlr_tag = ifv->ifv_vid; in vlan_ioctl()
2378 vlr.vlr_proto = ifv->ifv_proto; in vlan_ioctl()
2390 if (TRUNK(ifv) != NULL) in vlan_ioctl()
2405 trunk = TRUNK(ifv); in vlan_ioctl()
2418 ifr->ifr_vlan_pcp = ifv->ifv_pcp; in vlan_ioctl()
2435 ifv->ifv_pcp = ifr->ifr_vlan_pcp; in vlan_ioctl()
2436 ifp->if_pcp = ifv->ifv_pcp; in vlan_ioctl()
2443 ifv->ifv_capenable = ifr->ifr_reqcap; in vlan_ioctl()
2444 trunk = TRUNK(ifv); in vlan_ioctl()
2449 vlan_capabilities(ifv); in vlan_ioctl()
2472 struct ifvlan *ifv; in vlan_snd_tag_alloc() local
2478 ifv = ifp->if_softc; in vlan_snd_tag_alloc()
2497 params->tls_rx.vlan_id = ifv->ifv_vid; in vlan_snd_tag_alloc()
2509 if (ifv->ifv_trunk != NULL) in vlan_snd_tag_alloc()
2510 parent = PARENT(ifv); in vlan_snd_tag_alloc()