header refactor

This commit is contained in:
hladu357 2024-06-08 12:51:50 +02:00
parent e224d1fb98
commit 071e384920
1 changed files with 13 additions and 16 deletions

View File

@ -9,19 +9,17 @@
#define INVALID_RULE 0 #define INVALID_RULE 0
#define RULE_NOT_FOUND -1 #define RULE_NOT_FOUND -1
union ipv6 { struct routing_record {
unsigned short s[8]; unsigned long long _ip;
unsigned int i[4]; unsigned short _rule;
unsigned long l[2]; unsigned _ip_end_bit:7;
unsigned _rule_valid:1;
}; };
struct radix_node { struct radix_node {
struct radix_node* _l; struct radix_node* _l;
struct radix_node* _r; struct radix_node* _r;
union ipv6 _ip; struct routing_record _data;
unsigned short _rule;
unsigned _ip_end_bit:7;
unsigned _rule_valid:1;
}; };
struct radix_holder { struct radix_holder {
@ -31,18 +29,17 @@ struct radix_holder {
typedef struct radix_node* radix_node_t; typedef struct radix_node* radix_node_t;
typedef struct radix_holder* radix_holder_t; typedef struct radix_holder* radix_holder_t;
typedef union ipv6 ipv6_t; typedef struct routing_record* record_t;
typedef int rule_t;
struct radix_holder* create_holder(); struct radix_holder* create_holder();
struct radix_node* create_node(ipv6_t key, unsigned end_bit, unsigned rule); struct radix_node* create_node(record_t record);
static struct radix_node* clone_node(struct radix_node* n); static struct radix_node* clone_node(radix_node_t n);
static void split_node(struct radix_node* n, unsigned bit); static void split_node(struct radix_node* n, unsigned bit);
int destory_holder(struct radix_holder*); int destory_holder(struct radix_holder*);
int destory_node(struct radix_node*); int destory_node(struct radix_node*);
int radix_insert(struct radix_holder*, ipv6_t key, int val, int mask); int radix_insert(radix_holder_t, record_t);
rule_t radix_search(struct radix_holder*, ipv6_t key); int radix_search(radix_holder_t, record_t);
#endif #endif