info: add support for the pud plugin position
authorFerry Huberts <ferry.huberts@pelagic.nl>
Mon, 13 Jun 2016 14:13:38 +0000 (16:13 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Tue, 14 Jun 2016 20:48:02 +0000 (22:48 +0200)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
lib/info/info_types.h
lib/info/olsrd_info.c

index 31ec203..aae8f9d 100644 (file)
@@ -84,31 +84,32 @@ typedef struct {
 #define SIW_INTERFACES                   (1ULL <<  7)
 #define SIW_2HOP                         (1ULL <<  8)
 #define SIW_SGW                          (1ULL <<  9)
-#define SIW_RUNTIME_ALL                  (SIW_NEIGHBORS | SIW_LINKS | SIW_ROUTES | SIW_HNA | SIW_MID | SIW_TOPOLOGY | SIW_GATEWAYS | SIW_INTERFACES | SIW_2HOP | SIW_SGW)
+#define SIW_PUD_POSITION                 (1ULL << 10)
+#define SIW_RUNTIME_ALL                  (SIW_NEIGHBORS | SIW_LINKS | SIW_ROUTES | SIW_HNA | SIW_MID | SIW_TOPOLOGY | SIW_GATEWAYS | SIW_INTERFACES | SIW_2HOP | SIW_SGW | SIW_PUD_POSITION)
 #define SIW_NEIGHBORS_FREIFUNK           (SIW_NEIGHBORS | SIW_LINKS) /* special */
 
 /* these only change at olsrd startup */
-#define SIW_VERSION                      (1ULL << 10)
-#define SIW_CONFIG                       (1ULL << 11)
-#define SIW_PLUGINS                      (1ULL << 12)
+#define SIW_VERSION                      (1ULL << 11)
+#define SIW_CONFIG                       (1ULL << 12)
+#define SIW_PLUGINS                      (1ULL << 13)
 #define SIW_STARTUP_ALL                  (SIW_VERSION | SIW_CONFIG | SIW_PLUGINS)
 
 /* this is everything in normal format */
 #define SIW_ALL                          (SIW_RUNTIME_ALL | SIW_STARTUP_ALL)
 
 /* this data is not normal format but olsrd.conf format */
-#define SIW_OLSRD_CONF                   (1ULL << 13)
+#define SIW_OLSRD_CONF                   (1ULL << 14)
 
 /* netjson */
-#define SIW_NETJSON_NETWORK_ROUTES       (1ULL << 14)
-#define SIW_NETJSON_NETWORK_GRAPH        (1ULL << 15)
-#define SIW_NETJSON_DEVICE_CONFIGURATION (1ULL << 16)
-#define SIW_NETJSON_DEVICE_MONITORING    (1ULL << 17)
-#define SIW_NETJSON_NETWORK_COLLECTION   (1ULL << 18)
+#define SIW_NETJSON_NETWORK_ROUTES       (1ULL << 15)
+#define SIW_NETJSON_NETWORK_GRAPH        (1ULL << 16)
+#define SIW_NETJSON_DEVICE_CONFIGURATION (1ULL << 17)
+#define SIW_NETJSON_DEVICE_MONITORING    (1ULL << 18)
+#define SIW_NETJSON_NETWORK_COLLECTION   (1ULL << 19)
 #define SIW_NETJSON                      (SIW_NETJSON_NETWORK_ROUTES | SIW_NETJSON_NETWORK_GRAPH | SIW_NETJSON_DEVICE_CONFIGURATION | SIW_NETJSON_DEVICE_MONITORING | SIW_NETJSON_NETWORK_COLLECTION)
 
 /* everything */
-#define SIW_EVERYTHING                   ((1ULL << 19) - 1)
+#define SIW_EVERYTHING                   ((SIW_NETJSON_NETWORK_COLLECTION << 1) - 1)
 
 typedef void (*init_plugin)(const char *plugin_name);
 typedef unsigned long long (*supported_commands_mask_func)(void);
@@ -137,6 +138,8 @@ typedef struct {
     printer_generic mid;
     printer_generic gateways;
     printer_generic sgw;
+    printer_generic pudPosition;
+
     printer_generic version;
     printer_generic olsrd_conf;
     printer_generic interfaces;
@@ -167,6 +170,7 @@ struct info_cache_t {
     struct info_cache_entry_t interfaces;
     struct info_cache_entry_t twohop;
     struct info_cache_entry_t sgw;
+    struct info_cache_entry_t pudPosition;
 
     struct info_cache_entry_t version;
     struct info_cache_entry_t config;
@@ -227,6 +231,10 @@ static INLINE struct info_cache_entry_t * info_cache_get_entry(struct info_cache
       r = &cache->sgw;
       break;
 
+    case SIW_PUD_POSITION:
+      r = &cache->pudPosition;
+      break;
+
     case SIW_VERSION:
       r = &cache->version;
       break;
index caf729e..a38b106 100644 (file)
@@ -129,6 +129,7 @@ static unsigned long long SIW_ENTRIES_ALL[] = {
     SIW_INTERFACES, //
     SIW_2HOP, //
     SIW_SGW, //
+    SIW_PUD_POSITION, //
     SIW_RUNTIME_ALL,//
     SIW_NEIGHBORS_FREIFUNK, //
     //
@@ -165,6 +166,7 @@ long cache_timeout_generic(info_plugin_config_t *plugin_config, unsigned long lo
     case SIW_INTERFACES:
     case SIW_2HOP:
     case SIW_SGW:
+    case SIW_PUD_POSITION:
 
     case SIW_NETJSON_NETWORK_ROUTES:
     case SIW_NETJSON_NETWORK_GRAPH:
@@ -478,20 +480,21 @@ static void send_info(const char * req, unsigned int send_what, int the_socket,
     // only add if normal format
     if (send_what & SIW_ALL) {
       SiwLookupTableEntry funcs[] = {
-        { SIW_NEIGHBORS , functions->neighbors  }, //
-        { SIW_LINKS     , functions->links      }, //
-        { SIW_ROUTES    , functions->routes     }, //
-        { SIW_HNA       , functions->hna        }, //
-        { SIW_MID       , functions->mid        }, //
-        { SIW_TOPOLOGY  , functions->topology   }, //
-        { SIW_GATEWAYS  , functions->gateways   }, //
-        { SIW_INTERFACES, functions->interfaces }, //
-        { SIW_2HOP      , functions->twohop     }, //
-        { SIW_SGW       , functions->sgw        }, //
+        { SIW_NEIGHBORS   , functions->neighbors   }, //
+        { SIW_LINKS       , functions->links       }, //
+        { SIW_ROUTES      , functions->routes      }, //
+        { SIW_HNA         , functions->hna         }, //
+        { SIW_MID         , functions->mid         }, //
+        { SIW_TOPOLOGY    , functions->topology    }, //
+        { SIW_GATEWAYS    , functions->gateways    }, //
+        { SIW_INTERFACES  , functions->interfaces  }, //
+        { SIW_2HOP        , functions->twohop      }, //
+        { SIW_SGW         , functions->sgw         }, //
+        { SIW_PUD_POSITION, functions->pudPosition }, //
         //
-        { SIW_VERSION   , functions->version    }, //
-        { SIW_CONFIG    , functions->config     }, //
-        { SIW_PLUGINS   , functions->plugins    } //
+        { SIW_VERSION     , functions->version     }, //
+        { SIW_CONFIG      , functions->config      }, //
+        { SIW_PLUGINS     , functions->plugins     } //
       };
 
       send_info_from_table(&abuf, send_what, funcs, ARRAY_SIZE(funcs), &outputLength);