jsoninfo: add a function to directly convert an IP address
authorFerry Huberts <ferry.huberts@pelagic.nl>
Fri, 18 Mar 2016 12:55:37 +0000 (13:55 +0100)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Fri, 18 Mar 2016 12:57:51 +0000 (13:57 +0100)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
lib/jsoninfo/src/olsrd_jsoninfo_helpers.c
lib/jsoninfo/src/olsrd_jsoninfo_helpers.h

index 360a0c9..eb7b53b 100644 (file)
@@ -229,6 +229,31 @@ void abuf_json_ip_address(struct autobuf *abuf, const char* key, union olsr_ip_a
   entrynumber[currentjsondepth]++;
 }
 
+void abuf_json_ip_address46(struct autobuf *abuf, const char* key, void *ip, int af) {
+  struct ipaddr_str ipStr;
+  const char * value;
+
+  assert(abuf);
+  assert(key || ip);
+
+  if (!ip) {
+    value = empty;
+  } else if (af == AF_INET) {
+    value = ip4_to_string(&ipStr, *((const struct in_addr*) ip));
+  } else {
+    value = ip6_to_string(&ipStr, (const struct in6_addr * const ) ip);
+  }
+
+  abuf_json_insert_comma(abuf);
+  abuf_json_new_indent(abuf);
+  if (!key) {
+    abuf_appendf(abuf, "\"%s\"", value);
+  } else {
+    abuf_appendf(abuf, "\"%s\": \"%s\"", key, value);
+  }
+  entrynumber[currentjsondepth]++;
+}
+
 /* Linux specific functions for getting system info */
 
 int read_uuid_from_file(const char * name, const char *file) {
index 72a1805..23550d8 100644 (file)
@@ -70,6 +70,8 @@ void abuf_json_float(struct autobuf *abuf, const char* key, double value);
 
 void abuf_json_ip_address(struct autobuf *abuf, const char* key, union olsr_ip_addr *ip);
 
+void abuf_json_ip_address46(struct autobuf *abuf, const char* key, void *ip, int af);
+
 int read_uuid_from_file(const char * name, const char *file);
 
 #endif /* LIB_JSONINFO_SRC_OLSRD_JSONINFO_HELPERS_H_ */