MCPcopy Create free account
hub / github.com/F-Stack/f-stack / pfi_initialize_vnet

Function pfi_initialize_vnet

freebsd/netpfil/pf/pf_if.c:114–160  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

112 MTX_DEF);
113
114void
115pfi_initialize_vnet(void)
116{
117 struct pfi_list kifs = LIST_HEAD_INITIALIZER();
118 struct epoch_tracker et;
119 struct pfi_kkif *kif;
120 struct ifg_group *ifg;
121 struct ifnet *ifp;
122 int nkifs;
123
124 V_pfi_buffer_max = 64;
125 V_pfi_buffer = malloc(V_pfi_buffer_max * sizeof(*V_pfi_buffer),
126 PFI_MTYPE, M_WAITOK);
127
128 nkifs = 1; /* one for V_pfi_all */
129 IFNET_RLOCK();
130 CK_STAILQ_FOREACH(ifg, &V_ifg_head, ifg_next)
131 nkifs++;
132 CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link)
133 nkifs++;
134
135 for (int n = 0; n < nkifs; n++) {
136 kif = pf_kkif_create(M_WAITOK);
137 LIST_INSERT_HEAD(&kifs, kif, pfik_list);
138 }
139
140 NET_EPOCH_ENTER(et);
141 PF_RULES_WLOCK();
142 kif = LIST_FIRST(&kifs);
143 LIST_REMOVE(kif, pfik_list);
144 V_pfi_all = pfi_kkif_attach(kif, IFG_ALL);
145 CK_STAILQ_FOREACH(ifg, &V_ifg_head, ifg_next) {
146 kif = LIST_FIRST(&kifs);
147 LIST_REMOVE(kif, pfik_list);
148 pfi_attach_ifgroup(ifg, kif);
149 }
150 CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) {
151 kif = LIST_FIRST(&kifs);
152 LIST_REMOVE(kif, pfik_list);
153 pfi_attach_ifnet(ifp, kif);
154 }
155 PF_RULES_WUNLOCK();
156 NET_EPOCH_EXIT(et);
157 IFNET_RUNLOCK();
158
159 MPASS(LIST_EMPTY(&kifs));
160}
161
162void
163pfi_initialize(void)

Callers 1

pfattach_vnetFunction · 0.85

Calls 5

mallocFunction · 0.85
pf_kkif_createFunction · 0.85
pfi_kkif_attachFunction · 0.85
pfi_attach_ifgroupFunction · 0.85
pfi_attach_ifnetFunction · 0.85

Tested by

no test coverage detected