]> git.meshlink.io Git - catta/commitdiff
avahi-publish: allow A-record-only publication in avahi-publish
authorKees Cook <kees.cook@canonical.com>
Thu, 29 Oct 2009 17:52:31 +0000 (10:52 -0700)
committerLennart Poettering <lennart@poettering.net>
Sat, 14 Nov 2009 00:54:11 +0000 (01:54 +0100)
In some situations, it is nice to be able to publish an A record without
the PTR that may conflict with an existing PTR.  This adds the new
option "--no-reverse" to avahi-publish.

avahi-utils/avahi-publish.c

index 9c9a93c977749d225fbe45130500d7d68491e2ab..c9c6bc3761f89620e97feded97cabc0c3b7911f0 100644 (file)
@@ -51,7 +51,7 @@ typedef enum {
 } Command;
 
 typedef struct Config {
-    int verbose, no_fail;
+    int verbose, no_fail, no_reverse;
     Command command;
     char *name, *stype, *domain, *host;
     uint16_t port;
@@ -122,7 +122,7 @@ static int register_stuff(Config *config) {
 
     if (config->command == COMMAND_PUBLISH_ADDRESS) {
 
-        if (avahi_entry_group_add_address(entry_group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, config->name, &config->address) < 0) {
+        if (avahi_entry_group_add_address(entry_group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, config->no_reverse ? AVAHI_PUBLISH_NO_REVERSE : 0, config->name, &config->address) < 0) {
             fprintf(stderr, _("Failed to add address: %s\n"), avahi_strerror(avahi_client_errno(client)));
             return -1;
         }
@@ -225,6 +225,7 @@ static void help(FILE *f, const char *argv0) {
               "    -d --domain=DOMAIN   Domain to publish service in\n"
               "    -H --host=DOMAIN     Host where service resides\n"
               "       --subtype=SUBTYPE An additional subtype to register this service with\n"
+              "    -R --no-reverse      Do not publish reverse entry with address\n"
               "    -f --no-fail         Don't fail if the daemon is not available\n"),
               argv0, strstr(argv0, "service") ? "[-s]" : "-s",
               argv0, strstr(argv0, "address") ? "[-a]" : "-a");
@@ -246,6 +247,7 @@ static int parse_command_line(Config *c, const char *argv0, int argc, char *argv
         { "domain",         required_argument, NULL, 'd' },
         { "host",           required_argument, NULL, 'H' },
         { "subtype",        required_argument, NULL, ARG_SUBTYPE},
+        { "no-reverse",     no_argument,       NULL, 'R' },
         { "no-fail",        no_argument,       NULL, 'f' },
         { NULL, 0, NULL, 0 }
     };
@@ -253,12 +255,12 @@ static int parse_command_line(Config *c, const char *argv0, int argc, char *argv
     assert(c);
 
     c->command = strstr(argv0, "address") ? COMMAND_PUBLISH_ADDRESS : (strstr(argv0, "service") ? COMMAND_PUBLISH_SERVICE : COMMAND_UNSPEC);
-    c->verbose = c->no_fail = 0;
+    c->verbose = c->no_fail = c->no_reverse = 0;
     c->host = c->name = c->domain = c->stype = NULL;
     c->port = 0;
     c->txt = c->subtypes = NULL;
 
-    while ((o = getopt_long(argc, argv, "hVsavd:H:f", long_options, NULL)) >= 0) {
+    while ((o = getopt_long(argc, argv, "hVsavRd:H:f", long_options, NULL)) >= 0) {
 
         switch(o) {
             case 'h':
@@ -276,6 +278,9 @@ static int parse_command_line(Config *c, const char *argv0, int argc, char *argv
             case 'v':
                 c->verbose = 1;
                 break;
+            case 'R':
+                c->no_reverse = 1;
+                break;
             case 'd':
                 avahi_free(c->domain);
                 c->domain = avahi_strdup(optarg);