|
@@ -43,6 +43,7 @@
|
|
|
#include <fcntl.h>
|
|
|
#include <dirent.h>
|
|
|
#include <net/if.h>
|
|
|
+#include <getopt.h>
|
|
|
|
|
|
/*
|
|
|
* KVP protocol: The user mode component first registers with the
|
|
@@ -1417,7 +1418,15 @@ netlink_send(int fd, struct cn_msg *msg)
|
|
|
return sendmsg(fd, &message, 0);
|
|
|
}
|
|
|
|
|
|
-int main(void)
|
|
|
+void print_usage(char *argv[])
|
|
|
+{
|
|
|
+ fprintf(stderr, "Usage: %s [options]\n"
|
|
|
+ "Options are:\n"
|
|
|
+ " -n, --no-daemon stay in foreground, don't daemonize\n"
|
|
|
+ " -h, --help print this help\n", argv[0]);
|
|
|
+}
|
|
|
+
|
|
|
+int main(int argc, char *argv[])
|
|
|
{
|
|
|
int fd, len, nl_group;
|
|
|
int error;
|
|
@@ -1435,9 +1444,30 @@ int main(void)
|
|
|
struct hv_kvp_ipaddr_value *kvp_ip_val;
|
|
|
char *kvp_recv_buffer;
|
|
|
size_t kvp_recv_buffer_len;
|
|
|
+ int daemonize = 1, long_index = 0, opt;
|
|
|
+
|
|
|
+ static struct option long_options[] = {
|
|
|
+ {"help", no_argument, 0, 'h' },
|
|
|
+ {"no-daemon", no_argument, 0, 'n' },
|
|
|
+ {0, 0, 0, 0 }
|
|
|
+ };
|
|
|
+
|
|
|
+ while ((opt = getopt_long(argc, argv, "hn", long_options,
|
|
|
+ &long_index)) != -1) {
|
|
|
+ switch (opt) {
|
|
|
+ case 'n':
|
|
|
+ daemonize = 0;
|
|
|
+ break;
|
|
|
+ case 'h':
|
|
|
+ default:
|
|
|
+ print_usage(argv);
|
|
|
+ exit(EXIT_FAILURE);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if (daemon(1, 0))
|
|
|
+ if (daemonize && daemon(1, 0))
|
|
|
return 1;
|
|
|
+
|
|
|
openlog("KVP", 0, LOG_USER);
|
|
|
syslog(LOG_INFO, "KVP starting; pid is:%d", getpid());
|
|
|
|