* Update link-layer header for given @lle after * interface lladdr was changed. */
| 391 | * interface lladdr was changed. |
| 392 | */ |
| 393 | static int |
| 394 | llentry_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 |
nothing calls this directly
no test coverage detected