diff options
author | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2015-09-18 07:18:10 +0000 |
---|---|---|
committer | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2015-09-18 07:18:10 +0000 |
commit | 41a31e783e622efa69c3f90202560eecee910917 (patch) | |
tree | 4da015d893659eb0ec8007df8d80bfd8714a5444 | |
parent | 53639aebb75f207e64b014e0d95fae845f42f838 (diff) | |
download | src-41a31e783e622efa69c3f90202560eecee910917.tar.gz src-41a31e783e622efa69c3f90202560eecee910917.zip |
* Simplify logic besides llchange variable.
* Refresh nd6_is_router() comment.
Notes
Notes:
svn path=/head/; revision=287952
-rw-r--r-- | sys/netinet6/nd6.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/sys/netinet6/nd6.c b/sys/netinet6/nd6.c index 5d4d594e2fc0..9580d65aad3c 100644 --- a/sys/netinet6/nd6.c +++ b/sys/netinet6/nd6.c @@ -1618,15 +1618,15 @@ nd6_is_router(int type, int code, int is_new, int old_addr, int new_addr, * neighbor cache, this is similar to (6). * This case is rare but we figured that we MUST NOT set IsRouter. * - * newentry olladdr lladdr llchange NS RS RA redir + * is_new old_addr new_addr NS RS RA redir * D R - * 0 n n -- (1) c ? s - * 0 y n -- (2) c s s - * 0 n y -- (3) c s s - * 0 y y n (4) c s s - * 0 y y y (5) c s s - * 1 -- n -- (6) c c c s - * 1 -- y -- (7) c c s c s + * 0 n n (1) c ? s + * 0 y n (2) c s s + * 0 n y (3) c s s + * 0 y y (4) c s s + * 0 y y (5) c s s + * 1 -- n (6) c c c s + * 1 -- y (7) c c s c s * * (c=clear s=set) */ @@ -1751,14 +1751,16 @@ nd6_cache_lladdr(struct ifnet *ifp, struct in6_addr *from, char *lladdr, if (olladdr && lladdr) { llchange = bcmp(lladdr, &ln->ll_addr, ifp->if_addrlen); - } else + } else if (!olladdr && lladdr) + llchange = 1; + else llchange = 0; /* * newentry olladdr lladdr llchange (*=record) * 0 n n -- (1) * 0 y n -- (2) - * 0 n y -- (3) * STALE + * 0 n y y (3) * STALE * 0 y y n (4) * * 0 y y y (5) * STALE * 1 -- n -- (6) NOSTATE(= PASSIVE) @@ -1776,8 +1778,7 @@ nd6_cache_lladdr(struct ifnet *ifp, struct in6_addr *from, char *lladdr, } if (!is_newentry) { - if ((!olladdr && lladdr != NULL) || /* (3) */ - (olladdr && lladdr != NULL && llchange)) { /* (5) */ + if (llchange != 0) { /* (3,5) */ do_update = 1; newstate = ND6_LLINFO_STALE; } else /* (1-2,4) */ |