svn commit: r274255 - projects/routing/sys/net
Alexander V. Chernikov
melifaro at FreeBSD.org
Fri Nov 7 22:02:46 UTC 2014
Author: melifaro
Date: Fri Nov 7 22:02:44 2014
New Revision: 274255
URL: https://svnweb.freebsd.org/changeset/base/274255
Log:
Provide typedefs for radix functions.
Modified:
projects/routing/sys/net/radix.h
Modified: projects/routing/sys/net/radix.h
==============================================================================
--- projects/routing/sys/net/radix.h Fri Nov 7 21:30:16 2014 (r274254)
+++ projects/routing/sys/net/radix.h Fri Nov 7 22:02:44 2014 (r274255)
@@ -101,30 +101,37 @@ struct radix_mask {
#define rm_mask rm_rmu.rmu_mask
#define rm_leaf rm_rmu.rmu_leaf /* extra field would make 32 bytes */
+struct radix_node_head;
+
typedef int walktree_f_t(struct radix_node *, void *);
+typedef struct radix_node *rn_matchaddr_f_t(void *v,
+ struct radix_node_head *head);
+typedef struct radix_node *rn_addaddr_f_t(void *v, void *mask,
+ struct radix_node_head *head, struct radix_node nodes[]);
+typedef struct radix_node *rn_deladdr_f_t(void *v, void *mask,
+ struct radix_node_head *head);
+typedef struct radix_node *rn_lookup_f_t(void *v, void *mask,
+ struct radix_node_head *head);
+typedef int rn_walktree_t(struct radix_node_head *head, walktree_f_t *f,
+ void *w);
+typedef int rn_walktree_from_t(struct radix_node_head *head,
+ void *a, void *m, walktree_f_t *f, void *w);
+typedef void rn_close_t(struct radix_node *rn, struct radix_node_head *head);
+
struct radix_node_head {
struct radix_node *rnh_treetop;
+ struct radix_node_head *rnh_masks; /* Storage for our masks */
u_int rnh_gen; /* generation counter */
int rnh_multipath; /* multipath capable ? */
- struct radix_node *(*rnh_addaddr) /* add based on sockaddr */
- (void *v, void *mask,
- struct radix_node_head *head, struct radix_node nodes[]);
- struct radix_node *(*rnh_deladdr) /* remove based on sockaddr */
- (void *v, void *mask, struct radix_node_head *head);
- struct radix_node *(*rnh_matchaddr) /* longest match for sockaddr */
- (void *v, struct radix_node_head *head);
- struct radix_node *(*rnh_lookup) /*exact match for sockaddr*/
- (void *v, void *mask, struct radix_node_head *head);
- int (*rnh_walktree) /* traverse tree */
- (struct radix_node_head *head, walktree_f_t *f, void *w);
- int (*rnh_walktree_from) /* traverse tree below a */
- (struct radix_node_head *head, void *a, void *m,
- walktree_f_t *f, void *w);
- void (*rnh_close) /* do something when the last ref drops */
- (struct radix_node *rn, struct radix_node_head *head);
+ rn_matchaddr_f_t *rnh_matchaddr; /* longest match for sockaddr */
+ rn_addaddr_f_t *rnh_addaddr; /* add based on sockaddr*/
+ rn_deladdr_f_t *rnh_deladdr; /* remove based on sockaddr */
+ rn_lookup_f_t *rnh_lookup; /* exact match for sockaddr */
+ rn_walktree_t *rnh_walktree; /* traverse tree */
+ rn_walktree_from_t *rnh_walktree_from; /* traverse tree below a */
+ rn_close_t *rnh_close; /*do something when the last ref drops*/
struct radix_node rnh_nodes[3]; /* empty tree for common case */
- struct radix_node_head *rnh_masks; /* Storage for our masks */
#ifdef _KERNEL
struct rwlock rnh_lock; /* locks entire radix tree */
#endif
More information about the svn-src-projects
mailing list