OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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_ {
12 } patroot;
13 
14 typedef struct patnode_ {
16 } 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 */
void patricia_root_delete(patroot *root)
Definition: patricia_api.cc:35
patnode * patricia_lookup_least(patroot *root)
patnode * patricia_lookup_greatest(patroot *root)
patnode * patricia_get_next(patroot *root, patnode *node)
patnode * patricia_get_previous(patroot *root, patnode *node)
boolean patricia_add(patroot *root, patnode *node)
Definition: patricia_api.cc:49
patnode * patricia_lookup(patroot *root, const void *key)
Definition: patricia_api.cc:82
struct patroot_ patroot
patroot * patricia_root_init(patroot *root, boolean key_is_ptr, uint16_t klen, uint8_t koffset)
Definition: patricia_api.cc:14
void * agent_patroot
Definition: patricia_api.h:11
struct patnode_ patnode
boolean patricia_delete(patroot *root, patnode *node)
Definition: patricia_api.cc:66
patnode * patricia_lookup_geq(patroot *root, patnode *node)
void * agent_patnode
Definition: patricia_api.h:15