OpenSDN source code
patricia_api.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef vnsw_agent_patricia_api_h
6 #define vnsw_agent_patricia_api_h
7 
8 #include "mcast_common.h"
9 
10 typedef struct patroot_ {
13 
14 typedef struct patnode_ {
17 
18 #define PATNODE_TO_STRUCT(function, structure, pat_node) \
19  static inline structure *(function)(patnode *node) { \
20  if (node) { \
21  return (structure *)((char *)node - offsetof(structure, pat_node)); \
22  } \
23  return NULL; \
24  }
25 
26 extern patroot *patricia_root_init(patroot *root, boolean key_is_ptr,
27  uint16_t klen, uint8_t offset);
28 extern void patricia_root_delete(patroot *root);
29 extern boolean patricia_add(patroot *root, patnode *node);
30 extern boolean patricia_delete(patroot *root, patnode *node);
31 extern patnode *patricia_lookup(patroot *root, const void *key);
34 extern patnode *patricia_get_next(patroot *root, patnode *node);
35 extern patnode *patricia_get_previous(patroot *root, patnode *node);
36 extern patnode *patricia_lookup_geq(patroot *root, patnode *node);
37 
38 #endif /* vnsw_agent_patricia_api_h */
boolean patricia_delete(patroot *root, patnode *node)
Definition: patricia_api.cc:66
boolean patricia_add(patroot *root, patnode *node)
Definition: patricia_api.cc:49
patnode * patricia_lookup_geq(patroot *root, patnode *node)
patnode * patricia_lookup(patroot *root, const void *key)
Definition: patricia_api.cc:82
patnode * patricia_get_next(patroot *root, patnode *node)
struct patnode_ patnode
patnode * patricia_lookup_least(patroot *root)
void patricia_root_delete(patroot *root)
Definition: patricia_api.cc:35
struct patroot_ patroot
patnode * patricia_get_previous(patroot *root, patnode *node)
patnode * patricia_lookup_greatest(patroot *root)
patroot * patricia_root_init(patroot *root, boolean key_is_ptr, uint16_t klen, uint8_t offset)
Definition: patricia_api.cc:14
void * agent_patnode
Definition: patricia_api.h:15
void * agent_patroot
Definition: patricia_api.h:11