20 |
* |
* |
21 |
*/ |
*/ |
22 |
|
|
23 |
|
#include "config.h" |
24 |
|
|
25 |
#include <sys/types.h> |
#include <sys/types.h> |
26 |
#include <sys/stat.h> |
#include <sys/stat.h> |
27 |
#include <stdlib.h> |
#include <stdlib.h> |
33 |
#include <string.h> |
#include <string.h> |
34 |
#include <errno.h> |
#include <errno.h> |
35 |
|
|
36 |
|
#include "gettext.h" |
37 |
#include "log.h" |
#include "log.h" |
38 |
#include "misc.h" |
#include "misc.h" |
39 |
#include "options.h" |
#include "options.h" |
55 |
struct stat st; |
struct stat st; |
56 |
|
|
57 |
snprintf (env_name, sizeof (env_name) - 1, "IFNAME=%s", if_name); |
snprintf (env_name, sizeof (env_name) - 1, "IFNAME=%s", if_name); |
58 |
snprintf (env_addr, sizeof (env_addr) - 1, "ADDRESS=%s", inet_ntoa(if_addr)); |
snprintf (env_addr, sizeof (env_addr) - 1, "ADDRESS=%s", |
59 |
snprintf (env_dns, sizeof (env_dns) - 1, "DNS=%s", inet_ntoa(dns)); |
inet_ntoa (if_addr)); |
60 |
|
snprintf (env_dns, sizeof (env_dns) - 1, "DNS=%s", inet_ntoa (dns)); |
61 |
snprintf (env_domain, sizeof (env_domain) - 1, "DOMAIN=%s", domain); |
snprintf (env_domain, sizeof (env_domain) - 1, "DOMAIN=%s", domain); |
62 |
snprintf (env_mtu, sizeof (env_mtu) - 1, "MTU=%d", mtu); |
snprintf (env_mtu, sizeof (env_mtu) - 1, "MTU=%d", mtu); |
63 |
|
|
70 |
{ |
{ |
71 |
if (putenv (env_name) || putenv (env_addr) || |
if (putenv (env_name) || putenv (env_addr) || |
72 |
putenv (env_dns) || putenv (env_domain) || putenv (env_mtu)) |
putenv (env_dns) || putenv (env_domain) || putenv (env_mtu)) |
73 |
log (LOG_WARNING, "Can't set environment variables: %s (%d)", |
log (LOG_WARNING, gettext ("Can't set environment variables: %s (%d)\n"), |
74 |
strerror(errno), errno); |
strerror (errno), errno); |
75 |
|
|
76 |
/* execlp allows shell script execution */ |
/* execlp allows shell script execution */ |
77 |
if (execlp (PARAM_IP_UP, PARAM_IP_UP, NULL)) |
if (execlp (PARAM_IP_UP, PARAM_IP_UP, NULL)) |
78 |
log (LOG_WARNING, "Can't exec script %s: %s (%d)", |
log (LOG_WARNING, gettext ("Can't exec script %s: %s (%d)\n"), |
79 |
PARAM_IP_UP, strerror(errno), errno); |
PARAM_IP_UP, strerror (errno), errno); |
80 |
exit (-1); |
exit (-1); |
81 |
} |
} |
82 |
else if (pid > 0) |
else if (pid > 0) |
85 |
} |
} |
86 |
else |
else |
87 |
{ |
{ |
88 |
log (LOG_WARNING, "Can't fork: %s (%d)", |
log (LOG_WARNING, gettext ("Can't fork: %s (%d)\n"), strerror (errno), errno); |
|
strerror(errno), errno); |
|
89 |
return 0; |
return 0; |
90 |
} |
} |
91 |
} |
} |
111 |
if (pid > 0) |
if (pid > 0) |
112 |
{ |
{ |
113 |
if (putenv (name)) |
if (putenv (name)) |
114 |
log (LOG_WARNING, "Can't set environment variables: %s (%d)", |
log (LOG_WARNING, gettext ("Can't set environment variables: %s (%d)\n"), |
115 |
strerror(errno), errno); |
strerror (errno), errno); |
116 |
|
|
117 |
if (execlp (PARAM_IP_DOWN, PARAM_IP_DOWN, NULL)) |
if (execlp (PARAM_IP_DOWN, PARAM_IP_DOWN, NULL)) |
118 |
log (LOG_WARNING, "Can't exec script %s: %s (%d)", |
log (LOG_WARNING, gettext ("Can't exec script %s: %s (%d)\n"), |
119 |
PARAM_IP_DOWN, strerror(errno), errno); |
PARAM_IP_DOWN, strerror (errno), errno); |
120 |
exit (-1); |
exit (-1); |
121 |
} |
} |
122 |
else if (pid == 0) |
else if (pid == 0) |
124 |
} |
} |
125 |
else |
else |
126 |
{ |
{ |
127 |
log (LOG_WARNING, "Can't fork: %s (%d)", |
log (LOG_WARNING, gettext ("Can't fork: %s (%d)\n"), strerror (errno), errno); |
|
strerror(errno), errno); |
|
128 |
return 0; |
return 0; |
129 |
} |
} |
130 |
} |
} |