summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2018-09-25 20:59:08 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2018-09-25 20:59:08 +0200
commit0126f10d05933421a1db388368accd81578c9888 (patch)
tree4799034b821735768941ba16611a0e992bd527cf
parente5e6a729ddb6956d520c87cb5905b3515323dccc (diff)
downloadplan9front-0126f10d05933421a1db388368accd81578c9888.tar.xz
ndb/inform: handle internationalized domain names
-rw-r--r--sys/src/cmd/ndb/inform.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/sys/src/cmd/ndb/inform.c b/sys/src/cmd/ndb/inform.c
index 299b0cb2f..7837c03c0 100644
--- a/sys/src/cmd/ndb/inform.c
+++ b/sys/src/cmd/ndb/inform.c
@@ -111,7 +111,7 @@ void
main(int argc, char *argv[])
{
static char *query[] = { "dom", "dnsdomain", "ns", "inform" };
- char *sysname, *dnsdomain, *dom, *inform, *ns, net[32];
+ char *sysname, *dnsdomain, *dom, *inform, *ns, net[32], dn[256], ds[256];
int debug, len, fd;
uint err;
uchar *p, buf[4096], mynet[IPaddrlen];
@@ -173,6 +173,13 @@ main(int argc, char *argv[])
if(!dnsdomain)
sysfatal("no relevant dnsdomain=");
+
+ if(utf2idn(dom, dn, sizeof(dn)) == nil)
+ sysfatal("cannot convert dom");
+
+ if(utf2idn(dnsdomain, ds, sizeof(ds)) == nil)
+ sysfatal("cannot convert dnsdomain");
+
if(debug){
print("ns=%s\n", ns);
print("dnsdomain=%s\n", dnsdomain);
@@ -192,18 +199,18 @@ main(int argc, char *argv[])
p16(&p, 2); /* # updates */
p16(&p, 0); /* # additionals */
- pname(&p, dnsdomain); /* zone */
+ pname(&p, ds); /* zone */
p16(&p, Tsoa); /* zone type */
p16(&p, Cin); /* zone class */
/* delete old name */
- pname(&p, dom); /* name */
+ pname(&p, dn); /* name */
p16(&p, Ta); /* type: v4 addr */
p16(&p, Call); /* class */
p32(&p, 0); /* TTL */
p16(&p, 0); /* data len */
- pname(&p, dom); /* name */
+ pname(&p, dn); /* name */
p16(&p, Taaaa); /* type: v6 addr */
p16(&p, Call); /* class */
p32(&p, 0); /* TTL */
@@ -228,7 +235,7 @@ main(int argc, char *argv[])
print("ip=%I\n", lifc->ip);
/* add new A record */
- pname(&p, dom); /* name */
+ pname(&p, dn); /* name */
p16(&p, isv4(lifc->ip)?Ta:Taaaa);
p16(&p, Cin); /* class */
p32(&p, 60*60*25); /* TTL (25 hours) */