82 lines · 1.7 KB · Text
RawDownload
--- /sys/src/cmd/aux/listen1.c	Thu Oct 15 06:22:02 2015+++ ../patched/gridlisten1.c	Fri Dec  7 23:24:27 2018@@ -6,11 +6,13 @@ int verbose; int trusted; char *nsfile;+char *description;+char *mountpoint;  void usage(void) {-	fprint(2, "usage: listen1 [-tv] [-p maxprocs] [-n namespace] address cmd args...\n");+	fprint(2, "usage: gridlisten1 [-tv] [-d description] [-p maxprocs] [-n namespace] address cmd args...\n"); 	exits("usage"); } @@ -27,6 +29,33 @@ 		sysfatal("can't build namespace: %r"); } +void+doregister(char *announce, char *service)+{+	int regfd;+	char *loc;+	char *port;++	switch(rfork(RFPROC|RFFDG)) {+	case -1:+		fprint(2, "error forking\n");+	case 0:+		if((loc=getenv("myip")) == 0)+			loc=getenv("sysname");+		if((port=strrchr(announce, '!')) != 0)+			port++;+		regfd=open("/mnt/registry/new", OWRITE);+		if(regfd == -1)+			sysfatal("didn't find /mnt/registry/new, can't announce\n");+		fprint(regfd, "tcp!%s!%s sys %s service %s mountpoint %s is %s", loc, port, getenv("sysname"), service, mountpoint, description);+		for(;;)+			sleep(1000);+		break;+	default:+		return;+	}+}+ char* remoteaddr(char *dir) {@@ -57,6 +86,8 @@ 	int ctl, nctl, fd; 	int wfd, nowait, procs; 	Dir *d;+	description="unknown";+	mountpoint="unknown";  	ARGBEGIN{ 	default:@@ -73,6 +104,12 @@ 	case 'n': 		nsfile = EARGF(usage()); 		break;+	case 'd':+		description = EARGF(usage());+		break;+	case 'm':+		mountpoint = EARGF(usage());+		break; 	}ARGEND  	if(argc < 2)@@ -92,6 +129,8 @@  	print("listen started\n"); 	ctl = announce(argv[0], dir);+	fprint(2, "registering %s\n", argv[0]);+	doregister(argv[0], argv[1]); 	if(ctl < 0) 		sysfatal("announce %s: %r", argv[0]);