Changeset View
Changeset View
Standalone View
Standalone View
sys/net/if_llatbl.h
Show First 20 Lines • Show All 145 Lines • ▼ Show 20 Lines | |||||
typedef int (llt_dump_entry_t)(struct lltable *, struct llentry *, | typedef int (llt_dump_entry_t)(struct lltable *, struct llentry *, | ||||
struct sysctl_req *); | struct sysctl_req *); | ||||
typedef uint32_t (llt_hash_t)(const struct llentry *, uint32_t); | typedef uint32_t (llt_hash_t)(const struct llentry *, uint32_t); | ||||
typedef int (llt_match_prefix_t)(const struct sockaddr *, | typedef int (llt_match_prefix_t)(const struct sockaddr *, | ||||
const struct sockaddr *, u_int, struct llentry *); | const struct sockaddr *, u_int, struct llentry *); | ||||
typedef void (llt_free_entry_t)(struct lltable *, struct llentry *); | typedef void (llt_free_entry_t)(struct lltable *, struct llentry *); | ||||
typedef void (llt_fill_sa_entry_t)(const struct llentry *, struct sockaddr *); | typedef void (llt_fill_sa_entry_t)(const struct llentry *, struct sockaddr *); | ||||
typedef void (llt_free_tbl_t)(struct lltable *); | typedef void (llt_free_tbl_t)(struct lltable *); | ||||
typedef void (llt_link_entry_t)(struct lltable *, struct llentry *); | typedef int (llt_link_entry_t)(struct lltable *, struct llentry *); | ||||
typedef void (llt_unlink_entry_t)(struct llentry *); | typedef int (llt_unlink_entry_t)(struct llentry *); | ||||
typedef void (llt_mark_used_t)(struct llentry *); | typedef void (llt_mark_used_t)(struct llentry *); | ||||
typedef int (llt_foreach_cb_t)(struct lltable *, struct llentry *, void *); | typedef int (llt_foreach_cb_t)(struct lltable *, struct llentry *, void *); | ||||
typedef int (llt_foreach_entry_t)(struct lltable *, llt_foreach_cb_t *, void *); | typedef int (llt_foreach_entry_t)(struct lltable *, llt_foreach_cb_t *, void *); | ||||
struct lltable { | struct lltable { | ||||
SLIST_ENTRY(lltable) llt_link; | SLIST_ENTRY(lltable) llt_link; | ||||
int llt_af; | int llt_af; | ||||
int llt_hsize; | int llt_hsize; | ||||
int llt_entries; | |||||
melifaro: Just for the sake of history: this change makes llt_lookup() the last pointer in the cache line… | |||||
int llt_maxentries; | |||||
struct llentries *lle_head; | struct llentries *lle_head; | ||||
struct ifnet *llt_ifp; | struct ifnet *llt_ifp; | ||||
llt_lookup_t *llt_lookup; | llt_lookup_t *llt_lookup; | ||||
llt_alloc_t *llt_alloc_entry; | llt_alloc_t *llt_alloc_entry; | ||||
llt_delete_t *llt_delete_entry; | llt_delete_t *llt_delete_entry; | ||||
llt_prefix_free_t *llt_prefix_free; | llt_prefix_free_t *llt_prefix_free; | ||||
llt_dump_entry_t *llt_dump_entry; | llt_dump_entry_t *llt_dump_entry; | ||||
▲ Show 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | |||||
int lltable_calc_llheader(struct ifnet *ifp, int family, char *lladdr, | int lltable_calc_llheader(struct ifnet *ifp, int family, char *lladdr, | ||||
char *buf, size_t *bufsize, int *lladdr_off); | char *buf, size_t *bufsize, int *lladdr_off); | ||||
void lltable_update_ifaddr(struct lltable *llt); | void lltable_update_ifaddr(struct lltable *llt); | ||||
struct llentry *lltable_alloc_entry(struct lltable *llt, u_int flags, | struct llentry *lltable_alloc_entry(struct lltable *llt, u_int flags, | ||||
const struct sockaddr *l4addr); | const struct sockaddr *l4addr); | ||||
void lltable_free_entry(struct lltable *llt, struct llentry *lle); | void lltable_free_entry(struct lltable *llt, struct llentry *lle); | ||||
int lltable_delete_addr(struct lltable *llt, u_int flags, | int lltable_delete_addr(struct lltable *llt, u_int flags, | ||||
const struct sockaddr *l3addr); | const struct sockaddr *l3addr); | ||||
void lltable_link_entry(struct lltable *llt, struct llentry *lle); | int lltable_link_entry(struct lltable *llt, struct llentry *lle); | ||||
void lltable_unlink_entry(struct lltable *llt, struct llentry *lle); | int lltable_unlink_entry(struct lltable *llt, struct llentry *lle); | ||||
void lltable_fill_sa_entry(const struct llentry *lle, struct sockaddr *sa); | void lltable_fill_sa_entry(const struct llentry *lle, struct sockaddr *sa); | ||||
struct ifnet *lltable_get_ifp(const struct lltable *llt); | struct ifnet *lltable_get_ifp(const struct lltable *llt); | ||||
int lltable_get_af(const struct lltable *llt); | int lltable_get_af(const struct lltable *llt); | ||||
int lltable_foreach_lle(struct lltable *llt, llt_foreach_cb_t *f, | int lltable_foreach_lle(struct lltable *llt, llt_foreach_cb_t *f, | ||||
void *farg); | void *farg); | ||||
/* | /* | ||||
* Generic link layer address lookup function. | * Generic link layer address lookup function. | ||||
Show All 32 Lines |
Just for the sake of history: this change makes llt_lookup() the last pointer in the cache line (given 64B size). Eventually we will need to reshuffle fields here a bit.