URI:
       trmtdns.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       trmtdns.c (1069B)
       ---
            1 #include        "common.h"
            2 #include        <ndb.h>
            3 
            4 int
            5 rmtdns(char *net, char *path)
            6 {
            7 
            8         int fd, n, r;
            9         char *domain, *cp, buf[1024];
           10 
           11         if(net == 0 || path == 0)
           12                 return 0;
           13 
           14         domain = strdup(path);
           15         cp = strchr(domain, '!');
           16         if(cp){
           17                 *cp = 0;
           18                 n = cp-domain;
           19         } else
           20                 n = strlen(domain);
           21 
           22         if(*domain == '[' && domain[n-1] == ']'){        /* accept [nnn.nnn.nnn.nnn] */
           23                 domain[n-1] = 0;
           24                 r = strcmp(ipattr(domain+1), "ip");
           25                 domain[n-1] = ']';
           26         } else
           27                 r = strcmp(ipattr(domain), "ip");        /* accept nnn.nnn.nnn.nnn */
           28 
           29         if(r == 0){
           30                 free(domain);
           31                 return 0;
           32         }
           33 
           34         snprint(buf, sizeof(buf), "%s/dns", net);
           35 
           36         fd = open(buf, ORDWR);                        /* look up all others */
           37         if(fd < 0){                                /* dns screw up - can't check */
           38                 free(domain);
           39                 return 0;
           40         }
           41 
           42         n = snprint(buf, sizeof(buf), "%s all", domain);
           43         free(domain);
           44         seek(fd, 0, 0);
           45         n = write(fd, buf, n);
           46         close(fd);
           47         if(n < 0){
           48                 rerrstr(buf, sizeof(buf));
           49                 if (strcmp(buf, "dns: name does not exist") == 0)
           50                         return -1;
           51         }
           52         return 0;
           53 }
           54 
           55 /*
           56 void main(int, char *argv[]){ print("return = %d\n", rmtdns("/net.alt/tcp/109", argv[1]));}
           57 
           58 */