Author: igalic
Date: Fri Sep 23 16:41:17 2011
New Revision: 1174876

URL: http://svn.apache.org/viewvc?rev=1174876&view=rev
Log:
Another attempt at fixing build regression on Solaris introduced by: r1174513. 
This time by removing lots and lots of duplicate code..

Modified:
    trafficserver/traffic/trunk/mgmt/tools/ConfigAPI.cc
    trafficserver/traffic/trunk/mgmt/tools/SysAPI.cc

Modified: trafficserver/traffic/trunk/mgmt/tools/ConfigAPI.cc
URL: 
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/mgmt/tools/ConfigAPI.cc?rev=1174876&r1=1174875&r2=1174876&view=diff
==============================================================================
--- trafficserver/traffic/trunk/mgmt/tools/ConfigAPI.cc (original)
+++ trafficserver/traffic/trunk/mgmt/tools/ConfigAPI.cc Fri Sep 23 16:41:17 2011
@@ -483,9 +483,7 @@ Config_GetTime(char *hour, const size_t 
                const size_t secondSize)
 {
   int status = -1;
-#if !defined(freebsd) && !defined(darwin) && !defined(solaris)
   status = Time_GetTime(hour, hourSize, minute, minuteSize, second, 
secondSize);
-#endif
   return status;
 }
 
@@ -497,9 +495,7 @@ Config_SetTime(bool restart, char *hour,
   if (hour == NULL || minute == NULL || second == NULL) {
     return -1;
   }
-#if !defined(freebsd) && !defined(darwin)
   status = Time_SetTime(restart, hour, minute, second);
-#endif
   return status;
 }
 
@@ -507,9 +503,7 @@ int
 Config_GetDate(char *month, const size_t monthSize, char *day, const size_t 
daySize, char *year, const size_t yearSize)
 {
   int status = -1;
-#if !defined(freebsd) && !defined(darwin) && !defined(solaris)
   status = Time_GetDate(month, monthSize, day, daySize, year, yearSize);
-#endif
   return status;
 }
 
@@ -521,9 +515,7 @@ Config_SetDate(bool restart, char *month
   if (month == NULL || day == NULL || year == NULL) {
     return -1;
   }
-#if !defined(freebsd) && !defined(darwin) && !defined(solaris)
   status = Time_SetDate(restart, month, day, year);
-#endif
   return status;
 }
 
@@ -634,61 +626,37 @@ Config_SaveVersion(char *file)
 int
 Config_GetNTP_Status(char *status, size_t status_len)
 {
-#if !defined(freebsd) && !defined(darwin) && !defined(solaris)
   return Time_GetNTP_Status(status, status_len);
-#else
-  return -1;
-#endif
 }
 
 int
 Config_SetNTP_Off(void)
 {
-#if !defined(freebsd) && !defined(darwin)
   return Time_SetNTP_Off();
-#else
-  return -1;
-#endif
 }
 
 int
 Config_User_Root(int *old_euid)
 {
-#if !defined(freebsd) && !defined(darwin)
   return Sys_User_Root(old_euid);
-#else
-  return -1;
-#endif
 }
 
 int
 Config_User_Inktomi(int euid)
 {
-#if !defined(freebsd) && !defined(darwin)
   return Sys_User_Inktomi(euid);
-#else
-  return -1;
-#endif
 }
 
 int
 Config_Grp_Root(int *old_egid)
 {
-#if !defined(freebsd) && !defined(darwin)
   return Sys_Grp_Root(old_egid);
-#else
-  return -1;
-#endif
 }
 
 int
 Config_Grp_Inktomi(int egid)
 {
-#if !defined(freebsd) && !defined(darwin)
   return Sys_Grp_Inktomi(egid);
-#else
-  return -1;
-#endif
 }
 
 #if defined(linux)
