• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/libnl-tiny/include/netlink/cache.h

  1 /*
  2  * netlink/cache.h              Caching Module
  3  *
  4  *      This library is free software; you can redistribute it and/or
  5  *      modify it under the terms of the GNU Lesser General Public
  6  *      License as published by the Free Software Foundation version 2.1
  7  *      of the License.
  8  *
  9  * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
 10  */
 11 
 12 #ifndef NETLINK_CACHE_H_
 13 #define NETLINK_CACHE_H_
 14 
 15 #include <netlink/netlink.h>
 16 #include <netlink/msg.h>
 17 #include <netlink/utils.h>
 18 #include <netlink/object.h>
 19 #include <netlink/cache-api.h>
 20 
 21 #ifdef __cplusplus
 22 extern "C" {
 23 #endif
 24 
 25 struct nl_cache;
 26 
 27 typedef void (*change_func_t)(struct nl_cache *, struct nl_object *, int);
 28 
 29 /* Access Functions */
 30 extern int                      nl_cache_nitems(struct nl_cache *);
 31 extern int                      nl_cache_nitems_filter(struct nl_cache *,
 32                                                        struct nl_object *);
 33 extern struct nl_cache_ops *    nl_cache_get_ops(struct nl_cache *);
 34 extern struct nl_object *       nl_cache_get_first(struct nl_cache *);
 35 extern struct nl_object *       nl_cache_get_last(struct nl_cache *);
 36 extern struct nl_object *       nl_cache_get_next(struct nl_object *);
 37 extern struct nl_object *       nl_cache_get_prev(struct nl_object *);
 38 
 39 extern struct nl_cache *        nl_cache_alloc(struct nl_cache_ops *);
 40 extern int                      nl_cache_alloc_and_fill(struct nl_cache_ops *,
 41                                                         struct nl_sock *,
 42                                                         struct nl_cache **);
 43 extern int                      nl_cache_alloc_name(const char *,
 44                                                     struct nl_cache **);
 45 extern struct nl_cache *        nl_cache_subset(struct nl_cache *,
 46                                                 struct nl_object *);
 47 extern void                     nl_cache_clear(struct nl_cache *);
 48 extern void                     nl_cache_free(struct nl_cache *);
 49 
 50 /* Cache modification */
 51 extern int                      nl_cache_add(struct nl_cache *,
 52                                              struct nl_object *);
 53 extern int                      nl_cache_parse_and_add(struct nl_cache *,
 54                                                        struct nl_msg *);
 55 extern void                     nl_cache_remove(struct nl_object *);
 56 extern int                      nl_cache_refill(struct nl_sock *,
 57                                                 struct nl_cache *);
 58 extern int                      nl_cache_pickup(struct nl_sock *,
 59                                                 struct nl_cache *);
 60 extern int                      nl_cache_resync(struct nl_sock *,
 61                                                 struct nl_cache *,
 62                                                 change_func_t);
 63 extern int                      nl_cache_include(struct nl_cache *,
 64                                                  struct nl_object *,
 65                                                  change_func_t);
 66 
 67 /* General */
 68 extern int                      nl_cache_is_empty(struct nl_cache *);
 69 extern void                     nl_cache_mark_all(struct nl_cache *);
 70 
 71 /* Dumping */
 72 extern void                     nl_cache_dump(struct nl_cache *,
 73                                               struct nl_dump_params *);
 74 extern void                     nl_cache_dump_filter(struct nl_cache *,
 75                                                      struct nl_dump_params *,
 76                                                      struct nl_object *);
 77 
 78 /* Iterators */
 79 #ifdef disabled
 80 extern void                     nl_cache_foreach(struct nl_cache *,
 81                                                  void (*cb)(struct nl_object *,
 82                                                             void *),
 83                                                  void *arg);
 84 extern void                     nl_cache_foreach_filter(struct nl_cache *,
 85                                                         struct nl_object *,
 86                                                         void (*cb)(struct
 87                                                                    nl_object *,
 88                                                                    void *),
 89                                                         void *arg);
 90 #endif
 91 
 92 /* --- cache management --- */
 93 
 94 /* Cache type management */
 95 extern struct nl_cache_ops *    nl_cache_ops_lookup(const char *);
 96 extern struct nl_cache_ops *    nl_cache_ops_associate(int, int);
 97 extern struct nl_msgtype *      nl_msgtype_lookup(struct nl_cache_ops *, int);
 98 extern void                     nl_cache_ops_foreach(void (*cb)(struct nl_cache_ops *, void *), void *);
 99 extern int                      nl_cache_mngt_register(struct nl_cache_ops *);
100 extern int                      nl_cache_mngt_unregister(struct nl_cache_ops *);
101 
102 /* Global cache provisioning/requiring */
103 extern void                     nl_cache_mngt_provide(struct nl_cache *);
104 extern void                     nl_cache_mngt_unprovide(struct nl_cache *);
105 extern struct nl_cache *        nl_cache_mngt_require(const char *);
106 
107 struct nl_cache_mngr;
108 
109 #define NL_AUTO_PROVIDE         1
110 
111 extern int                      nl_cache_mngr_alloc(struct nl_sock *,
112                                                     int, int,
113                                                     struct nl_cache_mngr **);
114 extern int                      nl_cache_mngr_add(struct nl_cache_mngr *,
115                                                   const char *,
116                                                   change_func_t,
117                                                   struct nl_cache **);
118 extern int                      nl_cache_mngr_get_fd(struct nl_cache_mngr *);
119 extern int                      nl_cache_mngr_poll(struct nl_cache_mngr *,
120                                                    int);
121 extern int                      nl_cache_mngr_data_ready(struct nl_cache_mngr *);
122 extern void                     nl_cache_mngr_free(struct nl_cache_mngr *);
123 
124 #ifdef __cplusplus
125 }
126 #endif
127 
128 #endif
129 

This page was automatically generated by LXR 0.3.1.  •  OpenWrt