+
+ switch(address_family) {
+ case AF_INET:
+ endstr = strrchr(host_address, '.');
+ if (endstr == NULL ||
+ strcmp(endstr, ".0") == 0 ||
+ strncmp(host_address, "0.", 2) == 0 ||
+ strstr(host_address, ".0.") != NULL ||strstr(host_address, "255") != NULL) {
+ CONNECTION_LOG(CONNECTION_ERROR, "Invalid IP address Passed");
+ return CONNECTION_ERROR_INVALID_PARAMETER;
+ }
+ break;
+ default:
+ return CONNECTION_ERROR_OPERATION_FAILED;
+ }
+
+ rv = net_remove_route(host_address, interface_name, address_family);
+ if (rv == NET_ERR_ACCESS_DENIED) {
+ CONNECTION_LOG(CONNECTION_ERROR, "Access denied");
+ return CONNECTION_ERROR_PERMISSION_DENIED;
+ } else if (rv != NET_ERR_NONE)
+ return CONNECTION_ERROR_OPERATION_FAILED;
+
+ return CONNECTION_ERROR_NONE;
+}
+
+int _connection_libnet_add_route_ipv6(const char *interface_name, const char *host_address, const char *gateway)
+{
+ int rv;
+ int address_family = 0;
+
+ address_family = AF_INET6;
+/* if(__libnet_check_address_type(AF_INET6, host_address))
+ address_family = AF_INET6;
+ else
+ return CONNECTION_ERROR_INVALID_PARAMETER;*/
+
+ switch(address_family) {
+ case AF_INET6:
+ if (strncmp(host_address, "fe80:", 5) == 0 ||
+ strncmp(host_address, "ff00:", 5) == 0 ||
+ strncmp(host_address, "::", 2) == 0) {
+ CONNECTION_LOG(CONNECTION_ERROR, "Invalid IP address Passed\n");
+ return CONNECTION_ERROR_INVALID_PARAMETER;
+ }
+ break;
+ default:
+ return CONNECTION_ERROR_OPERATION_FAILED;
+ }
+
+ rv = net_add_route_ipv6(host_address, interface_name, address_family, gateway);
+ if (rv == NET_ERR_ACCESS_DENIED) {
+ CONNECTION_LOG(CONNECTION_ERROR, "Access denied");
+ return CONNECTION_ERROR_PERMISSION_DENIED;
+ } else if (rv != NET_ERR_NONE)
+ return CONNECTION_ERROR_OPERATION_FAILED;
+
+ return CONNECTION_ERROR_NONE;
+}
+
+int _connection_libnet_remove_route_ipv6(const char *interface_name, const char *host_address, const char *gateway)
+{
+ int rv;
+ int address_family = 0;
+
+ address_family = AF_INET6;
+/* if (__libnet_check_address_type(AF_INET6, host_address))
+ address_family = AF_INET6;
+ else
+ return CONNECTION_ERROR_INVALID_PARAMETER;*/
+
+ switch(address_family) {
+ case AF_INET6:
+ if (strncmp(host_address, "fe80:", 5) == 0 ||
+ strncmp(host_address, "ff00:", 5) == 0 ||
+ strncmp(host_address, "::", 2) == 0) {
+ CONNECTION_LOG(CONNECTION_ERROR, "Invalid IP address Passed\n");
+ return CONNECTION_ERROR_INVALID_PARAMETER;
+ }
+ break;
+ default:
+ return CONNECTION_ERROR_OPERATION_FAILED;