PERFORCE change 128811 for review

Alexey Tarasov taleks at FreeBSD.org
Thu Nov 8 01:45:27 PST 2007


http://perforce.freebsd.org/chv.cgi?CH=128811

Change 128811 by taleks at taleks_th on 2007/11/08 09:44:50

	Added function for simple parsing of direcory index, provided by Apache.
	Fixed error (probably finally fixed) with '/' at tail of rootpath.
	servername now is correctly strdup()'ed from PXE_IP_WWW.

Affected files ...

.. //depot/projects/soc2007/taleks-pxe_http/Makefile#17 edit
.. //depot/projects/soc2007/taleks-pxe_http/README#4 edit
.. //depot/projects/soc2007/taleks-pxe_http/httpfs.c#10 edit
.. //depot/projects/soc2007/taleks-pxe_http/httpfs.h#4 edit
.. //depot/projects/soc2007/taleks-pxe_http/libi386_mod/pxe.c#7 edit
.. //depot/projects/soc2007/taleks-pxe_http/loader_mod/main.c#5 edit
.. //depot/projects/soc2007/taleks-pxe_http/pxe_core.c#28 edit
.. //depot/projects/soc2007/taleks-pxe_http/pxe_httpls.c#1 add
.. //depot/projects/soc2007/taleks-pxe_http/pxe_httpls.h#1 add

Differences ...

==== //depot/projects/soc2007/taleks-pxe_http/Makefile#17 (text+ko) ====

@@ -6,7 +6,7 @@
 SRCS=	pxe_isr.S pxe_mem.c pxe_buffer.c pxe_await.c pxe_arp.c pxe_ip.c \
 	pxe_core.c pxe_icmp.c pxe_udp.c pxe_filter.c pxe_dns.c		\
 	pxe_dhcp.c pxe_segment.c pxe_tcp.c pxe_sock.c 			\
-	pxe_connection.c pxe_http.c httpfs.c
+	pxe_connection.c pxe_http.c pxe_httpls.c httpfs.c
 
 CFLAGS+=	-I${.CURDIR}/../../common -I${.CURDIR}/../btx/lib \
 		-I${.CURDIR}/../../../contrib/dev/acpica \

==== //depot/projects/soc2007/taleks-pxe_http/README#4 (text+ko) ====

@@ -164,6 +164,10 @@
 							# server
 			KeepAliveTimeout 15		# more then 2 seconds
 							# is good enough
+							
+		1.1 Non keep-alive connections supported if macro 
+		    PXE_HTTP_AUTO_KEEPALIVE defined. In this case, non keep-alive
+		    connections will be used if keep-alive are unavailable. 
 
 		2. loader checks gzipped versions of files first, it's good
 		   idea to compress every needed file. e.g.
@@ -366,7 +370,7 @@
 	int result = pxe_connect(socket, &hh->addr, 80, PXE_TCP_PROTOCOL);
 	/*  This call creates filter, associates it with socket and establishes
 	 * communication if needed.
-	 * Parameters are socket, remote ip address (PXE_IPADDR)m remote port
+	 * Parameters are socket, remote ip address (PXE_IPADDR), remote port
 	 * and one of PXE_UDP_PROTOCOL and PXE_TCP_PROTOCOL protocols.
 	 */
 	
@@ -676,8 +680,7 @@
 					  was performed
 		PXE_IP_WWW		- IP address of http-server
 		PXE_IP_ROOT		- IP adddress of server, where root
-					  file system is situated. Currently
-					  it's synonym for PXE_IP_WWW
+					  file system is situated.
 
 void pxe_set_ip(uint8_t id, const PXE_IPADDR *ip)
 	- sets value by it's id.
@@ -1149,7 +1152,7 @@
 	command 'route':
 		- works with routing table and used for ip based protocols.
 		 IP packet routed to first found route, routes are searched
-		 sequentially from start of table to end..
+		 sequentially from start of table to end.
 
 		 Example: pxe route print 
 				- shows current routing table.
@@ -1220,7 +1223,7 @@
 	some hints that may be usefull.
 
 		In LAN usually packet loss is small and speed is fast, so
