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; | |||||
int llt_spare; | |||||
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 All 35 Lines | |||||
struct lltable *lltable_allocate_htbl(uint32_t hsize); | struct lltable *lltable_allocate_htbl(uint32_t hsize); | ||||
void lltable_free(struct lltable *); | void lltable_free(struct lltable *); | ||||
void lltable_link(struct lltable *llt); | void lltable_link(struct lltable *llt); | ||||
void lltable_prefix_free(int, struct sockaddr *, | void lltable_prefix_free(int, struct sockaddr *, | ||||
struct sockaddr *, u_int); | struct sockaddr *, u_int); | ||||
int lltable_sysctl_dumparp(int, struct sysctl_req *); | int lltable_sysctl_dumparp(int, struct sysctl_req *); | ||||
int htable_link_entry(struct lltable *, struct llentry *); | |||||
int htable_unlink_entry(struct llentry *); | |||||
size_t llentry_free(struct llentry *); | size_t llentry_free(struct llentry *); | ||||
/* helper functions */ | /* helper functions */ | ||||
size_t lltable_drop_entry_queue(struct llentry *); | size_t lltable_drop_entry_queue(struct llentry *); | ||||
void lltable_set_entry_addr(struct ifnet *ifp, struct llentry *lle, | void lltable_set_entry_addr(struct ifnet *ifp, struct llentry *lle, | ||||
const char *linkhdr, size_t linkhdrsize, int lladdr_off); | const char *linkhdr, size_t linkhdrsize, int lladdr_off); | ||||
int lltable_try_set_entry_addr(struct ifnet *ifp, struct llentry *lle, | int lltable_try_set_entry_addr(struct ifnet *ifp, struct llentry *lle, | ||||
const char *linkhdr, size_t linkhdrsize, int lladdr_off); | const char *linkhdr, size_t linkhdrsize, int lladdr_off); | ||||
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 |