Thanks to John Cummings.
This commit is contained in:
parent
cd37451963
commit
5cdb17983a
94 changed files with 26853 additions and 0 deletions
58
src/cmd/upas/smtp/rmtdns.c
Normal file
58
src/cmd/upas/smtp/rmtdns.c
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
#include "common.h"
|
||||
#include <ndb.h>
|
||||
|
||||
int
|
||||
rmtdns(char *net, char *path)
|
||||
{
|
||||
|
||||
int fd, n, r;
|
||||
char *domain, *cp, buf[1024];
|
||||
|
||||
if(net == 0 || path == 0)
|
||||
return 0;
|
||||
|
||||
domain = strdup(path);
|
||||
cp = strchr(domain, '!');
|
||||
if(cp){
|
||||
*cp = 0;
|
||||
n = cp-domain;
|
||||
} else
|
||||
n = strlen(domain);
|
||||
|
||||
if(*domain == '[' && domain[n-1] == ']'){ /* accept [nnn.nnn.nnn.nnn] */
|
||||
domain[n-1] = 0;
|
||||
r = strcmp(ipattr(domain+1), "ip");
|
||||
domain[n-1] = ']';
|
||||
} else
|
||||
r = strcmp(ipattr(domain), "ip"); /* accept nnn.nnn.nnn.nnn */
|
||||
|
||||
if(r == 0){
|
||||
free(domain);
|
||||
return 0;
|
||||
}
|
||||
|
||||
snprint(buf, sizeof(buf), "%s/dns", net);
|
||||
|
||||
fd = open(buf, ORDWR); /* look up all others */
|
||||
if(fd < 0){ /* dns screw up - can't check */
|
||||
free(domain);
|
||||
return 0;
|
||||
}
|
||||
|
||||
n = snprint(buf, sizeof(buf), "%s all", domain);
|
||||
free(domain);
|
||||
seek(fd, 0, 0);
|
||||
n = write(fd, buf, n);
|
||||
close(fd);
|
||||
if(n < 0){
|
||||
rerrstr(buf, sizeof(buf));
|
||||
if (strcmp(buf, "dns: name does not exist") == 0)
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
void main(int, char *argv[]){ print("return = %d\n", rmtdns("/net.alt/tcp/109", argv[1]));}
|
||||
|
||||
*/
|
||||
Loading…
Add table
Add a link
Reference in a new issue