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

Function encap_register_srcaddr

freebsd/netinet/ip_encap.c:185–213  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

183EVENTHANDLER_DEFINE(ifaddr_event_ext, srcaddr_change_event, NULL, 0);
184
185static struct srcaddrtab *
186encap_register_srcaddr(struct srcaddrtab_head *head, encap_srcaddr_t func,
187 void *arg, int mflags)
188{
189 struct srcaddrtab *p, *tmp;
190
191 if (func == NULL)
192 return (NULL);
193 p = malloc(sizeof(*p), M_NETADDR, mflags);
194 if (p == NULL)
195 return (NULL);
196 p->srcaddr = func;
197 p->arg = arg;
198
199 SRCADDR_WLOCK();
200 CK_LIST_FOREACH(tmp, head, chain) {
201 if (func == tmp->srcaddr && arg == tmp->arg)
202 break;
203 }
204 if (tmp == NULL)
205 CK_LIST_INSERT_HEAD(head, p, chain);
206 SRCADDR_WUNLOCK();
207
208 if (tmp != NULL) {
209 free(p, M_NETADDR);
210 p = tmp;
211 }
212 return (p);
213}
214
215static int
216encap_unregister_srcaddr(struct srcaddrtab_head *head,

Callers 2

Calls 2

mallocFunction · 0.85
freeFunction · 0.50

Tested by

no test coverage detected