modules/ipops: Corrected is_in_subnet() exported function and added is_ip to module...
authorPeter Dunkley <peter.dunkley@crocodile-rcs.com>
Thu, 12 Jul 2012 20:50:00 +0000 (21:50 +0100)
committerPeter Dunkley <peter.dunkley@crocodile-rcs.com>
Thu, 12 Jul 2012 20:50:00 +0000 (21:50 +0100)
- Fixes and enhancements by Hugh Waite @ Crocodile RCS

modules/ipops/api.c
modules/ipops/api.h
modules/ipops/ipops_mod.c

index 8730be9..8f5a07c 100644 (file)
@@ -120,6 +120,17 @@ int ipopsapi_ip_is_in_subnet(const str *const ip1, const str *const ip2)
 /**
  *
  */
+int ipopsapi_is_ip(const str * const ip)
+{
+  if (ip_parser_execute(ip->s, ip->len) != ip_type_error)
+    return 1;
+  else
+    return -1;
+}
+
+/**
+ *
+ */
 int bind_ipops(ipops_api_t* api)
 {
        if (!api) {
@@ -128,6 +139,7 @@ int bind_ipops(ipops_api_t* api)
        }
        api->compare_ips     = ipopsapi_compare_ips;
        api->ip_is_in_subnet = ipopsapi_ip_is_in_subnet;
+       api->is_ip           = ipopsapi_is_ip;
 
        return 0;
 }
index aa15dca..2a86649 100644 (file)
@@ -36,12 +36,15 @@ int ipopsapi_compare_ips(const str *const ip1, const str *const ip2);
 typedef int (*ip_is_in_subnet_f)(const str *const, const str *const);
 int ipopsapi_ip_is_in_subnet(const str *const ip1, const str *const ip2);
 
+typedef int (*is_ip_f)(const str * const ip);
+int ipopsapi_is_ip(const str * const ip);
 /**
  * @brief IPOPS API structure
  */
 typedef struct ipops_api {
        compare_ips_f       compare_ips;
        ip_is_in_subnet_f   ip_is_in_subnet;
+       is_ip_f   is_ip;
 } ipops_api_t;
 
 typedef int (*bind_ipops_f)(ipops_api_t* api);
index 402a8a4..164177b 100644 (file)
@@ -108,7 +108,7 @@ static cmd_export_t cmds[] =
   REQUEST_ROUTE|FAILURE_ROUTE|ONREPLY_ROUTE|BRANCH_ROUTE|LOCAL_ROUTE },
   { "is_ip_rfc1918", (cmd_function)w_is_ip_rfc1918, 1, fixup_spve_null, 0,
   REQUEST_ROUTE|FAILURE_ROUTE|ONREPLY_ROUTE|BRANCH_ROUTE|LOCAL_ROUTE },
-  { "is_in_subnet", (cmd_function)w_ip_is_in_subnet, 2, fixup_spve_null, 0,
+  { "is_in_subnet", (cmd_function)w_ip_is_in_subnet, 2, fixup_spve_spve, 0,
   REQUEST_ROUTE|FAILURE_ROUTE|ONREPLY_ROUTE|BRANCH_ROUTE|LOCAL_ROUTE },
   { "bind_ipops", (cmd_function)bind_ipops, 0, 0, 0, 0},
   { 0, 0, 0, 0, 0, 0 }