/[pengfork]/pengfork/src/misc.c
ViewVC logotype

Diff of /pengfork/src/misc.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6 by chupa, Fri Sep 6 23:03:55 2002 UTC revision 1.7 by chupa, Sat Oct 19 12:11:58 2002 UTC
# Line 25  Line 25 
25  #include <stdlib.h>  #include <stdlib.h>
26  #include <stdio.h>  #include <stdio.h>
27  #include <unistd.h>  #include <unistd.h>
28    #include <sys/socket.h>
29  #include <netinet/in.h>  #include <netinet/in.h>
30    #include <arpa/inet.h>
31    #include <string.h>
32    #include <errno.h>
33    
34  #include "log.h"  #include "log.h"
35  #include "misc.h"  #include "misc.h"
36  #include "options.h"  #include "options.h"
37    
38  int  int
39  launch_ip_up (if_name, if_addr, if_netmask, if_network, if_broadcast,  launch_ip_up (if_name, if_addr, dns, domain, mtu)
               if_gateway)  
40       char *if_name;       char *if_name;
41       in_addr_t if_addr;       struct in_addr if_addr;
42       in_addr_t if_netmask;       struct in_addr dns;
43       in_addr_t if_network;       char *domain;
44       in_addr_t if_broadcast;       int mtu;
      in_addr_t if_gateway;  
45  {  {
46    char name[128];    char env_name[128];
47    char addr[128];    char env_addr[128];
48    char netmask[128];    char env_dns[128];
49    char network[128];    char env_domain[128];
50    char broadcast[128];    char env_mtu[128];
   char gateway[128];  
51    int pid;    int pid;
52    struct stat st;    struct stat st;
53    
54    snprintf (name, sizeof (name) - 1, "IFNAME=%s", if_name);    snprintf (env_name, sizeof (env_name) - 1, "IFNAME=%s", if_name);
55    snprintf (addr, sizeof (addr) - 1, "ADDRESS=%d.%d.%d.%d",    snprintf (env_addr, sizeof (env_addr) - 1, "ADDRESS=%s", inet_ntoa(if_addr));
56              if_addr >> 24 & 0xff,    snprintf (env_dns, sizeof (env_dns) - 1, "DNS=%s", inet_ntoa(dns));
57              if_addr >> 16 & 0xff, if_addr >> 8 & 0xff, if_addr & 0xff);    snprintf (env_domain, sizeof (env_domain) - 1, "DOMAIN=%s", domain);
58    snprintf (netmask, sizeof (netmask) - 1, "NETMASK=%d.%d.%d.%d",    snprintf (env_mtu, sizeof (env_mtu) - 1, "MTU=%d", mtu);
             if_netmask >> 24 & 0xff,  
             if_netmask >> 16 & 0xff,  
             if_netmask >> 8 & 0xff, if_netmask & 0xff);  
   snprintf (network, sizeof (network) - 1, "NETWORK=%d.%d.%d.%d",  
             if_network >> 24 & 0xff,  
             if_network >> 16 & 0xff,  
             if_network >> 8 & 0xff, if_network & 0xff);  
   snprintf (broadcast, sizeof (broadcast) - 1, "BROADCAST=%d.%d.%d.%d",  
             if_broadcast >> 24 & 0xff,  
             if_broadcast >> 16 & 0xff,  
             if_broadcast >> 8 & 0xff, if_broadcast & 0xff);  
   snprintf (gateway, sizeof (gateway) - 1, "GATEWAY=%d.%d.%d.%d",  
             if_gateway >> 24 & 0xff,  
             if_gateway >> 16 & 0xff,  
             if_gateway >> 8 & 0xff, if_gateway & 0xff);  
59    
60    if (PARAM_IP_UP && !stat (PARAM_IP_UP, &st))    if (PARAM_IP_UP && !stat (PARAM_IP_UP, &st))
61      {      {
# Line 78  launch_ip_up (if_name, if_addr, if_netma Line 64  launch_ip_up (if_name, if_addr, if_netma
64        pid = fork ();        pid = fork ();
65        if (pid == 0)        if (pid == 0)
66          {          {
67            if (putenv (name) ||            if (putenv (env_name) || putenv (env_addr) ||
68                putenv (addr) ||                putenv (env_dns) || putenv (env_domain) || putenv (env_mtu))
69                putenv (netmask) ||              log (LOG_WARNING, "Can't set environment variables: %s (%d)",
70                putenv (network) || putenv (broadcast) || putenv (gateway))                 strerror(errno), errno);
             perror ("putenv");  
71    
72            /* execlp allows shell script execution */            /* execlp allows shell script execution */
73            if (execlp (PARAM_IP_UP, PARAM_IP_UP, NULL))            if (execlp (PARAM_IP_UP, PARAM_IP_UP, NULL))
74              perror ("execlp");            log (LOG_WARNING, "Can't exec script %s: %s (%d)",
75                   PARAM_IP_UP, strerror(errno), errno);    
76            exit (-1);            exit (-1);
77          }          }
78        else if (pid > 0)        else if (pid > 0)
# Line 95  launch_ip_up (if_name, if_addr, if_netma Line 81  launch_ip_up (if_name, if_addr, if_netma
81          }          }
82        else        else
83          {          {
84            perror ("fork");          log (LOG_WARNING, "Can't fork: %s (%d)",
85                 strerror(errno), errno);
86            return 0;            return 0;
87          }          }
88      }      }
# Line 104  launch_ip_up (if_name, if_addr, if_netma Line 91  launch_ip_up (if_name, if_addr, if_netma
91    
92    
93  int  int
94  launch_down_up (if_name, if_addr, if_netmask, if_network, if_broadcast,  launch_ip_down (if_name)
                 if_gateway)  
