Changeset View
Changeset View
Standalone View
Standalone View
sys/net/if_llatbl.h
Show First 20 Lines • Show All 134 Lines • ▼ Show 20 Lines | |||||
#define LLE_FREE(lle) do { \ | #define LLE_FREE(lle) do { \ | ||||
LLE_WLOCK(lle); \ | LLE_WLOCK(lle); \ | ||||
LLE_FREE_LOCKED(lle); \ | LLE_FREE_LOCKED(lle); \ | ||||
} while (0) | } while (0) | ||||
typedef struct llentry *(llt_lookup_t)(struct lltable *, u_int flags, | typedef struct llentry *(llt_lookup_t)(struct lltable *, u_int flags, | ||||
const struct sockaddr *l3addr); | const void *l3addr); | ||||
typedef struct llentry *(llt_alloc_t)(struct lltable *, u_int flags, | typedef struct llentry *(llt_alloc_t)(struct lltable *, u_int flags, | ||||
const struct sockaddr *l3addr); | const void *l3addr); | ||||
typedef void (llt_delete_t)(struct lltable *, struct llentry *); | typedef void (llt_delete_t)(struct lltable *, struct llentry *); | ||||
typedef void (llt_prefix_free_t)(struct lltable *, | typedef void (llt_prefix_free_t)(struct lltable *, | ||||
const struct sockaddr *addr, const struct sockaddr *mask, u_int flags); | const struct sockaddr *addr, const struct sockaddr *mask, u_int flags); | ||||
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 *); | ||||
▲ Show 20 Lines • Show All 59 Lines • ▼ Show 20 Lines | |||||
void lltable_prefix_free(int, struct sockaddr *, | void lltable_prefix_free(int, struct sockaddr *, | ||||
struct sockaddr *, u_int); | struct sockaddr *, u_int); | ||||
#if 0 | #if 0 | ||||
void lltable_drain(int); | void lltable_drain(int); | ||||
#endif | #endif | ||||
int lltable_sysctl_dumparp(int, struct sysctl_req *); | int lltable_sysctl_dumparp(int, struct sysctl_req *); | ||||
size_t llentry_free(struct llentry *); | size_t llentry_free(struct llentry *); | ||||
struct llentry *llentry_alloc(struct ifnet *, struct lltable *, | struct llentry *llentry_request(struct ifnet *, struct lltable *, | ||||
struct sockaddr_storage *); | const void *); | ||||
/* 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 void *l3addr); | ||||
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); | void lltable_link_entry(struct lltable *llt, struct llentry *lle); | ||||
void lltable_unlink_entry(struct lltable *llt, struct llentry *lle); | void 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. | ||||
*/ | */ | ||||
static __inline struct llentry * | static __inline struct llentry * | ||||
lla_lookup(struct lltable *llt, u_int flags, const struct sockaddr *l3addr) | lla_lookup(struct lltable *llt, u_int flags, const void *l3addr) | ||||
{ | { | ||||
return (llt->llt_lookup(llt, flags, l3addr)); | return (llt->llt_lookup(llt, flags, l3addr)); | ||||
} | } | ||||
int lla_rt_output(struct rt_msghdr *, struct rt_addrinfo *); | int lla_rt_output(struct rt_msghdr *, struct rt_addrinfo *); | ||||
#include <sys/eventhandler.h> | #include <sys/eventhandler.h> | ||||
Show All 9 Lines |