From b508f93679d5e05e5d0940439afbf7acbf53ee03 Mon Sep 17 00:00:00 2001 From: Hans Dedecker Date: Thu, 16 Apr 2015 15:08:18 +0200 Subject: [PATCH] nat46: Delete 464xlat device when pause is interrupted by SIGTERM --- nat46/src/464xlatcfg.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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); } -- 2.30.2