diff options
author | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2014-12-09 00:48:08 +0000 |
---|---|---|
committer | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2014-12-09 00:48:08 +0000 |
commit | ee7e9a4e17ff3579541feb17ec6b1699c2be40e6 (patch) | |
tree | 0f0168cc8c2e05919c4af0ef808e4f0d800124eb /sys/net/if_llatbl.h | |
parent | d82ed5051c95a39ff9a247ef0819dae550474d58 (diff) | |
download | src-ee7e9a4e17ff3579541feb17ec6b1699c2be40e6.tar.gz src-ee7e9a4e17ff3579541feb17ec6b1699c2be40e6.zip |
* Do not assume lle has sockaddr key after struct lle:
use llt_fill_sa_entry() llt method to store lle address in sa.
* Eliminate L3_ADDR macro and either reference IPv4/IPv6 address
directly from lle or use newly-created llt_fill_sa_entry().
* Do not store sockaddr inside arp/ndp lle anymore.
Notes
Notes:
svn path=/projects/routing/; revision=275628
Diffstat (limited to 'sys/net/if_llatbl.h')
-rw-r--r-- | sys/net/if_llatbl.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/sys/net/if_llatbl.h b/sys/net/if_llatbl.h index bc642755e0e1..de4ad69bf13f 100644 --- a/sys/net/if_llatbl.h +++ b/sys/net/if_llatbl.h @@ -135,10 +135,6 @@ struct llentry { #define ln_timer_ch lle_timer.ln_timer_ch #define la_timer lle_timer.la_timer -/* XXX bad name */ -#define L3_ADDR(lle) ((struct sockaddr *)(&lle[1])) -#define L3_ADDR_LEN(lle) (((struct sockaddr *)(&lle[1]))->sa_len) - #ifndef LLTBL_HASHTBL_SIZE #define LLTBL_HASHTBL_SIZE 32 /* default 32 ? */ #endif @@ -165,6 +161,7 @@ typedef void (llt_unlink_entry_t)(struct llentry *); typedef int (llt_prepare_sentry_t)(struct lltable *, struct llentry *, struct rt_addrinfo *); typedef const void *(llt_get_sa_addr_t)(const struct sockaddr *l3addr); +typedef void (llt_fill_sa_entry_t)(const struct llentry *, struct sockaddr *); typedef int (llt_foreach_cb_t)(struct lltable *, struct llentry *, void *); typedef int (llt_foreach_entry_t)(struct lltable *, llt_foreach_cb_t *, void *); @@ -188,6 +185,7 @@ struct lltable { llt_unlink_entry_t *llt_unlink_entry; llt_prepare_sentry_t *llt_prepare_static_entry; llt_get_sa_addr_t *llt_get_sa_addr; + llt_fill_sa_entry_t *llt_fill_sa_entry; llt_free_tbl_t *llt_free_tbl; }; @@ -271,6 +269,16 @@ lltable_unlink_entry(struct lltable *llt, struct llentry *lle) llt->llt_unlink_entry(lle); } +static __inline void +lltable_fill_sa_entry(const struct llentry *lle, struct sockaddr *sa) +{ + struct lltable *llt; + + llt = lle->lle_tbl; + + llt->llt_fill_sa_entry(lle, sa); +} + int lla_rt_output(struct rt_msghdr *, struct rt_addrinfo *); #include <sys/eventhandler.h> |