diff --git a/nat46/src/464xlatcfg.c b/nat46/src/464xlatcfg.c index dfce9d7..1d9466e 100644 --- a/nat46/src/464xlatcfg.c +++ b/nat46/src/464xlatcfg.c @@ -23,6 +23,10 @@ #include #include +static void sighandler(__attribute__((unused)) int signal) +{ +} + 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; + signal(SIGTERM, sighandler); + 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(); + + nat46 = fopen("/proc/net/nat46/control", "w"); + if (nat46) { + fprintf(nat46, "del %s\n", argv[1]); + fclose(nat46); + } } else { fprintf(fp, "%d\n", pid); }