-	it may be good idea to define PXE_TCP_AGRRESIVE macro (see 3.3.15).
+	it may be good idea to define PXE_TCP_AGRESSIVE macro (see 3.3.15).
 		PXE_TCP_MSS may me set to 1460 without any doubts.
 		Buffer sizes may be set higher (3.3.3). 16K for incoming
 	traffic is good enough for WAN connections, but for LAN it may be set

==== //depot/projects/soc2007/taleks-pxe_http/httpfs.c#10 (text+ko) ====

@@ -101,14 +101,14 @@
                 return (ENOMEM);
         }
 
+	pxe_memcpy(pxe_get_ip(PXE_IP_WWW), &httpfile->addr, sizeof(PXE_IPADDR));
+	
 	if (servername[0]) {
 		httpfile->servername = servername;
 	} else {
 		httpfile->servername = strdup(inet_ntoa(httpfile->addr.ip));
 	}
 
-	pxe_memcpy(pxe_get_ip(PXE_IP_WWW), &httpfile->addr, sizeof(PXE_IPADDR));
-
 #ifdef PXE_DEBUG_HELL	
 	printf("servername: %s\n", httpfile->servername);
 #endif

==== //depot/projects/soc2007/taleks-pxe_http/httpfs.h#4 (text+ko) ====


==== //depot/projects/soc2007/taleks-pxe_http/libi386_mod/pxe.c#7 (text+ko) ====

@@ -29,7 +29,6 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD: src/sys/boot/i386/libi386/pxe.c,v 1.23 2007/10/12 17:09:43 ps Exp $");
 
-/* 
 #include <stand.h>
 #include <string.h>
 #include <stdarg.h>
@@ -43,6 +42,7 @@
 #ifdef LOADER_NFS_SUPPORT
 #include <nfsv2.h>
 #endif
+
 #include <iodesc.h>
 
 #include <bootp.h>

==== //depot/projects/soc2007/taleks-pxe_http/loader_mod/main.c#5 (text+ko) ====

@@ -46,6 +46,7 @@
 #include "pxe_dns.h"
 #include "pxe_filter.h"
 #include "pxe_http.h"
+#include "pxe_httpld.h"
 #include "pxe_icmp.h"
 #include "pxe_ip.h"
 #include "pxe_sock.h"
@@ -516,6 +517,27 @@
     return (CMD_OK);
 }
 
+static int
+command_ls(int argc, char *argv[])
+{
+
+    if (argc == 1) {
+	printf("usage: ls /path/to/dir\n");
+	return (CMD_OK);
+    }
+ 
+    int fd = open(argv[1], O_RDONLY);
+    
+    if (fd == -1)
+	return (CMD_OK);
+
+    http_parse_index(fd);
+    
+    close(fd);
+     
+    return (CMD_OK);
+}
+
 COMMAND_SET(pxe, "pxe", "pxe test module", command_pxe);
  
 static int
@@ -563,6 +585,10 @@
     if (!strcmp(argv[1], "fetch")) {
 	return command_fetch(argc - 1, &argv[1]);
     }
+    
+    if (!strcmp(argv[1], "ls")) {
+	return command_ls(argc - 1, &argv[1]);
+    }
  
     printf("unknown pxe command '%s'\n", argv[1]);
      

==== //depot/projects/soc2007/taleks-pxe_http/pxe_core.c#28 (text+ko) ====

@@ -144,9 +144,11 @@
         setenv("boot.nfsroot.path", rootpath, 1);
 #endif
 
-	/* if it's just '/' then make rootpath empty */
-	if (rootpath[1] == '\0')
-		rootpath[0] = '\0';
+	/* removing '/' at tail of rootpath */
+	size_t rlen = strlen(rootpath);
+	
+	if ( (rlen > 0) && (rootpath[rlen - 1] == '/'))
+		rootpath[rlen - 1] = '\0';
 	
 	/* check if Web server option specified,
 	 * if not, make it equal to root ip


More information about the p4-projects mailing list