Kaynağa Gözat

Plan 9 from Bell Labs 2013-10-22

David du Colombier 10 yıl önce
ebeveyn
işleme
d8a49b2d81

+ 1 - 1
lib/ndb/common

@@ -279,7 +279,7 @@ tcp=piepea port=13146	# πp
 tcp=exportfs port=17007
 tcp=rexexec port=17009
 tcp=ncpu port=17010
-# tcp=cpu port=17013
+# tcp=cpu port=17013		# phasing out this obsolete protocol
 tcp=glenglenda1 port=17020
 tcp=glenglenda2 port=17021
 tcp=glenglenda3 port=17022

+ 5 - 1
sys/src/9/boot/usb.c

@@ -64,7 +64,7 @@ chmod(char *file, int mode)
 	return 0;
 }
 
-/* start partfs on first usb disk, if any */
+/* start partfs on first usb disk, if any.  optionally post partfs in /srv. */
 static int
 startpartfs(int post)
 {
@@ -127,6 +127,10 @@ mountusbparts(void)
 	return startpartfs(Post);
 }
 
+/*
+ *  start usbd, which mounts itself on /dev.
+ *  start partfs on first disk, if any, to permit nvram on usb.
+ */
 void
 usbinit(int post)
 {

+ 3 - 0
sys/src/9/pc/ether8169.c

@@ -114,6 +114,7 @@ enum {					/* Tcr */
 //	Macv19		= 0x3c000000,	/* dup Macv12a: RTL8111c-gr */
 	Macv25		= 0x28000000,	/* RTL8168D */
 	Macv2c		= 0x2c000000,	/* RTL8168E */
+	Macv34		= 0x2c800000,	/* RTL8168E */
 	Ifg0		= 0x01000000,	/* Interframe Gap 0 */
 	Ifg1		= 0x02000000,	/* Interframe Gap 1 */
 };
@@ -739,6 +740,7 @@ rtl8169init(Ether* edev)
 	case Macv15:
 	case Macv25:
 	case Macv2c:
+	case Macv34:
 		break;
 	}
 
@@ -1094,6 +1096,7 @@ vetmacv(Ctlr *ctlr, uint *macv)
 	case Macv15:
 	case Macv25:
 	case Macv2c:
+	case Macv34:
 		break;
 	}
 	return 0;

+ 1 - 0
sys/src/9/pc/pci.c

@@ -668,6 +668,7 @@ static Bridge southbridges[] = {
 	{ 0x8086, 0x3a48, pIIxget, pIIxset },	/* Intel 82801JI */
 	{ 0x8086, 0x2916, pIIxget, pIIxset },	/* Intel 82801? */
 	{ 0x8086, 0x1c02, pIIxget, pIIxset },	/* Intel 6 Series/C200 */
+	{ 0x8086, 0x1c44, pIIxget, pIIxset },	/* Intel 6 Series/Z68 Express */
 	{ 0x8086, 0x1e53, pIIxget, pIIxset },	/* Intel 7 Series/C216 */
 	{ 0x1106, 0x0586, viaget, viaset },	/* Viatech 82C586 */
 	{ 0x1106, 0x0596, viaget, viaset },	/* Viatech 82C596 */

+ 1 - 0
sys/src/cmd/file.c

@@ -538,6 +538,7 @@ Filemagic long0tab[] = {
 	070707,		0xFFFF,		"cpio archive\n", OCTET,
 	0x2F7,		0xFFFF,		"tex dvi\n", "application/dvi",
 	0xfaff,		0xfeff,		"mp3 audio\n",	"audio/mpeg",
+	0xf0ff,		0xf6ff,		"aac audio\n",	"audio/mpeg",
 	0xfeff0000,	0xffffffff,	"utf-32be\n",	"text/plain charset=utf-32be",
 	0xfffe,		0xffffffff,	"utf-32le\n",	"text/plain charset=utf-32le",
 	0xfeff,		0xffff,		"utf-16be\n",	"text/plain charset=utf-16be",

+ 11 - 11
sys/src/cmd/upas/smtp/mxdial.c

@@ -13,7 +13,7 @@ typedef struct Mx	Mx;
 struct Mx
 {
 	char	host[Maxstring];
-	char	ip[Maxipstr];
+	char	ip[Maxipstr];		/* this is just the first ip */
 	int	pref;
 };
 
@@ -130,18 +130,13 @@ callmx(DS *ds, char *dest, char *domain)
 	if(nmx > 1)
 		qsort(mx, nmx, sizeof(Mx), compar);
 
-	/* dial each one in turn */
+	/* dial each one in turn by name, not ip */
 	for(i = 0; i < nmx; i++){
 		if (busted(mx[i].host)) {
 			if (debug)
 				fprint(2, "mxdial skipping busted mx %s\n",
 					mx[i].host);
 			continue;
-		}else if(isloopback(mx[i].host)){
-			if(debug)
-				fprint(2, "host ip %s is loopback\n",
-					mx[i].host);
-			continue;
 		}
 		snprint(addr, sizeof(addr), "%s/%s!%s!%s", ds->netdir, ds->proto,
 			mx[i].host, ds->service);
@@ -150,6 +145,8 @@ callmx(DS *ds, char *dest, char *domain)
 		atnotify(timeout, 1);
 		alarm(10*1000);
 		fd = dial(addr, 0, 0, 0);
+		if (debug && fd < 0)
+			fprint(2, "dial: %r\n");
 		alarm(0);
 		atnotify(timeout, 0);
 		if(fd >= 0)
@@ -220,6 +217,7 @@ mxlookup1(DS *ds, char *domain)
 	} else {
 		/*
 		 *  get any mx entries
+		 *  assumes one record per read
 		 */
 		seek(fd, 0, 0);
 		while(nmx < Nmx && (n = read(fd, buf, sizeof buf-1)) > 0){
@@ -240,13 +238,12 @@ mxlookup1(DS *ds, char *domain)
 			nmx++;
 		}
 		if(debug)
-			fprint(2, "dns mx; got %d entries\n", nmx);
+			fprint(2, "dns mx: got %d mx servers\n", nmx);
 	}
 
 	/*
 	 * no mx record? try name itself.
-	 */
-	/*
+	 *
 	 * BUG? If domain has no dots, then we used to look up ds->host
 	 * but return domain instead of ds->host in the list.  Now we return
 	 * ds->host.  What will this break?
@@ -258,7 +255,9 @@ mxlookup1(DS *ds, char *domain)
 	}
 
 	/*
-	 * look up all ip addresses
+	 * look up first ip address of each mx name.
+	 * should really look at all addresses.
+	 * assumes one record per read.
 	 */
 	for(i = 0; i < nmx; i++){
 		mxp = &mx[i];
@@ -286,6 +285,7 @@ mxlookup1(DS *ds, char *domain)
 		*mxp = mx[nmx];
 		i--;
 	}
+	close(fd);
 	return nmx;
 }