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

Function llentry_update_ifaddr

freebsd/net/if_llatbl.c:393–422  ·  view source on GitHub ↗

* Update link-layer header for given @lle after * interface lladdr was changed. */

Source from the content-addressed store, hash-verified

391 * interface lladdr was changed.
392 */
393static int
394llentry_update_ifaddr(struct lltable *llt, struct llentry *lle, void *farg)
395{
396 struct ifnet *ifp;
397 u_char linkhdr[LLE_MAX_LINKHDR];
398 size_t linkhdrsize;
399 u_char *lladdr;
400 int lladdr_off;
401
402 ifp = (struct ifnet *)farg;
403
404 lladdr = lle->ll_addr;
405
406 LLE_WLOCK(lle);
407 if ((lle->la_flags & LLE_VALID) == 0) {
408 LLE_WUNLOCK(lle);
409 return (0);
410 }
411
412 if ((lle->la_flags & LLE_IFADDR) != 0)
413 lladdr = IF_LLADDR(ifp);
414
415 linkhdrsize = sizeof(linkhdr);
416 lltable_calc_llheader(ifp, llt->llt_af, lladdr, linkhdr, &linkhdrsize,
417 &lladdr_off);
418 memcpy(lle->r_linkdata, linkhdr, linkhdrsize);
419 LLE_WUNLOCK(lle);
420
421 return (0);
422}
423
424/*
425 * Update all calculated headers for given @llt

Callers

nothing calls this directly

Calls 2

lltable_calc_llheaderFunction · 0.85
memcpyFunction · 0.50

Tested by

no test coverage detected