NUD_PERMANENT
if (ndm->ndm_state && !(ndm->ndm_state & NUD_PERMANENT)) {
if (ndm->ndm_state && !(ndm->ndm_state & NUD_PERMANENT)) {
if (ndm->ndm_state & NUD_PERMANENT) {
if (!(ndm->ndm_state & (NUD_PERMANENT|NUD_REACHABLE))) {
if (f->state & (NUD_PERMANENT | NUD_NOARP))
if (f->state & (NUD_PERMANENT | NUD_NOARP))
#define VXLAN_FDB_FLUSH_ALLOWED_NDM_STATES (NUD_PERMANENT | NUD_NOARP)
.state_mask = NUD_PERMANENT | NUD_NOARP,
NUD_REACHABLE | NUD_PERMANENT,
NUD_REACHABLE | NUD_PERMANENT,
NUD_REACHABLE | NUD_PERMANENT,
#define NUD_VALID (NUD_PERMANENT|NUD_NOARP|NUD_REACHABLE|NUD_PROBE|NUD_STALE|NUD_DELAY)
#define NUD_CONNECTED (NUD_PERMANENT|NUD_NOARP|NUD_REACHABLE)
{ NUD_PERMANENT, "permanent"})
error = neigh_update(neigh, llc_oui, NUD_PERMANENT,
if (source && !(state & NUD_PERMANENT) && !(state & NUD_NOARP) &&
if (!source && !(state & NUD_PERMANENT)) {
if (is_sticky && (state & NUD_PERMANENT))
if (state & NUD_PERMANENT) {
if (!p && !(ndm->ndm_state & NUD_PERMANENT)) {
if (!(ndm->ndm_state & (NUD_PERMANENT|NUD_NOARP|NUD_REACHABLE))) {
if (ndm_state & NUD_PERMANENT)
return NUD_PERMANENT;
#define FDB_FLUSH_ALLOWED_NDM_STATES (NUD_PERMANENT | NUD_NOARP)
if ((state & (NUD_PERMANENT | NUD_IN_TIMER)) ||
(old & (NUD_NOARP | NUD_PERMANENT)))
new = old & ~NUD_PERMANENT;
if (((new ^ old) & NUD_PERMANENT) || gc_update)
exempt_from_gc = n->nud_state & NUD_PERMANENT ||
!!(ndm->ndm_state & NUD_PERMANENT));
bool ndm_permanent = ndm->ndm_state & NUD_PERMANENT;
state = READ_ONCE(neigh->nud_state) & ~NUD_PERMANENT;
(n->nud_state & NUD_PERMANENT ||
if (ndm->ndm_state && !(ndm->ndm_state & NUD_PERMANENT)) {
if (!(ndm->ndm_state & NUD_PERMANENT)) {
NLM_F_MULTI, NUD_PERMANENT);
state = NUD_PERMANENT;
if (neigh->nud_state&NUD_PERMANENT)
hdr->ndm_state |= NUD_PERMANENT;
fill_neigh_req_header(&req->_hdr, family, NUD_PERMANENT, dev);