projects
/
lede-routing
/
.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e74055b
)
nat46: Delete 464xlat device when pause is interrupted by SIGTERM
author
Hans Dedecker
<hans.dedecker@technicolor.com>
Thu, 16 Apr 2015 13:08:18 +0000
(15:08 +0200)
committer
Hans Dedecker
<hans.dedecker@technicolor.com>
Thu, 16 Apr 2015 13:08:18 +0000
(15:08 +0200)
nat46/src/464xlatcfg.c
patch
|
blob
|
history
diff --git
a/nat46/src/464xlatcfg.c
b/nat46/src/464xlatcfg.c
index dfce9d720d29e9a358db404afd782dbce8b20963..1d9466ed98681bcdb4cdc6d5f07eeb157ff273ba 100644
(file)
--- a/
nat46/src/464xlatcfg.c
+++ b/
nat46/src/464xlatcfg.c
@@
-23,6
+23,10
@@
#include <stdio.h>
#include <netdb.h>
#include <stdio.h>
#include <netdb.h>
+static void sighandler(__attribute__((unused)) int signal)
+{
+}
+
int main(int argc, const char *argv[])
{
char buf[INET6_ADDRSTRLEN], prefix[INET6_ADDRSTRLEN + 4];
int main(int argc, const char *argv[])
{
char buf[INET6_ADDRSTRLEN], prefix[INET6_ADDRSTRLEN + 4];
@@
-48,6
+52,8
@@
int main(int argc, const char *argv[])
if (!argv[3] || !argv[4] || !(fp = fopen(buf, "wx")))
return 1;
if (!argv[3] || !argv[4] || !(fp = fopen(buf, "wx")))
return 1;
+ signal(SIGTERM, sighandler);
+
prefix[sizeof(prefix) - 1] = 0;
strncpy(prefix, argv[3], sizeof(prefix) - 1);
prefix[sizeof(prefix) - 1] = 0;
strncpy(prefix, argv[3], sizeof(prefix) - 1);
@@
-108,6
+114,12
@@
int main(int argc, const char *argv[])
chdir("/");
setsid();
pause();
chdir("/");
setsid();
pause();
+
+ nat46 = fopen("/proc/net/nat46/control", "w");
+ if (nat46) {
+ fprintf(nat46, "del %s\n", argv[1]);
+ fclose(nat46);
+ }
} else {
fprintf(fp, "%d\n", pid);
}
} else {
fprintf(fp, "%d\n", pid);
}