@@ -1165,21 +1133,13 @@ XmlObject::getXmlTagValueAndAttribute(ch
 int
 Config_SetSMTP_Server(char *server)
 {
-#if !defined(freebsd) && !defined(darwin)
   return (Net_SetSMTP_Server(server));
-#else
-  return -1;
-#endif
 }
 
 int
 Config_GetSMTP_Server(char *server)
 {
-#if !defined(freebsd) && !defined(darwin)
   return (Net_GetSMTP_Server(server));
-#else
-  return -1;
-#endif
 }
 
 

Modified: trafficserver/traffic/trunk/mgmt/tools/SysAPI.cc
URL: 
http://svn.apache.org/viewvc/trafficserver/traffic/trunk/mgmt/tools/SysAPI.cc?rev=1174876&r1=1174875&r2=1174876&view=diff
==============================================================================
--- trafficserver/traffic/trunk/mgmt/tools/SysAPI.cc (original)
+++ trafficserver/traffic/trunk/mgmt/tools/SysAPI.cc Fri Sep 23 16:41:17 2011
@@ -47,6 +47,20 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 
+
+#endif
+
+#if defined(solaris)
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/time.h>
+#include <stdarg.h>
+
+
+#include "ParseRules.h"
+
+#endif
+
 #define NETCONFIG_HOSTNAME  0
 #define NETCONFIG_GATEWAY   1
 #define NETCONFIG_DOMAIN    2
@@ -67,6 +81,28 @@
 #define DPRINTF(x)
 #endif
 
+
+const char *
+strcasestr(char *container, char *substr)
+{
+  return ParseRules::strcasestr(container, substr);
+}
+
+// go through string, ane terminate it with \0
+void
+makeStr(char *str)
+{
+  char *p = str;
+  while (*p) {
+    if (*p == '\n') {
+      *p = '\0';
+      return;
+    }
+    p++;
+  }
+}
+
+
 int NetConfig_Action(int index, ...);
 int TimeConfig_Action(int index, bool restart, ...);
 int Net_GetNIC_Values(char *interface, char *status, char *onboot, char 
*static_ip, char *ip, char *netmask,
@@ -80,7 +116,7 @@ Net_GetHostname(char *hostname, size_t h
   hostname[0] = 0;
   return (gethostname(hostname, hostname_len));
 }
-
+  
 int
 Net_SetHostname(char *hostname)
 {
@@ -120,7 +156,12 @@ Net_SetHostname(char *hostname)
       if (strlen(name) > 0) {
         Net_GetNIC_Status(name, nic_status, sizeof(nic_status));
         Net_GetNIC_Protocol(name, protocol, sizeof(protocol));
-        if ((strcmp("up", nic_status) == 0) && (!found) && 
(strcasecmp(protocol, "dhcp") != 0)) {
+#if !defined (solaris)
+        if ((strcmp("up", nic_status) == 0) && (!found) ) {
+#else
+        if ((strcmp("up", nic_status) == 0) && (!found)  
+            && (strcasecmp(protocol, "dhcp") != 0)) {
+#endif
           //we can use this interface
           Net_GetNIC_IP(name, ip_addr, sizeof(ip_addr));
           found = true;
@@ -150,59 +191,6 @@ isLineCommented(char *line)
   return true;
 }
 
-
-int
-Net_GetDefaultRouter(char *router, size_t router_len)
-{
-
-  int value;
-  router[0] = '\0';
-  value = find_value("/etc/sysconfig/network", "GATEWAY", router, router_len, 
"=", 0);
-  DPRINTF(("[Net_GetDefaultRouter] Find returned %d\n", value));
-  if (value) {
-    return !value;
-  } else {
-    char command[80];
-    const char *tmp_file = "/tmp/route_status";
-    char buffer[256];
-    FILE *fp;
-
-    ink_strlcpy(command, "/sbin/route -n > /tmp/route_status", 
sizeof(command));
-    remove(tmp_file);
-    if (system(command) == -1) {
-      DPRINTF(("[Net_GetDefaultRouter] run route -n\n"));
-      return -1;
-    }
-
-    fp = fopen(tmp_file, "r");
-    if (fp == NULL) {
-      DPRINTF(("[Net_GetDefaultRouter] can not open the temp file\n"));
-      return -1;
-    }
-
-    char *gw_start;
-    bool find_UG = false;
-    NOWARN_UNUSED_RETURN(fgets(buffer, 256, fp));
-    while (!feof(fp)) {
-      if (strstr(buffer, "UG") != NULL) {
-        find_UG = true;
-        strtok(buffer, " \t");
-        gw_start = strtok(NULL, " \t");
-        break;
-      }
-      NOWARN_UNUSED_RETURN(fgets(buffer, 256, fp));
-    }
-    if (find_UG) {
-      ink_strlcpy(router, gw_start, router_len);
-      fclose(fp);
-      return 0;
-    }
-    fclose(fp);
-  }
-  return 1;
-
-}
-
 int
 Net_SetDefaultRouter(char *router)
 {
@@ -255,6 +243,7 @@ Net_SetDomain(const char *domain)
   return status;
 }
 
+
 int
 Net_GetDNS_Servers(char *dns, size_t dns_len)
 {
@@ -283,7 +272,6 @@ Net_SetDNS_Servers(char *dns)
   }
   // check all IP addresses for validity
   ink_strlcpy(buff, dns, sizeof(buff));
-  buff[511] = '\0';
   tmp1 = buff;
   while ((tmp2 = strtok(tmp1, " \t")) != NULL) {
     DPRINTF(("Net_SetDNS_Servers: tmp2 %s\n", tmp2));
@@ -302,104 +290,495 @@ Net_SetDNS_Servers(char *dns)
 }
 
 int
-Net_GetDNS_Server(char *server, size_t server_len, int no)
-{
-  server[0] = 0;
-  return (!find_value("/etc/resolv.conf", "nameserver", server, server_len, " 
", no));
-}
-
-int
-Net_GetNetworkIntCount()
+Net_SetNIC_Down(char *interface)
 {
+  int status;
+  char ip[80];
 
-  FILE *net_device;
-  char buffer[200] = "";
-  int count = 0;
+  if (!Net_IsValid_Interface(interface))
+    return -1;
 
-  // for each NIC
-  net_device = fopen("/proc/net/dev", "r");
-  while (!feof(net_device)) {
-    if (fgets(buffer, 200, net_device)) {
-      if (*buffer && strstr(buffer, "eth")) {  // only counts eth interface
-        count++;
-      }
-    }
+  status = NetConfig_Action(NETCONFIG_INTF_DOWN, interface);
+  if (status) {
+    return status;
   }
-  fclose(net_device);
-  return count;
+
+  Net_GetNIC_IP(interface, ip, sizeof(ip));
+
+  return status;
 }
 
 int
-Net_GetNetworkInt(int int_num, char *interface, size_t interface_len)
+Net_SetNIC_StartOnBoot(char *interface, char *onboot)
 {
-  interface[0] = 0;
-
-  FILE *net_device;
-  char buffer[200];
-  int space_len;
-  char *pos, *tmp;
-  int i = -1;
+  char nic_protocol[80], nic_ip[80], nic_netmask[80], nic_gateway[80];
 
-  *buffer = '\0';
-  net_device = fopen("/proc/net/dev", "r");
+  Net_GetNIC_Protocol(interface, nic_protocol, sizeof(nic_protocol));
+  Net_GetNIC_IP(interface, nic_ip, sizeof(nic_ip));
+  Net_GetNIC_Netmask(interface, nic_netmask, sizeof(nic_netmask));
+  Net_GetNIC_Gateway(interface, nic_gateway, sizeof(nic_gateway));
 
-  while (!feof(net_device) && (i != int_num)) {
-    if (fgets(buffer, 200, net_device)) {
-      if (strstr(buffer, "eth"))  // only counts the eth interface
-        i++;
-    }
-  }
-  fclose(net_device);
-  if (!*buffer || (i != int_num))
-    return -1;
+  return (Net_SetNIC_Up(interface, onboot, nic_protocol, nic_ip, nic_netmask, 
nic_gateway));
+}
 
-  pos = strchr(buffer, ':');
-  if (pos)
-    *pos = '\0';
-  space_len = strspn(buffer, " ");
-  tmp = buffer + space_len;
+int
+Net_SetNIC_BootProtocol(char *interface, char *nic_protocol)
+{
+  char nic_boot[80], nic_ip[80], nic_netmask[80], nic_gateway[80];
+#if !defined(freebsd) && !defined(darwin)
+  Net_GetNIC_Start(interface, nic_boot, sizeof(nic_boot));
+  Net_GetNIC_IP(interface, nic_ip, sizeof(nic_ip));
+  Net_GetNIC_Netmask(interface, nic_netmask, sizeof(nic_netmask));
+  Net_GetNIC_Gateway(interface, nic_gateway, sizeof(nic_gateway));
 
-  ink_strlcpy(interface, tmp, interface_len);
+  return (Net_SetNIC_Up(interface, nic_boot, nic_protocol, nic_ip, 
nic_netmask, nic_gateway));
+#else
+  return -1;
+#endif
+}
 
-  return 0;
+int
+Net_SetNIC_IP(char *interface, char *nic_ip)
+{
+#if !defined(freebsd) && !defined(darwin) && !defined(solaris)
+  char nic_boot[80], nic_protocol[80], nic_netmask[80], nic_gateway[80], 
old_ip[80];
+  Net_GetNIC_IP(interface, old_ip, sizeof(old_ip));
+  Net_GetNIC_Start(interface, nic_boot, sizeof(nic_boot));
+  Net_GetNIC_Protocol(interface, nic_protocol, sizeof(nic_protocol));
+  Net_GetNIC_Netmask(interface, nic_netmask, sizeof(nic_netmask));
+  Net_GetNIC_Gateway(interface, nic_gateway, sizeof(nic_gateway));
 
+  return (Net_SetNIC_Up(interface, nic_boot, nic_protocol, nic_ip, 
nic_netmask, nic_gateway));
+#else
+  return -1;
+#endif
 }
 
 int
-Net_GetNIC_Status(char *interface, char *status, size_t status_len)
+Net_SetNIC_Netmask(char *interface, char *nic_netmask)
 {
+#if !defined(freebsd) && !defined(darwin) && !defined(solaris)
+  char nic_boot[80], nic_protocol[80], nic_ip[80], nic_gateway[80];
+  Net_GetNIC_Start(interface, nic_boot, sizeof(nic_boot));
+  Net_GetNIC_Protocol(interface, nic_protocol, sizeof(nic_protocol));
+  Net_GetNIC_IP(interface, nic_ip, sizeof(nic_ip));
+  Net_GetNIC_Gateway(interface, nic_gateway, sizeof(nic_gateway));
 
-  char ifcfg[80], command[80];
+  return (Net_SetNIC_Up(interface, nic_boot, nic_protocol, nic_ip, 
nic_netmask, nic_gateway));
+#else
+  return -1;
+#endif
+}
 
-  status[0] = 0;
+int
+Net_SetNIC_Gateway(char *interface, char *nic_gateway)
+{
+#if !defined(freebsd) && !defined(darwin) && !defined(solaris)
+  char nic_boot[80], nic_protocol[80], nic_ip[80], nic_netmask[80];
+  Net_GetNIC_Start(interface, nic_boot, sizeof(nic_boot));
+  Net_GetNIC_Protocol(interface, nic_protocol, sizeof(nic_protocol));
+  Net_GetNIC_IP(interface, nic_ip, sizeof(nic_ip));
+  Net_GetNIC_Netmask(interface, nic_netmask, sizeof(nic_netmask));
+  DPRINTF(("Net_SetNIC_Gateway:: interface %s onboot %s protocol %s ip %s 
netmask %s gateway %s\n", interface, nic_boot,
+           nic_protocol, nic_ip, nic_netmask, nic_gateway));
 
-  ink_strlcpy(ifcfg, "/etc/sysconfig/network-scripts/ifcfg-", sizeof(ifcfg));
-  ink_strlcat(ifcfg, interface, sizeof(ifcfg));
+  return (Net_SetNIC_Up(interface, nic_boot, nic_protocol, nic_ip, 
nic_netmask, nic_gateway));
+#else
+  return -1;
+#endif
+}
 
-  ink_strlcpy(command, "/sbin/ifconfig | grep ", sizeof(command));
-  ink_strlcat(command, interface, sizeof(command));
-  ink_strlcat(command, " >/dev/null 2>&1", sizeof(command));
+int
+Net_IsValid_Interface(char *interface)
+{
+  char name[80];
 
-  if (system(command) == 0) {
-    ink_strlcpy(status, "up", status_len);
-  } else {
-    ink_strlcpy(status, "down", status_len);
+  if (interface == NULL) {
+    return 0;
+  }
+  int count = Net_GetNetworkIntCount();
+  for (int i = 0; i < count; i++) {
+    Net_GetNetworkInt(i, name, sizeof(name));
+    if (strcmp(name, interface) == 0)
+      return 1;
   }
   return 0;
 }
 
 int
-Net_GetNIC_Start(char *interface, char *start, size_t start_len)
+find_value(const char *pathname, const char *key, char *value, size_t 
value_len, const char *delim, int no)
 {
+  char buffer[1024];
+  char *pos;
+  char *open_quot, *close_quot;
+  FILE *fp;
+  int find = 0;
+  int counter = 0;
 
-  char ifcfg[80], value[80];
-
-  start[0] = 0;
-
-  ink_strlcpy(ifcfg, "/etc/sysconfig/network-scripts/ifcfg-", sizeof(ifcfg));
-  ink_strlcat(ifcfg, interface, sizeof(ifcfg));
+  int str_len = strlen(key);
 
-  if (find_value(ifcfg, "ONBOOT", value, sizeof(value), "=", 0)) {
+  value[0] = 0;
+  // coverity[fs_check_call]
+  if (access(pathname, R_OK)) {
+    return find;
+  }
+  // coverity[toctou]
+  if ((fp = fopen(pathname, "r")) != NULL) {
+    NOWARN_UNUSED_RETURN(fgets(buffer, 1024, fp));
+
+    while (!feof(fp)) {
+      if (!isLineCommented(buffer) &&   // skip if line is commented
+          (strstr(buffer, key) != NULL) && ((strncmp((buffer + str_len), "=", 
1) == 0) ||
+                                            (strncmp((buffer + str_len), " ", 
1) == 0) ||
+                                            (strncmp((buffer + str_len), "\t", 
1) == 0))) {
+        if (counter != no) {
+          counter++;
+        } else {
+          find = 1;
+
+          pos = strstr(buffer, delim);
+          if (pos == NULL && (strcmp(delim, " ") == 0)) {       // anniec - 
give tab a try
+            pos = strstr(buffer, "\t");
+          }
+          if (pos != NULL) {
+            pos++;
+            if ((open_quot = strchr(pos, '"')) != NULL) {
+              pos = open_quot + 1;
+              close_quot = strrchr(pos, '"');
+              *close_quot = '\0';
+            }
+            //Bug49159, Dell use "'" in the ifcfg-ethx file
+            else if ((open_quot = strchr(pos, '\'')) != NULL) {
+              pos = open_quot + 1;
+              close_quot = strrchr(pos, '\'');
+              *close_quot = '\0';
+            }
+            //filter the comment on the same line
+            char *cur;
+            cur = pos;
+            while (*cur != '#' && *cur != '\0') {
+              cur++;
+            }
+            *cur = '\0';
+
+            ink_strlcpy(value, pos, value_len);
+
+            if (value[strlen(value) - 1] == '\n') {
+              value[strlen(value) - 1] = '\0';
+            }
+          }
+          break;
+        }
+      }
+      NOWARN_UNUSED_RETURN(fgets(buffer, 1024, fp));
+    }
+    fclose(fp);
+  }
+  return find;
+}
+
+int
+Time_GetTime(char *hour, const size_t hourSize, char *minute, const size_t 
minuteSize, char *second,
+             const size_t secondSize)
+{
+  int status;
+  struct tm *my_tm;
+  struct timeval tv;
+
+  status = gettimeofday(&tv, NULL);
+  if (status != 0) {
+    return status;
+  }
+  my_tm = localtime(&(tv.tv_sec));
+
+  snprintf(hour, hourSize, "%d", my_tm->tm_hour);
+  snprintf(minute, minuteSize, "%d", my_tm->tm_min);
+  snprintf(second, secondSize, "%d", my_tm->tm_sec);
+
+  return status;
+}
+
+int
+Time_SetTime(bool restart, char *hour, char *minute, char *second)
+{
+  int status;
+
+  status = TimeConfig_Action(TIMECONFIG_TIME, restart, hour, minute, second);
+
+  return status;
+}
+
+int
+Time_SetTimezone(bool restart, char *timezone)
+{
+  int status;
+
+  status = TimeConfig_Action(3, restart, timezone);
+
+  return status;
+}
+
+int
+Time_GetDate(char *month, const size_t monthSize, char *day, const size_t 
daySize, char *year, const size_t yearSize)
+{
+  int status;
+  struct tm *my_tm;
+  struct timeval tv;
+
+  status = gettimeofday(&tv, NULL);
+  if (status != 0) {
+    return status;
+  }
+  my_tm = localtime(&(tv.tv_sec));
+
+  snprintf(month, monthSize, "%d", my_tm->tm_mon + 1);
+  snprintf(day, daySize, "%d", my_tm->tm_mday);
+  snprintf(year, yearSize, "%d", my_tm->tm_year + 1900);
+
+  return status;
+}
+
+int
+Time_SetDate(bool restart, char *month, char *day, char *year)
+{
+  int status;
+
+  status = TimeConfig_Action(TIMECONFIG_DATE, restart, month, day, year);
+
+  return status;
+}
+
+int
+TimeConfig_Action(int index, bool restart ...)
+{
+  const char *argv[20];
+  pid_t pid;
+  int status;
+
+  va_list ap;
+  va_start(ap, restart);
+
+  argv[0] = "time_config";
+  if (restart) {
+    argv[1] = "1";
+  } else {
+    argv[1] = "0";
+  }
+
+  switch (index) {
+  case TIMECONFIG_TIME:
+    argv[2] = "1";
+    argv[3] = va_arg(ap, char *);
+    argv[4] = va_arg(ap, char *);
+    argv[5] = va_arg(ap, char *);
+    argv[6] = NULL;
+    break;
+  case TIMECONFIG_DATE:
+    argv[2] = "2";
+    argv[3] = va_arg(ap, char *);
+    argv[4] = va_arg(ap, char *);
+    argv[5] = va_arg(ap, char *);
+    argv[6] = NULL;
+    break;
+  case TIMECONFIG_TIMEZONE:
+    argv[2] = "3";
+    argv[3] = va_arg(ap, char *);
+    argv[4] = NULL;
+    break;
+  case TIMECONFIG_NTP:
+    argv[2] = "4";
+    argv[3] = va_arg(ap, char *);
+    argv[4] = NULL;
+    break;
+  }
+  va_end(ap);
+
+  if ((pid = fork()) < 0) {
+    exit(1);
+  } else if (pid > 0) {
+    wait(&status);
+  } else {
+    int res;
+
+    //close(1);  // close STDOUT
+    //close(2);  // close STDERR
+
+    char *command_path;
+
+    command_path = Layout::relative_to(Layout::get()->bindir, "time_config");
+    res = execv(command_path, (char* const*)argv);
+
+    ats_free(command_path);
+    if (res != 0) {
+      DPRINTF(("[SysAPI] fail to call time_config\n"));
+    }
+    _exit(res);
+  }
+  return 0;
+}
+
+int
+Net_SetSMTP_Server(char *server)
+{
+  NOWARN_UNUSED(server);
+  return 0;
+}
+
+
+#if defined(linux) || defined(freebsd) || defined(darwin)
+
+int
+Net_GetDefaultRouter(char *router, size_t router_len)
+{
+
+  int value;
+  router[0] = '\0';
+  value = find_value("/etc/sysconfig/network", "GATEWAY", router, router_len, 
"=", 0);
+  DPRINTF(("[Net_GetDefaultRouter] Find returned %d\n", value));
+  if (value) {
+    return !value;
+  } else {
+    char command[80];
+    const char *tmp_file = "/tmp/route_status";
+    char buffer[256];
+    FILE *fp;
+
+    ink_strlcpy(command, "/sbin/route -n > /tmp/route_status", 
sizeof(command));
+    remove(tmp_file);
+    if (system(command) == -1) {
+      DPRINTF(("[Net_GetDefaultRouter] run route -n\n"));
+      return -1;
+    }
+
+    fp = fopen(tmp_file, "r");
+    if (fp == NULL) {
+      DPRINTF(("[Net_GetDefaultRouter] can not open the temp file\n"));
+      return -1;
+    }
+
+    char *gw_start;
+    bool find_UG = false;
+    NOWARN_UNUSED_RETURN(fgets(buffer, 256, fp));
+    while (!feof(fp)) {
+      if (strstr(buffer, "UG") != NULL) {
+        find_UG = true;
+        strtok(buffer, " \t");
+        gw_start = strtok(NULL, " \t");
+        break;
+      }
+      NOWARN_UNUSED_RETURN(fgets(buffer, 256, fp));
+    }
+    if (find_UG) {
+      ink_strlcpy(router, gw_start, router_len);
+      fclose(fp);
+      return 0;
+    }
+    fclose(fp);
+  }
+  return 1;
+
+}
+
+
+int
+Net_GetDNS_Server(char *server, size_t server_len, int no)
+{
+  server[0] = 0;
+  return (!find_value("/etc/resolv.conf", "nameserver", server, server_len, " 
", no));
+}
+
+int
+Net_GetNetworkIntCount()
+{
+
+  FILE *net_device;
+  char buffer[200] = "";
+  int count = 0;
+
+  // for each NIC
+  net_device = fopen("/proc/net/dev", "r");
+  while (!feof(net_device)) {
+    if (fgets(buffer, 200, net_device)) {
+      if (*buffer && strstr(buffer, "eth")) {  // only counts eth interface
+        count++;
+      }
+    }
+  }
+  fclose(net_device);
+  return count;
+}
+
+int
+Net_GetNetworkInt(int int_num, char *interface, size_t interface_len)
+{
+  interface[0] = 0;
+
+  FILE *net_device;
+  char buffer[200];
+  int space_len;
+  char *pos, *tmp;
+  int i = -1;
+
+  *buffer = '\0';
+  net_device = fopen("/proc/net/dev", "r");
+
+  while (!feof(net_device) && (i != int_num)) {
+    if (fgets(buffer, 200, net_device)) {
+      if (strstr(buffer, "eth"))  // only counts the eth interface
+        i++;
+    }
+  }
+  fclose(net_device);
+  if (!*buffer || (i != int_num))
+    return -1;
+
+  pos = strchr(buffer, ':');
+  if (pos)
+    *pos = '\0';
+  space_len = strspn(buffer, " ");
+  tmp = buffer + space_len;
+
+  ink_strlcpy(interface, tmp, interface_len);
+
+  return 0;
+
+}
+
+int
+Net_GetNIC_Status(char *interface, char *status, size_t status_len)
+{
+
+  char ifcfg[80], command[80];
+
+  status[0] = 0;
+
+  ink_strlcpy(ifcfg, "/etc/sysconfig/network-scripts/ifcfg-", sizeof(ifcfg));
+  ink_strlcat(ifcfg, interface, sizeof(ifcfg));
+
+  ink_strlcpy(command, "/sbin/ifconfig | grep ", sizeof(command));
+  ink_strlcat(command, interface, sizeof(command));
+  ink_strlcat(command, " >/dev/null 2>&1", sizeof(command));
+
+  if (system(command) == 0) {
+    ink_strlcpy(status, "up", status_len);
+  } else {
+    ink_strlcpy(status, "down", status_len);
+  }
+  return 0;
+}
+
+int
+Net_GetNIC_Start(char *interface, char *start, size_t start_len)
+{
+
+  char ifcfg[80], value[80];
+
+  start[0] = 0;
+
+  ink_strlcpy(ifcfg, "/etc/sysconfig/network-scripts/ifcfg-", sizeof(ifcfg));
+  ink_strlcat(ifcfg, interface, sizeof(ifcfg));
+
+  if (find_value(ifcfg, "ONBOOT", value, sizeof(value), "=", 0)) {
     if (strcasecmp(value, "yes") == 0) {
       ink_strlcpy(start, "onboot", start_len);
     } else {
@@ -529,139 +908,42 @@ Net_GetNIC_Netmask(char *interface, char
       if (fp == NULL) {
         DPRINTF(("[Net_GetNIC_Netmask] can not open the temp file\n"));
         return -1;
-      }
-
-      char *pos, *mask_end, *mask_start = NULL;
-      NOWARN_UNUSED_RETURN(fgets(buffer, 256, fp));
-      while (!feof(fp)) {
-        if (strstr(buffer, "Mask:") != NULL) {
-          pos = strstr(buffer, "Mask:");
-          mask_start = pos + 5;
-          mask_end = strchr(mask_start, '\n');
-          *mask_end = '\0';
-          break;
-        }
-        NOWARN_UNUSED_RETURN(fgets(buffer, 256, fp));
-      }
-
-      if (mask_start)
-        ink_strlcpy(netmask, mask_start, netmask_len);
-      fclose(fp);
-      return 0;
-    }
-  }
-  return 1;
-
-}
-
-int
-Net_GetNIC_Gateway(char *interface, char *gateway, size_t gateway_len)
-{
-
-  char ifcfg[80];
-
-  gateway[0] = 0;
-  ink_strlcpy(ifcfg, "/etc/sysconfig/network-scripts/ifcfg-", sizeof(ifcfg));
-  ink_strlcat(ifcfg, interface, sizeof(ifcfg));
-
-  return (!find_value(ifcfg, "GATEWAY", gateway, gateway_len, "=", 0));
-}
-
-int
-Net_SetNIC_Down(char *interface)
-{
-  int status;
-  char ip[80];
-
-  if (!Net_IsValid_Interface(interface))
-    return -1;
-
-  status = NetConfig_Action(NETCONFIG_INTF_DOWN, interface);
-  if (status) {
-    return status;
-  }
-
-  Net_GetNIC_IP(interface, ip, sizeof(ip));
-
-  return status;
-}
-
-int
-Net_SetNIC_StartOnBoot(char *interface, char *onboot)
-{
-  char nic_protocol[80], nic_ip[80], nic_netmask[80], nic_gateway[80];
-
-  Net_GetNIC_Protocol(interface, nic_protocol, sizeof(nic_protocol));
-  Net_GetNIC_IP(interface, nic_ip, sizeof(nic_ip));
-  Net_GetNIC_Netmask(interface, nic_netmask, sizeof(nic_netmask));
-  Net_GetNIC_Gateway(interface, nic_gateway, sizeof(nic_gateway));
-
-  return (Net_SetNIC_Up(interface, onboot, nic_protocol, nic_ip, nic_netmask, 
nic_gateway));
-}
+      }
 
-int
-Net_SetNIC_BootProtocol(char *interface, char *nic_protocol)
-{
-  char nic_boot[80], nic_ip[80], nic_netmask[80], nic_gateway[80];
-#if !defined(freebsd) && !defined(darwin)
-  Net_GetNIC_Start(interface, nic_boot, sizeof(nic_boot));
-  Net_GetNIC_IP(interface, nic_ip, sizeof(nic_ip));
-  Net_GetNIC_Netmask(interface, nic_netmask, sizeof(nic_netmask));
-  Net_GetNIC_Gateway(interface, nic_gateway, sizeof(nic_gateway));
-#endif
-  return (Net_SetNIC_Up(interface, nic_boot, nic_protocol, nic_ip, 
nic_netmask, nic_gateway));
-}
+      char *pos, *mask_end, *mask_start = NULL;
+      NOWARN_UNUSED_RETURN(fgets(buffer, 256, fp));
+      while (!feof(fp)) {
+        if (strstr(buffer, "Mask:") != NULL) {
+          pos = strstr(buffer, "Mask:");
+          mask_start = pos + 5;
+          mask_end = strchr(mask_start, '\n');
+          *mask_end = '\0';
+          break;
+        }
+        NOWARN_UNUSED_RETURN(fgets(buffer, 256, fp));
+      }
 
-int
-Net_SetNIC_IP(char *interface, char *nic_ip)
-{
-  //int status;
-#if !defined(freebsd) && !defined(darwin)
-  char nic_boot[80], nic_protocol[80], nic_netmask[80], nic_gateway[80], 
old_ip[80];
-  Net_GetNIC_IP(interface, old_ip, sizeof(old_ip));
-  Net_GetNIC_Start(interface, nic_boot, sizeof(nic_boot));
-  Net_GetNIC_Protocol(interface, nic_protocol, sizeof(nic_protocol));
-  Net_GetNIC_Netmask(interface, nic_netmask, sizeof(nic_netmask));
-  Net_GetNIC_Gateway(interface, nic_gateway, sizeof(nic_gateway));
+      if (mask_start)
+        ink_strlcpy(netmask, mask_start, netmask_len);
+      fclose(fp);
+      return 0;
+    }
+  }
+  return 1;
 
-  return (Net_SetNIC_Up(interface, nic_boot, nic_protocol, nic_ip, 
nic_netmask, nic_gateway));
-#else
-  return -1;
-#endif
 }
 
 int
-Net_SetNIC_Netmask(char *interface, char *nic_netmask)
+Net_GetNIC_Gateway(char *interface, char *gateway, size_t gateway_len)
 {
-#if !defined(freebsd) && !defined(darwin) && !defined(solaris)
-  char nic_boot[80], nic_protocol[80], nic_ip[80], nic_gateway[80];
-  Net_GetNIC_Start(interface, nic_boot, sizeof(nic_boot));
-  Net_GetNIC_Protocol(interface, nic_protocol, sizeof(nic_protocol));
-  Net_GetNIC_IP(interface, nic_ip, sizeof(nic_ip));
-  Net_GetNIC_Gateway(interface, nic_gateway, sizeof(nic_gateway));
 
-  return (Net_SetNIC_Up(interface, nic_boot, nic_protocol, nic_ip, 
nic_netmask, nic_gateway));
-#else
-  return -1;
-#endif
-}
+  char ifcfg[80];
 
-int
-Net_SetNIC_Gateway(char *interface, char *nic_gateway)
-{
-#if !defined(freebsd) && !defined(darwin) && !defined(solaris)
-  char nic_boot[80], nic_protocol[80], nic_ip[80], nic_netmask[80];
-  Net_GetNIC_Start(interface, nic_boot, sizeof(nic_boot));
-  Net_GetNIC_Protocol(interface, nic_protocol, sizeof(nic_protocol));
-  Net_GetNIC_IP(interface, nic_ip, sizeof(nic_ip));
-  Net_GetNIC_Netmask(interface, nic_netmask, sizeof(nic_netmask));
-  DPRINTF(("Net_SetNIC_Gateway:: interface %s onboot %s protocol %s ip %s 
netmask %s gateway %s\n", interface, nic_boot,
-           nic_protocol, nic_ip, nic_netmask, nic_gateway));
+  gateway[0] = 0;
+  ink_strlcpy(ifcfg, "/etc/sysconfig/network-scripts/ifcfg-", sizeof(ifcfg));
+  ink_strlcat(ifcfg, interface, sizeof(ifcfg));
 
-  return (Net_SetNIC_Up(interface, nic_boot, nic_protocol, nic_ip, 
nic_netmask, nic_gateway));
-#else
-  return -1;
-#endif
+  return (!find_value(ifcfg, "GATEWAY", gateway, gateway_len, "=", 0));
 }
 
 int
@@ -736,24 +1018,6 @@ Net_DisableInterface(char *interface)
 
 #endif /* linux */
 
-
-int
-Net_IsValid_Interface(char *interface)
-{
-  char name[80];
-
-  if (interface == NULL) {
-    return 0;
-  }
-  int count = Net_GetNetworkIntCount();
-  for (int i = 0; i < count; i++) {
-    Net_GetNetworkInt(i, name, sizeof(name));
-    if (strcmp(name, interface) == 0)
-      return 1;
-  }
-  return 0;
-}
-
 int
 Sys_User_Root(int *old_euid)
 {
@@ -791,77 +1055,6 @@ Sys_Grp_Inktomi(int egid)
 }
 
 
-int
-find_value(const char *pathname, const char *key, char *value, size_t 
value_len, const char *delim, int no)
-{
-  char buffer[1024];
-  char *pos;
-  char *open_quot, *close_quot;
-  FILE *fp;
-  int find = 0;
-  int counter = 0;
-
-  int str_len = strlen(key);
-
-  value[0] = 0;
-  // coverity[fs_check_call]
-  if (access(pathname, R_OK)) {
-    return find;
-  }
-  // coverity[toctou]
-  if ((fp = fopen(pathname, "r")) != NULL) {
-    NOWARN_UNUSED_RETURN(fgets(buffer, 1024, fp));
-
-    while (!feof(fp)) {
-      if (!isLineCommented(buffer) &&   // skip if line is commented
-          (strstr(buffer, key) != NULL) && ((strncmp((buffer + str_len), "=", 
1) == 0) ||
-                                            (strncmp((buffer + str_len), " ", 
1) == 0) ||
-                                            (strncmp((buffer + str_len), "\t", 
1) == 0))) {
-        if (counter != no) {
-          counter++;
-        } else {
-          find = 1;
-
-          pos = strstr(buffer, delim);
-          if (pos == NULL && (strcmp(delim, " ") == 0)) {       // anniec - 
give tab a try
-            pos = strstr(buffer, "\t");
-          }
-          if (pos != NULL) {
-            pos++;
-            if ((open_quot = strchr(pos, '"')) != NULL) {
-              pos = open_quot + 1;
-              close_quot = strrchr(pos, '"');
-              *close_quot = '\0';
-            }
-            //Bug49159, Dell use "'" in the ifcfg-ethx file
-            else if ((open_quot = strchr(pos, '\'')) != NULL) {
-              pos = open_quot + 1;
-              close_quot = strrchr(pos, '\'');
-              *close_quot = '\0';
-            }
-            //filter the comment on the same line
-            char *cur;
-            cur = pos;
-            while (*cur != '#' && *cur != '\0') {
-              cur++;
-            }
-            *cur = '\0';
-
-            ink_strlcpy(value, pos, value_len);
-
-            if (value[strlen(value) - 1] == '\n') {
-              value[strlen(value) - 1] = '\0';
-            }
-          }
-          break;
-        }
-      }
-      NOWARN_UNUSED_RETURN(fgets(buffer, 1024, fp));
-    }
-    fclose(fp);
-  }
-  return find;
-}
 
 int
 Net_IsValid_Hostname(char *hostname)
@@ -1022,127 +1215,55 @@ recordRegexCheck(const char *pattern, co
   if (!(regex = pcre_compile(pattern, 0, &error, &erroffset, NULL)))
     return false;
 
-  result = pcre_exec(regex, NULL, value, strlen(value), 0, 0, NULL, 0);
-  pcre_free(regex);
-
-  return (result != -1) ? true : false;
-}
-
-int
-Time_SortTimezone()
-{
-  FILE *fp, *tmp;
-  const char *zonetable = "/usr/share/zoneinfo/zone.tab";
-  char buffer[1024];
-  char *zone;
-
-  fp = fopen(zonetable, "r");
-  tmp = fopen("/tmp/zonetab.tmp", "w");
-  if (fp == NULL || tmp == NULL) {
-    DPRINTF(("[Time_SortTimezone] Can not open the file\n"));
-    return -1;
-  }
-  NOWARN_UNUSED_RETURN(fgets(buffer, 1024, fp));
-  while (!feof(fp)) {
-    if (buffer[0] != '#') {
-      strtok(buffer, " \t");
-      strtok(NULL, " \t");
-      zone = strtok(NULL, " \t");
-      if (zone[strlen(zone) - 1] == '\n') {
-        zone[strlen(zone) - 1] = '\0';
-      }
-      fprintf(tmp, "%s\n", zone);
-    }
-    NOWARN_UNUSED_RETURN(fgets(buffer, 1024, fp));
-  }
-  fclose(fp);
-  fclose(tmp);
-  remove("/tmp/zonetab");
-  NOWARN_UNUSED_RETURN(system("/bin/sort /tmp/zonetab.tmp > /tmp/zonetab"));
-  remove("/tmp/zonetab.tmp");
-
-  return 0;
-}
-
-int
-Time_GetTimezone(char *timezone, size_t timezone_len)
-{
-  //const char *zonetable="/usr/share/zoneinfo/zone.tab";
-  //char buffer[1024];
-
-  return (!find_value("/etc/sysconfig/clock", "ZONE", timezone, timezone_len, 
"=", 0));
-}
-
-int
-Time_SetTimezone(bool restart, char *timezone)
-{
-  int status;
-
-  status = TimeConfig_Action(3, restart, timezone);
-
-  return status;
-}
-
-int
-Time_GetTime(char *hour, const size_t hourSize, char *minute, const size_t 
minuteSize, char *second,
-             const size_t secondSize)
-{
-  int status;
-  struct tm *my_tm;
-  struct timeval tv;
-
-  status = gettimeofday(&tv, NULL);
-  if (status != 0) {
-    return status;
-  }
-  my_tm = localtime(&(tv.tv_sec));
-
-  snprintf(hour, hourSize, "%d", my_tm->tm_hour);
-  snprintf(minute, minuteSize, "%d", my_tm->tm_min);
-  snprintf(second, secondSize, "%d", my_tm->tm_sec);
-
-  return status;
-}
-
-int
-Time_SetTime(bool restart, char *hour, char *minute, char *second)
-{
-  int status;
-
-  status = TimeConfig_Action(TIMECONFIG_TIME, restart, hour, minute, second);
+  result = pcre_exec(regex, NULL, value, strlen(value), 0, 0, NULL, 0);
+  pcre_free(regex);
 
-  return status;
+  return (result != -1) ? true : false;
 }
 
-
 int
-Time_GetDate(char *month, const size_t monthSize, char *day, const size_t 
daySize, char *year, const size_t yearSize)
+Time_SortTimezone()
 {
-  int status;
-  struct tm *my_tm;
-  struct timeval tv;
+  FILE *fp, *tmp;
+  const char *zonetable = "/usr/share/zoneinfo/zone.tab";
+  char buffer[1024];
+  char *zone;
 
-  status = gettimeofday(&tv, NULL);
-  if (status != 0) {
-    return status;
+  fp = fopen(zonetable, "r");
+  tmp = fopen("/tmp/zonetab.tmp", "w");
+  if (fp == NULL || tmp == NULL) {
+    DPRINTF(("[Time_SortTimezone] Can not open the file\n"));
+    return -1;
   }
-  my_tm = localtime(&(tv.tv_sec));
-
-  snprintf(month, monthSize, "%d", my_tm->tm_mon + 1);
-  snprintf(day, daySize, "%d", my_tm->tm_mday);
-  snprintf(year, yearSize, "%d", my_tm->tm_year + 1900);
+  NOWARN_UNUSED_RETURN(fgets(buffer, 1024, fp));
+  while (!feof(fp)) {
+    if (buffer[0] != '#') {
+      strtok(buffer, " \t");
+      strtok(NULL, " \t");
+      zone = strtok(NULL, " \t");
+      if (zone[strlen(zone) - 1] == '\n') {
+        zone[strlen(zone) - 1] = '\0';
+      }
+      fprintf(tmp, "%s\n", zone);
+    }
+    NOWARN_UNUSED_RETURN(fgets(buffer, 1024, fp));
+  }
+  fclose(fp);
+  fclose(tmp);
+  remove("/tmp/zonetab");
+  NOWARN_UNUSED_RETURN(system("/bin/sort /tmp/zonetab.tmp > /tmp/zonetab"));
+  remove("/tmp/zonetab.tmp");
 
-  return status;
+  return 0;
 }
 
 int
-Time_SetDate(bool restart, char *month, char *day, char *year)
+Time_GetTimezone(char *timezone, size_t timezone_len)
 {
-  int status;
-
-  status = TimeConfig_Action(TIMECONFIG_DATE, restart, month, day, year);
+  //const char *zonetable="/usr/share/zoneinfo/zone.tab";
+  //char buffer[1024];
 
-  return status;
+  return (!find_value("/etc/sysconfig/clock", "ZONE", timezone, timezone_len, 
"=", 0));
 }
 
 int
@@ -1202,82 +1323,7 @@ Time_SetNTP_Off()
   return status;
 }
 
-int
-TimeConfig_Action(int index, bool restart ...)
-{
-  const char *argv[20];
-  pid_t pid;
-  int status;
-
-  va_list ap;
-  va_start(ap, restart);
-
-  argv[0] = "time_config";
-  if (restart) {
-    argv[1] = "1";
-  } else {
-    argv[1] = "0";
-  }
-
-  switch (index) {
-  case TIMECONFIG_TIME:
-    argv[2] = "1";
-    argv[3] = va_arg(ap, char *);
-    argv[4] = va_arg(ap, char *);
-    argv[5] = va_arg(ap, char *);
-    argv[6] = NULL;
-    break;
-  case TIMECONFIG_DATE:
-    argv[2] = "2";
-    argv[3] = va_arg(ap, char *);
-    argv[4] = va_arg(ap, char *);
-    argv[5] = va_arg(ap, char *);
-    argv[6] = NULL;
-    break;
-  case TIMECONFIG_TIMEZONE:
-    argv[2] = "3";
-    argv[3] = va_arg(ap, char *);
-    argv[4] = NULL;
-    break;
-  case TIMECONFIG_NTP:
-    argv[2] = "4";
-    argv[3] = va_arg(ap, char *);
-    argv[4] = NULL;
-    break;
-  }
-  va_end(ap);
-
-  if ((pid = fork()) < 0) {
-    exit(1);
-  } else if (pid > 0) {
-    wait(&status);
-  } else {
-    int res;
-
-    //close(1);  // close STDOUT
-    //close(2);  // close STDERR
-
-    char *command_path;
-
-    command_path = Layout::relative_to(Layout::get()->bindir, "time_config");
-    res = execv(command_path, (char* const*)argv);
-
-    ats_free(command_path);
-    if (res != 0) {
-      DPRINTF(("[SysAPI] fail to call time_config\n"));
-    }
-    _exit(res);
-  }
-  return 0;
-}
-
 
-int
-Net_SetSMTP_Server(char *server)
-{
-  NOWARN_UNUSED(server);
-  return 0;
-}
 
 int
 Net_GetSMTP_Server(char *server)
@@ -1313,172 +1359,26 @@ Get_Value(char *buffer, size_t buffer_le
     if (tmp_buffer[0] == '"') {
       ink_strlcpy(buffer, tmp_buffer, buffer_len);
       tmp_buffer = strtok(NULL, "\"");
-      ink_strlcat(buffer, " ", buffer_len);
-      ink_strlcat(buffer, tmp_buffer, buffer_len);
-      ink_strlcat(buffer, "\"", buffer_len);
-    } else
-      ink_strlcpy(buffer, tmp_buffer, buffer_len);
-    i++;
-    if (i == location) {
-      char *ptr = strchr(buffer, '\n');
-      if (ptr != NULL)
-        *ptr = '\0';
-      return 0;
-    }
-  }
-  //if we are - we didn't get the value...
-  return -1;
-}
-
-
-#endif /* defined(linux) || defined(freebsd) || defined(darwin) */
-
-#if defined(solaris)
-
-#include "SysAPI.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/time.h>
-#include <stdarg.h>
-#include <string.h>
-
-#include <ctype.h>
-
-#include "ink_string.h"
-
-#include "mgmtapi.h"
-
-#include <arpa/inet.h>
-#include <netinet/in.h>
-#include <sys/types.h>
-
-#include "ParseRules.h"
-
-#define NETCONFIG_HOSTNAME  0
-#define NETCONFIG_GATEWAY   1
-#define NETCONFIG_DOMAIN    2
-#define NETCONFIG_DNS       3
-#define NETCONFIG_INTF_UP   4
-#define NETCONFIG_INTF_DOWN 5
-
-#define TIMECONFIG_ALL     0
-#define TIMECONFIG_TIME     1
-#define TIMECONFIG_DATE     2
-#define TIMECONFIG_TIMEZONE 3
-#define TIMECONFIG_NTP      4
-
-//#define DEBUG_SYSAPI
-#ifdef DEBUG_SYSAPI
-#define DPRINTF(x)  printf x
-#else
-#define DPRINTF(x)
-#endif
-
-const char *
-strcasestr(char *container, char *substr)
-{
-  return ParseRules::strcasestr(container, substr);
-}
-
-// go through string, ane terminate it with \0
-void
-makeStr(char *str)
-{
-  char *p = str;
-  while (*p) {
-    if (*p == '\n') {
-      *p = '\0';
-      return;
-    }
-    p++;
-  }
-}
-
-int NetConfig_Action(int index, ...);
-int TimeConfig_Action(int index, bool restart, ...);
-int Net_GetNIC_Values(char *interface, char *status, char *onboot, char 
*static_ip, char *ip, char *netmask,
-                      char *gateway);
-int find_value(const char *pathname, const char *key, char *value, size_t 
value_len, const char *delim, int no);
-static bool recordRegexCheck(const char *pattern, const char *value);
-
-int
-Net_GetHostname(char *hostname, size_t hostname_len)
-{
-  hostname[0] = 0;
-  return (gethostname(hostname, hostname_len));
-}
-
-int
-Net_SetHostname(char *hostname)
-{
-  int status;
-  char old_hostname[256], protocol[80];
-  char ip_addr[80], name[80], nic_status[80];
-  bool found = false;
-
-  old_hostname[0] = '\0';
-
-  DPRINTF(("Net_SetHostname: hostname %s\n", hostname));
-
-  if (!Net_IsValid_Hostname(hostname)) {
-    DPRINTF(("Net_SetHostname: invalid hostname\n"));
-    return -1;
-  }
-
-  Net_GetHostname(old_hostname,sizeof(old_hostname));
-  if (!strlen(old_hostname)) {
-    DPRINTF(("Net_SetHostname: failed to get old_hostname\n"));
-    return -1;
-  }
-  //Fix for BZ48925 - adding the correct ip to /etc/hosts
-  //First get an IP of a valid interface - we don't care so much which one as 
we don't
-  //use it in TS - it is just a place holder for Real Proxy with no DNS server 
(see BZ38199)
-
-  ip_addr[0] = 0;
-  int count = Net_GetNetworkIntCount();
-  if (count == 0) {             //this means we didn't find any interface
-    ip_addr[0] = 0;
-  } else {
-    name[0] = 0;
-    nic_status[0] = 0;
-    protocol[0] = 0;
-    for (int i = 0; i < count; i++) {   //since we are looping - we will get 
the "last" available IP - doesn't matter to us
-      Net_GetNetworkInt(i, name, sizeof(name)); //we know we have at least one
-      if (name != NULL) {
-        Net_GetNIC_Status(name, nic_status, sizeof(nic_status));
-        Net_GetNIC_Protocol(name, protocol, sizeof(protocol));
-        if ((strcmp("up", nic_status) == 0) && (!found)) {
-          //we can use this interface
-          Net_GetNIC_IP(name, ip_addr, sizeof(ip_addr));
-          found = true;
-        }
-      }
+      ink_strlcat(buffer, " ", buffer_len);
+      ink_strlcat(buffer, tmp_buffer, buffer_len);
+      ink_strlcat(buffer, "\"", buffer_len);
+    } else
+      ink_strlcpy(buffer, tmp_buffer, buffer_len);
+    i++;
+    if (i == location) {
+      char *ptr = strchr(buffer, '\n');
+      if (ptr != NULL)
+        *ptr = '\0';
+      return 0;
     }
   }
-  DPRINTF(("Net_SetHostname: calling INKSetHostname \"%s %s %s\"\n", hostname, 
old_hostname, ip_addr));
-  status = NetConfig_Action(NETCONFIG_HOSTNAME, hostname, old_hostname, 
ip_addr);
-
-  return status;
+  //if we are - we didn't get the value...
+  return -1;
 }
 
-// return true if the line is commented out, or if line is blank
-// return false otherwise
-bool
-isLineCommented(char *line)
-{
-  char *p = line;
-  while (*p) {
-    if (*p == '#')
-      return true;
-    if (!isspace(*p) && *p != '#')
-      return false;
-    p++;
-  }
-  return true;
-}
+#endif /* defined(linux) || defined(freebsd) || defined(darwin) */
+
+#if defined(solaris)
 
 int
 getDefaultRouterViaNetstat(char *gateway)
@@ -1570,107 +1470,6 @@ Net_GetDefaultRouter(char *router, size_
   return 1;                     // follow Linux behavior, return 1 if not 
found, with no error
 }
 
-int
-Net_SetDefaultRouter(char *router)
-{
-  int status;
-  char old_router[80];
-
-  DPRINTF(("Net_SetDefaultRouter: router %s\n", router));
-
-  if (!Net_IsValid_IP(router)) {
-    DPRINTF(("Net_SetDefaultRouter: invalid IP\n"));
-    return -1;
-  }
-
-
-  Net_GetDefaultRouter(old_router, sizeof(old_router));
-  if (!strlen(old_router)) {
-    DPRINTF(("Net_SetHostname: failed to get old_router\n"));
-    return -1;
-  }
-
-  status = NetConfig_Action(NETCONFIG_GATEWAY, router, old_router);
-  DPRINTF(("Net_SetDefaultRouter: NetConfig_Action returned %d\n", status));
-  if (status) {
-    return status;
-  }
-
-  return status;
-}
-
-int
-Net_GetDomain(char *domain, size_t domain_len)
-{
-  //  domain can be defined using search or domain keyword
-  domain[0] = 0;
-  return !find_value("/etc/resolv.conf", "search", domain, domain_len, " ", 0);
-  /*  if there is bug file against this, we should search for domain keyword 
as well
-     if (!find_value("/etc/resolv.conf", "search", domain, domain_len, " ", 
0)) {
-     return (!find_value("/etc/resolv.conf", "domain", domain, domain_len, " 
", 0));
-     }else
-     return 0;
-   */
-}
-
-int
-Net_SetDomain(const char *domain)
-{
-  int status;
-
-  DPRINTF(("Net_SetDomain: domain %s\n", domain));
-
-  status = NetConfig_Action(NETCONFIG_DOMAIN, domain);
-  if (status) {
-    return status;
-  }
-
-  return status;
-}
-
-int
-Net_GetDNS_Servers(char *dns, size_t dns_len)
-{
-  char ip[80];
-  dns[0] = 0;
-  int i = 0;
-  while (find_value("/etc/resolv.conf", "nameserver", ip, sizeof(ip), " ", 
i++)) {
-    ink_strlcpy(dns, ip, dns_len);
-    ink_strlcat(dns, " ", dns_len);
-  }
-  return 0;
-}
-
-int
-Net_SetDNS_Servers(char *dns)
-{
-  int status;
-  char buff[512];
-  char *tmp1, *tmp2;
-
-  DPRINTF(("Net_SetDNS_Servers: dns %s\n", dns));
-
-  if (dns == NULL) {
-    return -1;
-  }
-  // check all IP addresses for validity
-  ink_strlcpy(buff, dns, sizeof(buff));
-  tmp1 = buff;
-  while ((tmp2 = strtok(tmp1, " \t")) != NULL) {
-    DPRINTF(("Net_SetDNS_Servers: tmp2 %s\n", tmp2));
-    if (!Net_IsValid_IP(tmp2)) {
-      return -1;
-    }
-    tmp1 = NULL;
-  }
-  DPRINTF(("Net_SetDNS_Servers: dns %s\n", dns));
-  status = NetConfig_Action(NETCONFIG_DNS, dns);
-  if (status) {
-    return status;
-  }
-
-  return status;
-}
 
 int
 Net_GetNetworkIntCount()
@@ -1973,185 +1772,76 @@ Net_GetNIC_Netmask(char *interface, char
         char *p = buffer;
         while (*p && isspace(*p))
           p++;                  // skip white space
-        char *tmp = cur_network;
-        while (*p && !isspace(*p)) {
-          *(tmp++) = *(p++);
-        }
-        *tmp = 0;               // finish filling cur_network
-        while (*p && isspace(*p))
-          p++;                  // skip white space
-        tmp = cur_netmask;
-        while (*p && !isspace(*p)) {
-          *(tmp++) = *(p++);
-        }
-        *tmp = 0;               // finish filling cur_netmask
-
-        // find best match
-        curMatchingBits = getMatchingBits(cur_network, ip_addr);
-        if (curMatchingBits > maxMatchingBits) {
-          maxMatchingBits = curMatchingBits;
-          ink_strlcpy(winnerMask, cur_netmask, sizeof(winnerMask));
-        }
-      }
-      fgets(buffer, BUFFLEN, fd);
-    }
-    if (maxMatchingBits > 0)
-      ink_strlcpy(netmask, winnerMask, netmask_len);
-    fclose(fd);
-    status = 0;
-  }
-
-  if (!strstr(netmask, ".")) {  // not dotted format
-    char temp[3];
-    int oct[4];
-    int j = 0;
-    for (int i = 0; i < 4; i++, j += 2) {
-      //       temp[0] = netmask[j+1];
-      //temp[1] = netmask[j];
-      temp[0] = netmask[j];
-      temp[1] = netmask[j + 1];
-      temp[2] = '\0';
-      oct[i] = (int) strtol(temp, (char **) NULL, 16);
-    }
-    sprintf(netmask, "%d.%d.%d.%d", oct[0], oct[1], oct[2], oct[3]);
-  }
-  return status;
-
-}
-
-int
-Net_GetNIC_Gateway(char *interface, char *gateway, size_t gateway_len)
-{
-  // command is netstat -rn | grep <interface name> | grep G
-  // the 2nd column is the Gateway
-  gateway[0] = 0;
-  const int BUFFLEN = 200;
-  char command[BUFFLEN];
-  char buffer[BUFFLEN];
-  snprintf(command, sizeof(command), "/usr/bin/netstat -rn | grep %s | grep 
G", interface);
-  FILE *fd = popen(command, "r");
-
-  if (fd && fgets(buffer, BUFFLEN, fd)) {       // gateway found
-    char *p = buffer;
-    while (*p && !isspace(*p))
-      p++;                      // reach first white space
-    while (*p && isspace(*p))
-      p++;                      // skip white space
-    while (*p && !isspace(*p))
-      *(gateway++) = *(p++);
-    *gateway = 0;
-    return 0;
-  } else                        // gateway not found
-    return -1;
-}
-
-int
-Net_SetNIC_Down(char *interface)
-{
-  int status;
-  char ip[80];
-
-  if (!Net_IsValid_Interface(interface))
-    return -1;
-
-  status = NetConfig_Action(NETCONFIG_INTF_DOWN, interface);
-  if (status) {
-    return status;
-  }
-
-  Net_GetNIC_IP(interface, ip, sizeof(ip));
-
-  return status;
-}
-
-int
-Net_SetNIC_StartOnBoot(char *interface, char *onboot)
-{
-  char nic_protocol[80], nic_ip[80], nic_netmask[80], nic_gateway[80];
-
-  Net_GetNIC_Protocol(interface, nic_protocol,sizeof(nic_protocol));
-  Net_GetNIC_IP(interface, nic_ip, sizeof(nic_ip));
-  Net_GetNIC_Netmask(interface, nic_netmask, sizeof(nic_netmask));
-  Net_GetNIC_Gateway(interface, nic_gateway, sizeof(nic_gateway));
-
-  return (Net_SetNIC_Up(interface, onboot, nic_protocol, nic_ip, nic_netmask, 
nic_gateway));
-}
-
-int
-Net_SetNIC_BootProtocol(char *interface, char *nic_protocol)
-{
-  char nic_boot[80], nic_ip[80], nic_netmask[80], nic_gateway[80];
-#if !defined(freebsd) && !defined(darwin)
-  Net_GetNIC_Start(interface, nic_boot, sizeof(nic_boot));
-  Net_GetNIC_IP(interface, nic_ip, sizeof(nic_ip));
-  Net_GetNIC_Netmask(interface, nic_netmask, sizeof(nic_netmask));
-  Net_GetNIC_Gateway(interface, nic_gateway, sizeof(nic_gateway));
-
-  return (Net_SetNIC_Up(interface, nic_boot, nic_protocol, nic_ip, 
nic_netmask, nic_gateway));
-#else
-  return -1;
-#endif
-}
-
-int
-Net_SetNIC_IP(char *interface, char *nic_ip)
-{
-  //int status;
-  // XXX: Why this test?
-  //      We are inside #define host_os == solaris
-  //
-#if !defined(freebsd) && !defined(darwin) && !defined(solaris)
-  char nic_boot[80], nic_protocol[80], nic_netmask[80], nic_gateway[80], 
old_ip[80];
-  Net_GetNIC_IP(interface, old_ip, sizeof(old_ip));
-  Net_GetNIC_Start(interface, nic_boot);
-  Net_GetNIC_Protocol(interface, nic_protocol);
-  Net_GetNIC_Netmask(interface, nic_netmask, sizeof(nic_netmask));
-  Net_GetNIC_Gateway(interface, nic_gateway);
+        char *tmp = cur_network;
+        while (*p && !isspace(*p)) {
+          *(tmp++) = *(p++);
+        }
+        *tmp = 0;               // finish filling cur_network
+        while (*p && isspace(*p))
+          p++;                  // skip white space
+        tmp = cur_netmask;
+        while (*p && !isspace(*p)) {
+          *(tmp++) = *(p++);
+        }
+        *tmp = 0;               // finish filling cur_netmask
 
-  return (Net_SetNIC_Up(interface, nic_boot, nic_protocol, nic_ip, 
nic_netmask, nic_gateway));
-#else
-  return -1;
-#endif
-}
+        // find best match
+        curMatchingBits = getMatchingBits(cur_network, ip_addr);
+        if (curMatchingBits > maxMatchingBits) {
+          maxMatchingBits = curMatchingBits;
+          ink_strlcpy(winnerMask, cur_netmask, sizeof(winnerMask));
+        }
+      }
+      fgets(buffer, BUFFLEN, fd);
+    }
+    if (maxMatchingBits > 0)
+      ink_strlcpy(netmask, winnerMask, netmask_len);
+    fclose(fd);
+    status = 0;
+  }
 
-int
-Net_SetNIC_Netmask(char *interface, char *nic_netmask)
-{
-  // XXX: Why this test?
-  //      We are inside #define host_os == solaris
-  //
-#if !defined(freebsd) && !defined(darwin) && !defined(solaris)
-  char nic_boot[80], nic_protocol[80], nic_ip[80], nic_gateway[80];
-  Net_GetNIC_Start(interface, nic_boot);
-  Net_GetNIC_Protocol(interface, nic_protocol);
-  Net_GetNIC_IP(interface, nic_ip, sizeof(nic_ip));
-  Net_GetNIC_Gateway(interface, nic_gateway);
+  if (!strstr(netmask, ".")) {  // not dotted format
+    char temp[3];
+    int oct[4];
+    int j = 0;
+    for (int i = 0; i < 4; i++, j += 2) {
+      //       temp[0] = netmask[j+1];
+      //temp[1] = netmask[j];
+      temp[0] = netmask[j];
+      temp[1] = netmask[j + 1];
+      temp[2] = '\0';
+      oct[i] = (int) strtol(temp, (char **) NULL, 16);
+    }
+    sprintf(netmask, "%d.%d.%d.%d", oct[0], oct[1], oct[2], oct[3]);
+  }
+  return status;
 
-  return (Net_SetNIC_Up(interface, nic_boot, nic_protocol, nic_ip, 
nic_netmask, nic_gateway));
-#else
-  return -1;
-#endif
 }
 
 int
-Net_SetNIC_Gateway(char *interface, char *nic_gateway)
+Net_GetNIC_Gateway(char *interface, char *gateway, size_t gateway_len)
 {
-  // XXX: Why this test?
-  //      We are inside #define host_os == solaris
-  //
-#if !defined(freebsd) && !defined(darwin) && !defined(solaris)
-  char nic_boot[80], nic_protocol[80], nic_ip[80], nic_netmask[80];
-  Net_GetNIC_Start(interface, nic_boot);
-  Net_GetNIC_Protocol(interface, nic_protocol);
-  Net_GetNIC_IP(interface, nic_ip, sizeof(nic_ip));
-  Net_GetNIC_Netmask(interface, nic_netmask, sizeof(nic_netmask));
-
-  //   DPRINTF(("Net_SetNIC_Gateway:: interface %s onboot %s protocol %s ip %s 
netmask %s gateway %s\n", interface, nic_boot, nic_protocol, nic_ip, 
nic_netmask, nic_gateway));
+  // command is netstat -rn | grep <interface name> | grep G
+  // the 2nd column is the Gateway
+  gateway[0] = 0;
+  const int BUFFLEN = 200;
+  char command[BUFFLEN];
+  char buffer[BUFFLEN];
+  snprintf(command, sizeof(command), "/usr/bin/netstat -rn | grep %s | grep 
G", interface);
+  FILE *fd = popen(command, "r");
 
-  return (Net_SetNIC_Up(interface, nic_boot, nic_protocol, nic_ip, 
nic_netmask, nic_gateway));
-#else
-  return -1;
-#endif
+  if (fd && fgets(buffer, BUFFLEN, fd)) {       // gateway found
+    char *p = buffer;
+    while (*p && !isspace(*p))
+      p++;                      // reach first white space
+    while (*p && isspace(*p))
+      p++;                      // skip white space
+    while (*p && !isspace(*p))
+      *(gateway++) = *(p++);
+    *gateway = 0;
+    return 0;
+  } else                        // gateway not found
+    return -1;
 }
 
 int
@@ -2181,21 +1871,16 @@ Net_SetNIC_Up(char *interface, char *onb
   Net_GetNIC_Gateway(interface, old_gateway, sizeof(old_gateway));
   Net_GetDefaultRouter(default_gateway, sizeof(default_gateway));
 
-  if (strcmp(protocol, "static") == 0) {
-    protocol[0] = '1';
-    protocol[1] = 0;
-  } else if (strcmp(protocol, "dhcp") == 0) {
-    protocol[0] = '0';
-    protocol[1] = 0;
+  if (strcmp(onboot, "onboot") == 0) {
+    ink_strlcpy(onboot_bool, "1", sizeof(onboot_bool));
+  } else {
+    ink_strlcpy(onboot_bool, "0", sizeof(onboot_bool));
   }
 
-
-  if (strcmp(onboot, "onboot") == 0) {
-    protocol[0] = '1';
-    protocol[1] = 0;
-  } else if (strcmp(onboot, "not-onboot") == 0) {
-    protocol[0] = '0';
-    protocol[1] = 0;
+  if (strcmp(protocol, "dhcp") == 0) {
+    ink_strlcpy(protocol_bool, "0", sizeof(protocol_bool));
+  } else {
+    ink_strlcpy(protocol_bool, "1", sizeof(protocol_bool));
   }
 
   status = NetConfig_Action(NETCONFIG_INTF_UP, interface, protocol, ip, 
netmask, onboot, gateway,
@@ -2209,22 +1894,6 @@ Net_SetNIC_Up(char *interface, char *onb
   return status;
 }
 
-int
-Net_IsValid_Interface(char *interface)
-{
-  char name[80];
-
-  if (interface == NULL) {
-    return 0;
-  }
-  int count = Net_GetNetworkIntCount();
-  for (int i = 0; i < count; i++) {
-    Net_GetNetworkInt(i, name, sizeof(name));
-    if (strcmp(name, interface) == 0)
-      return 1;
-  }
-  return 0;
-}
 
 int
 Net_IsValid_Hostname(char *hostname)
@@ -2429,77 +2098,6 @@ Time_SortTimezone()
   return 0;
 }
 
-int
-Time_SetTimezone(bool restart, char *timezone)
-{
-  int status;
-
-  status = TimeConfig_Action(3, restart, timezone);
-
-  return status;
-}
-
-int
-Time_GetTime(char *hour, char *minute, char *second)
-{
-  int status;
-  struct tm *my_tm;
-  struct timeval tv;
-
-  status = gettimeofday(&tv, NULL);
-  if (status != 0) {
-    return status;
-  }
-  my_tm = localtime(&(tv.tv_sec));
-
-  sprintf(hour, "%d", my_tm->tm_hour);
-  sprintf(minute, "%d", my_tm->tm_min);
-  sprintf(second, "%d", my_tm->tm_sec);
-
-  return status;
-}
-
-int
-Time_SetTime(bool restart, char *hour, char *minute, char *second)
-{
-  int status;
-
-  status = TimeConfig_Action(TIMECONFIG_TIME, restart, hour, minute, second);
-
-  return status;
-}
-
-
-int
-Time_GetDate(char *month, char *day, char *year)
-{
-  int status;
-  struct tm *my_tm;
-  struct timeval tv;
-
-  status = gettimeofday(&tv, NULL);
-  if (status != 0) {
-    return status;
-  }
-  my_tm = localtime(&(tv.tv_sec));
-
-  sprintf(month, "%d", my_tm->tm_mon + 1);
-  sprintf(day, "%d", my_tm->tm_mday);
-  sprintf(year, "%d", my_tm->tm_year + 1900);
-
-  return status;
-}
-
-int
-Time_SetDate(bool restart, char *month, char *day, char *year)
-{
-  int status;
-
-  status = TimeConfig_Action(TIMECONFIG_DATE, restart, month, day, year);
-
-  return status;
-}
-
 
 int
 Time_SetNTP_Servers(bool restart, char *server)
@@ -2519,87 +2117,6 @@ Time_GetNTP_Server(char *server, int no)
 }
 
 int
-TimeConfig_Action(int index, bool restart ...)
-{
-  const char *argv[20];
-  pid_t pid;
-  int status;
-
-  va_list ap;
-  va_start(ap, restart);
-
-  argv[0] = "time_config";
-  if (restart) {
-    argv[1] = "1";
-  } else {
-    argv[1] = "0";
-  }
-
-  switch (index) {
-  case TIMECONFIG_TIME:
-    argv[2] = "1";
-    argv[3] = va_arg(ap, char *);
-    argv[4] = va_arg(ap, char *);
-    argv[5] = va_arg(ap, char *);
-    argv[6] = NULL;
-    break;
-  case TIMECONFIG_DATE:
-    argv[2] = "2";
-    argv[3] = va_arg(ap, char *);
-    argv[4] = va_arg(ap, char *);
-    argv[5] = va_arg(ap, char *);
-    argv[6] = NULL;
-    break;
-  case TIMECONFIG_TIMEZONE:
-    argv[2] = "3";
-    argv[3] = va_arg(ap, char *);
-    argv[4] = NULL;
-    break;
-  case TIMECONFIG_NTP:
-    argv[2] = "4";
-    argv[3] = va_arg(ap, char *);
-    argv[4] = NULL;
-    break;
-  }
-  va_end(ap);
-
-  if ((pid = fork()) < 0) {
-    exit(1);
-  } else if (pid > 0) {
-    waitpid(pid, &status, 0);
-  } else {
-    int res;
-
-    //close(1);  // close STDOUT
-    //close(2);  // close STDERR
-
-    char *command_path;
-
-    command_path = Layout::relative_to(Layout::get()->bindir, "time_config");
-    res = execv(command_path, (char* const*) argv);
-    ats_free(command_path);
-    if (res != 0) {
-      DPRINTF(("[SysAPI] fail to call time_config"));
-    }
-    _exit(res);
-  }
-
-  return 0;
-}
-
-int
-Net_SetSMTP_Server(char *server)
-{
-  return 0;
-}
-
-int
-Net_GetSMTP_Server(char *server)
-{
-  return 0;
-}
-
-int
 Time_GetNTP_Status(char *status)
 {
   return 0;


Reply via email to