--- /sys/src/cmd/aux/listen.c Mon Nov 5 07:29:45 2018+++ ../patched/gridlisten.c Fri Dec 7 23:24:27 2018@@ -31,6 +31,7 @@ void scandir(char*, char*, char*, char*); void becomenone(void); void listendir(char*, char*, char*, int);+void doregister(char*); char listenlog[] = "listen"; @@ -215,6 +216,8 @@ else exits("ctl"); }+ fprint(2, "registering %s\n", a->a);+ doregister(a->a); dolisten(proto, dir, ctl, srvdir, ds, &childs); close(ctl); }@@ -346,6 +349,28 @@ close(fd); if(newns("none", namespace) < 0) error("can't build namespace");+}++void+doregister(char *announce)+{+ int regfd;+ char *loc;++ switch(rfork(RFPROC|RFFDG)) {+ case -1:+ error("fork");+ case 0:+ if((loc=getenv("myip")) == 0)+ loc=getenv("sysname");+ regfd=open("/mnt/registry/new", OWRITE);+ fprint(regfd, "tcp!%s!%s sys %s user %s", loc, announce+6, getenv("sysname"), getenv("user"));+ for(;;)+ sleep(1000);+ break;+ default:+ return;+ } } void
--- /sys/src/cmd/aux/listen.c Mon Nov 5 07:29:45 2018
+++ ../patched/gridlisten.c Fri Dec 7 23:24:27 2018
@@ -31,6 +31,7 @@
void scandir(char*, char*, char*, char*);
void becomenone(void);
void listendir(char*, char*, char*, int);
+void doregister(char*);
char listenlog[] = "listen";
@@ -215,6 +216,8 @@
else
exits("ctl");
}
+ fprint(2, "registering %s\n", a->a);
+ doregister(a->a);
dolisten(proto, dir, ctl, srvdir, ds, &childs);
close(ctl);
}
@@ -346,6 +349,28 @@
close(fd);
if(newns("none", namespace) < 0)
error("can't build namespace");
+}
+
+void
+doregister(char *announce)
+{
+ int regfd;
+ char *loc;
+
+ switch(rfork(RFPROC|RFFDG)) {
+ case -1:
+ error("fork");
+ case 0:
+ if((loc=getenv("myip")) == 0)
+ loc=getenv("sysname");
+ regfd=open("/mnt/registry/new", OWRITE);
+ fprint(regfd, "tcp!%s!%s sys %s user %s", loc, announce+6, getenv("sysname"), getenv("user"));
+ for(;;)
+ sleep(1000);
+ break;
+ default:
+ return;
+ }
}
void