shithub: riscv

Download patch

ref: 08385e66816940b999a5c433a1feef303cea67e4
parent: a33d76f8c95d33d6590dd185a2200f06cef014c7
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Thu Sep 13 18:15:42 EDT 2018

ip/tftpd: remove sunkernel hack

--- a/sys/man/8/dhcpd
+++ b/sys/man/8/dhcpd
@@ -279,21 +279,7 @@
 The default is
 .BR /lib/tftpd .
 All requests for files with non-rooted file names are served starting at this
-directory with the exception of files of the form
-.BR xxxxxxxx.SUNyy .
-These are Sparc kernel boot files where
-.B xxxxxxxx
-is the hex IP address of the machine requesting the kernel and
-.B yy
-is an architecture identifier.
-.I Tftpd
-looks up the file in the network database using
-.I ipinfo
-(see
-.IR ndb (2))
-and responds with the boot file specified for that particular
-machine.
-If no boot file is specified, the transfer fails.
+directory.
 .I Tftpd
 supports only octet mode.
 .TP
--- a/sys/src/cmd/ip/tftpd.c
+++ b/sys/src/cmd/ip/tftpd.c
@@ -6,7 +6,6 @@
 #include <auth.h>
 #include <bio.h>
 #include <ip.h>
-#include <ndb.h>
 
 enum
 {
@@ -85,7 +84,6 @@
 void	ack(int, ushort);
 void	clrcon(void);
 void	setuser(void);
-char*	sunkernel(char*);
 void	remoteaddr(char*, char*, int);
 void	doserve(int);
 
@@ -563,14 +561,8 @@
 	uchar buf[Maxsegsize+Hdrsize];
 	char errbuf[ERRMAX];
 
-	file = -1;
 	syslog(dbg, flog, "tftpd %d send file '%s' %s to %s",
 		pid, name, mode, raddr);
-	name = sunkernel(name);
-	if(name == 0){
-		nak(fd, 0, "not in our database");
-		goto error;
-	}
 
 	notify(catcher);
 
@@ -753,59 +745,6 @@
 	close(fd);
 	if(newns("none", nil) < 0)
 		sysfatal("can't build namespace: %r");
-}
-
-char*
-lookup(char *sattr, char *sval, char *tattr, char *tval, int len)
-{
-	static Ndb *db;
-	char *attrs[1];
-	Ndbtuple *t;
-
-	if(db == nil)
-		db = ndbopen(0);
-	if(db == nil)
-		return nil;
-
-	if(sattr == nil)
-		sattr = ipattr(sval);
-
-	attrs[0] = tattr;
-	t = ndbipinfo(db, sattr, sval, attrs, 1);
-	if(t == nil)
-		return nil;
-	strncpy(tval, t->val, len);
-	tval[len-1] = 0;
-	ndbfree(t);
-	return tval;
-}
-
-/*
- *  for sun kernel boots, replace the requested file name with
- *  a one from our database.  If the database doesn't specify a file,
- *  don't answer.
- */
-char*
-sunkernel(char *name)
-{
-	ulong addr;
-	uchar v4[IPv4addrlen];
-	uchar v6[IPaddrlen];
-	char buf[256];
-	char ipbuf[128];
-	char *suffix;
-
-	addr = strtoul(name, &suffix, 16);
-	if(suffix-name != 8 || (strcmp(suffix, "") != 0 && strcmp(suffix, ".SUN") != 0))
-		return name;
-
-	v4[0] = addr>>24;
-	v4[1] = addr>>16;
-	v4[2] = addr>>8;
-	v4[3] = addr;
-	v4tov6(v6, v4);
-	sprint(ipbuf, "%I", v6);
-	return lookup("ip", ipbuf, "bootf", buf, sizeof buf);
 }
 
 void