95       char *if_name;       char *if_name;
      in_addr_t if_addr;  
      in_addr_t if_netmask;  
      in_addr_t if_network;  
      in_addr_t if_broadcast;  
      in_addr_t if_gateway;  
96  {  {
97    char name[128];    char name[128];
   char addr[128];  
   char netmask[128];  
   char network[128];  
   char broadcast[128];  
   char gateway[128];  
98    int pid;    int pid;
99    struct stat st;    struct stat st;
100    
101    snprintf (name, sizeof (name) - 1, "IFNAME=%s", if_name);    snprintf (name, sizeof (name) - 1, "IFNAME=%s", if_name);
   snprintf (addr, sizeof (addr) - 1, "ADDRESS=%d.%d.%d.%d",  
             if_addr >> 24 & 0xff,  
             if_addr >> 16 & 0xff, if_addr >> 8 & 0xff, if_addr & 0xff);  
   snprintf (netmask, sizeof (netmask) - 1, "NETMASK=%d.%d.%d.%d",  
             if_netmask >> 24 & 0xff,  
             if_netmask >> 16 & 0xff,  
             if_netmask >> 8 & 0xff, if_netmask & 0xff);  
   snprintf (network, sizeof (network) - 1, "NETWORK=%d.%d.%d.%d",  
             if_network >> 24 & 0xff,  
             if_network >> 16 & 0xff,  
             if_network >> 8 & 0xff, if_network & 0xff);  
   snprintf (broadcast, sizeof (broadcast) - 1, "BROADCAST=%d.%d.%d.%d",  
             if_broadcast >> 24 & 0xff,  
             if_broadcast >> 16 & 0xff,  
             if_broadcast >> 8 & 0xff, if_broadcast & 0xff);  
   snprintf (gateway, sizeof (gateway) - 1, "GATEWAY=%d.%d.%d.%d",  
             if_gateway >> 24 & 0xff,  
             if_gateway >> 16 & 0xff,  
             if_gateway >> 8 & 0xff, if_gateway & 0xff);  
102    
103    if (PARAM_IP_DOWN && !stat (PARAM_IP_DOWN, &st))    if (PARAM_IP_DOWN && !stat (PARAM_IP_DOWN, &st))
104      {      {
# Line 150  launch_down_up (if_name, if_addr, if_net Line 107  launch_down_up (if_name, if_addr, if_net
107        pid = fork ();        pid = fork ();
108        if (pid > 0)        if (pid > 0)
109          {          {
110            if (putenv (name) ||            if (putenv (name))
111                putenv (addr) ||              log (LOG_WARNING, "Can't set environment variables: %s (%d)",
112                putenv (netmask) ||                 strerror(errno), errno);
               putenv (network) || putenv (broadcast) || putenv (gateway))  
             perror ("putenv");  
113    
114            if (execlp (PARAM_IP_DOWN, PARAM_IP_DOWN, NULL))            if (execlp (PARAM_IP_DOWN, PARAM_IP_DOWN, NULL))
115              perror ("execv");            log (LOG_WARNING, "Can't exec script %s: %s (%d)",
116                   PARAM_IP_UP, strerror(errno), errno);    
117            exit (-1);            exit (-1);
118          }          }
119        else if (pid == 0)        else if (pid == 0)
# Line 165  launch_down_up (if_name, if_addr, if_net Line 121  launch_down_up (if_name, if_addr, if_net
121          }          }
122        else        else
123          {          {
124            perror ("fork");          log (LOG_WARNING, "Can't fork: %s (%d)",
125                 strerror(errno), errno);
126            return 0;            return 0;
127          }          }
128      }      }

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26