clatd - wait for SIGTERM before terminating

Example log from tests:
  ...
  04-01 04:12:22.246  4699  4699 I clatd   : Starting clat version 1.4 on netdd54bd mark=0xfffdd plat=2001:db8:cafe:f00d:1:2:: v4=192.0.0.4 v6=2001:db8:1:2:841b:2681:290a:d5d8
  04-01 04:12:22.247  4699  4699 I clatd   : Using ring buffer with 656 frames (1048576 bytes) at 0xe9883000
  04-01 04:12:22.248  4699  4699 W clatd   : ipv4 mtu is 1472
  04-01 04:12:22.248  4699  4699 I clatd   : Using IPv4 address 192.0.0.4 on v4-netdd54bd
  04-01 04:12:22.268   322   322 E ClatdController: clatd pid=4699 already started on netdd54bd
  04-01 04:12:22.270  4699  4699 I clatd   : Using IPv6 address 2001:db8:1:2:841b:2681:290a:d5d8 on netdd54bd
  04-01 04:12:22.404  4699  4699 I clatd   : Shutting down clat on netdd54bd
  04-01 04:12:22.427  4699  4699 I clatd   : Clatd on netdd54bd already received SIGTERM
  ...

Bug: 181601458
Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: If6458fb4fd1d611992774e9ae5ec324162ab0629
diff --git a/main.c b/main.c
index bfcad48..52e22ac 100644
--- a/main.c
+++ b/main.c
@@ -148,5 +148,16 @@
   logmsg(ANDROID_LOG_INFO, "Shutting down clat on %s", uplink_interface);
   del_anycast_address(tunnel.write_fd6, &Global_Clatd_Config.ipv6_local_subnet);
 
+  close(tunnel.write_fd6);
+  close(tunnel.read_fd6);
+  close(tunnel.fd4);
+
+  if (running) {
+    logmsg(ANDROID_LOG_INFO, "Clatd on %s waiting for SIGTERM", uplink_interface);
+    while (running) sleep(60);
+    logmsg(ANDROID_LOG_INFO, "Clatd on %s received SIGTERM", uplink_interface);
+  } else {
+    logmsg(ANDROID_LOG_INFO, "Clatd on %s already received SIGTERM", uplink_interface);
+  }
   return 0;
 }