HomeFreeBSD

* Split allocation and table linking for lle's.

Description

  • Split allocation and table linking for lle's. Before that, the logic besides lle_create() was the following: return existing if found, create if not. This behaviour was error-prone since we had to deal with 'sudden' static<>dynamic lle changes. This commit fixes bunch of different issues like:
    • refcount leak when lle is converted to static. Simple check case: console 1: while true; do for i in arp -an|awk '$4~/incomp/{print$2}'|tr -d '()'; do arp -s $i 00:22:44:66:88:00 ; arp -d $i; done; done console 2: ping -f any-dead-host-in-L2 console 3:
      1. watch for memory consumption: vmstat -m | awk '$1~/lltable/{print$2}'
    • possible problems in arptimer() / nd6_timer() when dropping/reacquiring lock. New logic explicitly handles use-or-create cases in every lla_create user. Basically, most of the changes are purely mechanical. However, we explicitly avoid using existing lle's for interface/static LLE records.
  • While here, call lle_event handlers on all real table lle change.
  • Create lltable_free_entry() calling existing per-lltable lle_free_t callback for entry deletion

Details

Provenance
melifaroAuthored on
Parents
rS286954: Add the arm64 minidump header. This was missed from r286953.
Branches
Unknown
Tags
Unknown