LLTABLE_LOCK_ASSERT();
- if (llt->llt_ifp->if_flags & IFF_LOOPBACK)
- return (0);
+ if (llt->llt_ifp->if_flags & IFF_LOOPBACK) {
+ return 0;
+ }
error = 0;
IF_AFDATA_RLOCK(llt->llt_ifp, llt->llt_af);
(llt_foreach_cb_t *)llt->llt_dump_entry, wr);
IF_AFDATA_RUNLOCK(llt->llt_ifp, llt->llt_af);
- return (error);
+ return error;
}
/*
SLIST_FOREACH(llt, &lltables, llt_link) {
if (llt->llt_af == af) {
error = lltable_dump_af(llt, wr);
- if (error != 0)
+ if (error != 0) {
goto done;
+ }
}
}
done:
LLTABLE_RUNLOCK();
- return (error);
+ return error;
}
/*
for (i = 0; i < llt->llt_hsize; i++) {
LIST_FOREACH_SAFE(lle, &llt->lle_head[i], lle_next, next) {
error = f(llt, lle, farg);
- if (error != 0)
+ if (error != 0) {
break;
+ }
}
}
- return (error);
+ return error;
}
static void
struct llentries *lleh;
uint32_t hashidx;
- if ((lle->la_flags & LLE_LINKED) != 0)
+ if ((lle->la_flags & LLE_LINKED) != 0) {
return;
+ }
IF_AFDATA_WLOCK_ASSERT(llt->llt_ifp, llt->llt_af);
LIST_INSERT_HEAD(&pmd->dchain, lle, lle_chain);
}
- return (0);
+ return 0;
}
static void
IF_AFDATA_WUNLOCK(llt->llt_ifp, llt->llt_af);
LIST_FOREACH_SAFE(lle, &pmd.dchain, lle_chain, next)
- lltable_free_entry(llt, lle);
+ lltable_free_entry(llt, lle);
}
static void
htable_free_tbl(struct lltable *llt)
{
-
FREE(llt->lle_head, M_LLTABLE);
FREE(llt, M_LLTABLE);
}
struct llentry *lle, *next;
LIST_FOREACH_SAFE(lle, head, lle_chain, next)
- llt->llt_unlink_entry(lle);
+ llt->llt_unlink_entry(lle);
}
/*
}
KASSERT(lle->la_numheld == 0,
- ("%s: la_numheld %d > 0, pkts_droped %zd", __func__,
- lle->la_numheld, pkts_dropped));
+ ("%s: la_numheld %d > 0, pkts_droped %zd", __func__,
+ lle->la_numheld, pkts_dropped));
- return (pkts_dropped);
+ return pkts_dropped;
}
void
if ((lle->la_flags & LLE_DELETED) != 0) {
IF_AFDATA_WUNLOCK(ifp, lle->lle_tbl->llt_af);
LLE_FREE_LOCKED(lle);
- return (0);
+ return 0;
}
/* Update data */
LLE_REMREF(lle);
- return (1);
+ return 1;
}
/*
*lladdr_off = ereq.lladdr_off;
}
- return (error);
+ return error;
}
/*
LLE_WLOCK(lle);
if ((lle->la_flags & LLE_VALID) == 0) {
LLE_WUNLOCK(lle);
- return (0);
+ return 0;
}
- if ((lle->la_flags & LLE_IFADDR) != 0)
+ if ((lle->la_flags & LLE_IFADDR) != 0) {
lladdr = (void *)IF_LLADDR(ifp);
+ }
linkhdrsize = sizeof(linkhdr);
lltable_calc_llheader(ifp, llt->llt_af, (void *)lladdr, (void *)linkhdr, &linkhdrsize,
memcpy(lle->r_linkdata, linkhdr, linkhdrsize);
LLE_WUNLOCK(lle);
- return (0);
+ return 0;
}
/*
void
lltable_update_ifaddr(struct lltable *llt)
{
-
- if (llt->llt_ifp->if_flags & IFF_LOOPBACK)
+ if (llt->llt_ifp->if_flags & IFF_LOOPBACK) {
return;
+ }
IF_AFDATA_WLOCK(llt->llt_ifp, llt->llt_af);
lltable_foreach_lle(llt, llentry_update_ifaddr, llt->llt_ifp);
LLE_FREE_LOCKED(lle);
- return (pkts_dropped);
+ return pkts_dropped;
}
/*
if (la != NULL) {
LLE_ADDREF(la);
LLE_WUNLOCK(la);
- return (la);
+ return la;
}
if ((ifp->if_flags & IFF_NOARP) == 0) {
la = lltable_alloc_entry(lt, 0, (struct sockaddr *)dst);
- if (la == NULL)
- return (NULL);
+ if (la == NULL) {
+ return NULL;
+ }
IF_AFDATA_WLOCK(ifp, lt->llt_af);
LLE_WLOCK(la);
/* Prefer any existing LLE over newly-created one */
la_tmp = lla_lookup(lt, LLE_EXCLUSIVE, (struct sockaddr *)dst);
- if (la_tmp == NULL)
+ if (la_tmp == NULL) {
lltable_link_entry(lt, la);
+ }
IF_AFDATA_WUNLOCK(ifp, lt->llt_af);
if (la_tmp != NULL) {
lltable_free_entry(lt, la);
LLE_WUNLOCK(la);
}
- return (la);
+ return la;
}
/*
LLE_WLOCK(lle);
LIST_INSERT_HEAD(dchain, lle, lle_chain);
- return (0);
+ return 0;
}
/*
LIST_FOREACH_SAFE(lle, &dchain, lle_chain, next) {
#if 0
- if (thread_call_cancel(lle->lle_timer) == TRUE)
+ if (thread_call_cancel(lle->lle_timer) == TRUE) {
LLE_REMREF(lle);
+ }
#endif
llentry_free(lle);
}
void
lltable_drain(int af)
{
- struct lltable *llt;
- struct llentry *lle;
+ struct lltable *llt;
+ struct llentry *lle;
register int i;
LLTABLE_RLOCK();
SLIST_FOREACH(llt, &lltables, llt_link) {
- if (llt->llt_af != af)
+ if (llt->llt_af != af) {
continue;
+ }
- for (i=0; i < llt->llt_hsize; i++) {
+ for (i = 0; i < llt->llt_hsize; i++) {
LIST_FOREACH(lle, &llt->lle_head[i], lle_next) {
LLE_WLOCK(lle);
if (lle->la_hold) {
if (lle == NULL) {
IF_AFDATA_WUNLOCK(ifp, llt->llt_af);
- return (ENOENT);
+ return ENOENT;
}
if ((lle->la_flags & LLE_IFADDR) != 0 && (flags & LLE_IFADDR) == 0) {
IF_AFDATA_WUNLOCK(ifp, llt->llt_af);
LLE_WUNLOCK(lle);
- return (EPERM);
+ return EPERM;
}
lltable_unlink_entry(llt, lle);
llt->llt_delete_entry(llt, lle);
- return (0);
+ return 0;
}
void
LLTABLE_RLOCK();
SLIST_FOREACH(llt, &lltables, llt_link) {
- if (llt->llt_af != af)
+ if (llt->llt_af != af) {
continue;
+ }
llt->llt_prefix_free(llt, addr, mask, flags);
}
MALLOC(llt->lle_head, struct llentries *, sizeof(struct llentries) * hsize,
M_LLTABLE, M_WAITOK | M_ZERO);
- for (i = 0; i < llt->llt_hsize; i++)
+ for (i = 0; i < llt->llt_hsize; i++) {
LIST_INIT(&llt->lle_head[i]);
+ }
/* Set some default callbacks */
llt->llt_link_entry = htable_link_entry;
llt->llt_foreach_entry = htable_foreach_lle;
llt->llt_free_tbl = htable_free_tbl;
- return (llt);
+ return llt;
}
/*
int
lltable_foreach_lle(struct lltable *llt, llt_foreach_cb_t *f, void *farg)
{
- return (llt->llt_foreach_entry(llt, f, farg));
+ return llt->llt_foreach_entry(llt, f, farg);
}
struct llentry *
lltable_alloc_entry(struct lltable *llt, u_int flags,
const struct sockaddr *l3addr)
{
- return (llt->llt_alloc_entry(llt, flags, l3addr));
+ return llt->llt_alloc_entry(llt, flags, l3addr);
}
void
struct ifnet *
lltable_get_ifp(const struct lltable *llt)
{
- return (llt->llt_ifp);
+ return llt->llt_ifp;
}
int
lltable_get_af(const struct lltable *llt)
{
- return (llt->llt_af);
+ return llt->llt_af;
}
-#define ifnet_byindex(index) ifindex2ifnet[(index)]
+#define ifnet_byindex(index) ifindex2ifnet[(index)]
/*
* Called in route_output when rtm_flags contains RTF_LLDATA.
LLTABLE_RLOCK();
SLIST_FOREACH(llt, &lltables, llt_link) {
if (llt->llt_af == dst->sa_family &&
- llt->llt_ifp == ifp)
+ llt->llt_ifp == ifp) {
break;
+ }
}
LLTABLE_RUNLOCK();
KASSERT(llt != NULL, ("Yep, ugly hacks are bad\n"));
case RTM_ADD:
/* Add static LLE */
laflags = 0;
- if (rtm->rtm_rmx.rmx_expire == 0)
+ if (rtm->rtm_rmx.rmx_expire == 0) {
laflags = LLE_STATIC;
+ }
lle = lltable_alloc_entry(llt, laflags, dst);
- if (lle == NULL)
- return (ENOMEM);
+ if (lle == NULL) {
+ return ENOMEM;
+ }
#if 0
linkhdrsize = sizeof(linkhdr);
if (lltable_calc_llheader(ifp, dst->sa_family, LLADDR(dl),
- (void *)linkhdr, &linkhdrsize, &lladdr_off) != 0)
- return (EINVAL);
+ (void *)linkhdr, &linkhdrsize, &lladdr_off) != 0) {
+ return EINVAL;
+ }
#endif
lltable_set_entry_addr(ifp, lle, LLADDR(dl));
- if (rtm->rtm_flags & RTF_ANNOUNCE)
+ if (rtm->rtm_flags & RTF_ANNOUNCE) {
lle->la_flags |= LLE_PUB;
+ }
lle->la_expire = rtm->rtm_rmx.rmx_expire;
laflags = lle->la_flags;
IF_AFDATA_WUNLOCK(ifp, llt->llt_af);
LLE_WUNLOCK(lle_tmp);
lltable_free_entry(llt, lle);
- return (EPERM);
+ return EPERM;
}
/* Unlink existing entry from table */
lltable_unlink_entry(llt, lle_tmp);
LLE_WUNLOCK(lle);
#ifdef INET
/* gratuitous ARP */
- if ((laflags & LLE_PUB) && dst->sa_family == AF_INET)
+ if ((laflags & LLE_PUB) && dst->sa_family == AF_INET) {
dlil_send_arp(ifp, ARPOP_REQUEST, NULL, dst, NULL, dst, 0);
+ }
#endif
break;
case RTM_DELETE:
- return (lltable_delete_addr(llt, 0, dst));
+ return lltable_delete_addr(llt, 0, dst);
default:
error = EINVAL;
}
- return (error);
+ return error;
}
-