Browse Source

Added ipconfig byte array to k8cpu.root.c file. It requires you run sys/src/cmd/ip/ipconfig/BUILDKIPCONFIG script to build the binary. Build.bash will eat as bootk8cpu, dumping text and data separated and concatenating all in one file before run data2c.

Elbing Miss 9 years ago
parent
commit
22be6eb5b6

+ 8 - 6
sys/src/9/k10/build.bash

@@ -120,12 +120,14 @@ compiling()
 	cat factotum.code.out factotum.data.out >> factotum.all.out
 	data2c _amd64_bin_auth_factotum  factotum.all.out >> k8cpu.root.c
 
-	#cp /amd64/bin/ip/ipconfig ipconfig
-	#objcopy -j .text  -O binary ipconfig.elf.out ipconfig.code.out
-	#objcopy -j .data  -O binary ipconfig.elf.out ipconfig.data.out
-	#file ipconfig*.out
-	#cat ipconfig.code.out ipconfig.data.out >> ipconfig.all.out
-	#data2c _amd64_bin_ip_ipconfig  ipconfig.all.out >> k8cpu.root.c
+	# You need to run BUILDKIPCONFIG into /sys/src/cmd/ip/ipconfig
+	# in order to have working this.
+	
+	objcopy -j .text  -O binary /sys/src/cmd/ip/ipconfig/ipconfig.elf.out ipconfig.code.out
+	objcopy -j .data  -O binary /sys/src/cmd/ip/ipconfig/ipconfig.elf.out ipconfig.data.out
+	file ipconfig*.out
+	cat ipconfig.code.out ipconfig.data.out >> ipconfig.all.out
+	data2c _amd64_bin_ip_ipconfig  ipconfig.all.out >> k8cpu.root.c
 
 	## Making all ##
 

+ 4 - 4
sys/src/9/k10/hack.S

@@ -2,7 +2,7 @@
 //_amd64_bin_auth_factotumcode: popq %rdi; movq $_amd64_bin_auth_factotumcode, %rsi; call badcall // ndnr
 //.global _amd64_bin_auth_factotumlen
 //_amd64_bin_auth_factotumlen: popq %rdi; movq $_amd64_bin_auth_factotumlen, %rsi; call badcall // ndnr
-.global _amd64_bin_ip_ipconfigcode
-_amd64_bin_ip_ipconfigcode: popq %rdi; movq $_amd64_bin_ip_ipconfigcode, %rsi; call badcall // ndnr
-.global _amd64_bin_ip_ipconfiglen
-_amd64_bin_ip_ipconfiglen: popq %rdi; movq $_amd64_bin_ip_ipconfiglen, %rsi; call badcall // ndnr
+//.global _amd64_bin_ip_ipconfigcode
+//_amd64_bin_ip_ipconfigcode: popq %rdi; movq $_amd64_bin_ip_ipconfigcode, %rsi; call badcall // ndnr
+//.global _amd64_bin_ip_ipconfiglen
+//_amd64_bin_ip_ipconfiglen: popq %rdi; movq $_amd64_bin_ip_ipconfiglen, %rsi; call badcall // ndnr

+ 16 - 16
sys/src/cmd/ip/dhcp.h

@@ -134,7 +134,7 @@ enum
 	OP9ipaddr=		132,	/* client's address */
 	OP9ipmask=		133,	/* client's subnet mask */
 	OP9ipgw=		134,	/* client's gateway */
-/*	OP9dns=			135,	/* dns servers */
+/*	OP9dns=			135,*/	/* dns servers */
 };
 
 /* a lease that never expires */
@@ -154,22 +154,22 @@ typedef struct Bootp	Bootp;
 struct Bootp
 {
 	/* Udphdr (included because of structure alignment on the alpha) */
-	uchar	udphdr[Udphdrsize];
+	unsigned char	udphdr[Udphdrsize];
 
-	uchar	op;			/* opcode */
-	uchar	htype;			/* hardware type */
-	uchar	hlen;			/* hardware address len */
-	uchar	hops;			/* hops */
-	uchar	xid[4];			/* a random number */
-	uchar	secs[2];		/* elapsed since client started booting */
-	uchar	flags[2];
-	uchar	ciaddr[IPv4addrlen];	/* client IP address (client tells server) */
-	uchar	yiaddr[IPv4addrlen];	/* client IP address (server tells client) */
-	uchar	siaddr[IPv4addrlen];	/* server IP address */
-	uchar	giaddr[IPv4addrlen];	/* gateway IP address */
-	uchar	chaddr[Maxhwlen];	/* client hardware address */
+	unsigned char	op;			/* opcode */
+	unsigned char	htype;			/* hardware type */
+	unsigned char	hlen;			/* hardware address len */
+	unsigned char	hops;			/* hops */
+	unsigned char	xid[4];			/* a random number */
+	unsigned char	secs[2];		/* elapsed since client started booting */
+	unsigned char	flags[2];
+	unsigned char	ciaddr[IPv4addrlen];	/* client IP address (client tells server) */
+	unsigned char	yiaddr[IPv4addrlen];	/* client IP address (server tells client) */
+	unsigned char	siaddr[IPv4addrlen];	/* server IP address */
+	unsigned char	giaddr[IPv4addrlen];	/* gateway IP address */
+	unsigned char	chaddr[Maxhwlen];	/* client hardware address */
 	char	sname[64];		/* server host name (optional) */
 	char	file[Maxfilelen];	/* boot file name */
-	uchar	optmagic[4];
-	uchar	optdata[Maxoptlen];
+	unsigned char	optmagic[4];
+	unsigned char	optdata[Maxoptlen];
 };

+ 17 - 17
sys/src/cmd/ip/icmp.h

@@ -53,18 +53,18 @@ enum
 typedef struct Ip4hdr Ip4hdr;
 struct Ip4hdr
 {
-	uchar	vihl;		/* Version and header length */
-	uchar	tos;		/* Type of service */
-	uchar	length[2];	/* packet length */
-	uchar	id[2];		/* Identification */
-	uchar	frag[2];	/* Fragment information */
-	uchar	ttl;		/* Time to live */
-	uchar	proto;		/* Protocol */
-	uchar	ipcksum[2];	/* Header checksum */
-	uchar	src[4];		/* Ipv4 source */
-	uchar	dst[4];		/* Ipv4 destination */
+	unsigned char	vihl;		/* Version and header length */
+	unsigned char	tos;		/* Type of service */
+	unsigned char	length[2];	/* packet length */
+	unsigned char	id[2];		/* Identification */
+	unsigned char	frag[2];	/* Fragment information */
+	unsigned char	ttl;		/* Time to live */
+	unsigned char	proto;		/* Protocol */
+	unsigned char	ipcksum[2];	/* Header checksum */
+	unsigned char	src[4];		/* Ipv4 source */
+	unsigned char	dst[4];		/* Ipv4 destination */
 
-	uchar	data[];
+	unsigned char	data[];
 };
 
 // #define IP4HDRSZ offsetof(Ip4hdr, data[0])
@@ -72,12 +72,12 @@ struct Ip4hdr
 /* the icmp payload has the same format in v4 and v6 */
 typedef struct Icmphdr Icmphdr;
 struct Icmphdr {
-	uchar	type;
-	uchar	code;
-	uchar	cksum[2];
-	uchar	icmpid[2];
-	uchar	seq[2];
-	uchar	data[];
+	unsigned char	type;
+	unsigned char	code;
+	unsigned char	cksum[2];
+	unsigned char	icmpid[2];
+	unsigned char	seq[2];
+	unsigned char	data[];
 };
 
 // #define ICMPHDRSZ offsetof(Icmphdr, data[0])

+ 20 - 0
sys/src/cmd/ip/ipconfig/BUILDKIPCONFIG

@@ -0,0 +1,20 @@
+#!/bin/bash
+set -e
+
+CC=gcc
+CFLAGS="-mcmodel=small -O0 -fplan9-extensions -ffreestanding -fno-builtin -Wall -Wno-missing-braces -Wno-parentheses -Wno-unknown-pragmas -Wuninitialized -Wmaybe-uninitialized -I/amd64/include -I/sys/include -c -g "
+LIB_DIR="/amd64/lib"
+LDFLAGS=-L${LIB_DIR}
+LD=ld
+
+rm -f *.o
+$CC $CFLAGS -c \
+ipv6.c \
+main.c \
+ppp.c \
+
+echo "linking.."
+echo
+$LD -static -o ipconfig.elf.out *.o $LDFLAGS -l9p -lndb -lbio -lip -lc -emain -Ttext=0x200020
+
+rm *.o

+ 79 - 79
sys/src/cmd/ip/ipconfig/ipconfig.h

@@ -19,22 +19,22 @@ struct Conf
 	int	cfd;			/* ifc control channel */
 	int	dfd;			/* ifc data channel (for ppp) */
 	char	*cputype;
-	uchar	hwa[32];		/* hardware address */
+	unsigned char	hwa[32];		/* hardware address */
 	int	hwatype;
 	int	hwalen;
-	uchar	cid[32];
+	unsigned char	cid[32];
 	int	cidlen;
 	char	*baud;
 
 	/* learned info */
-	uchar	gaddr[IPaddrlen];
-	uchar	laddr[IPaddrlen];
-	uchar	mask[IPaddrlen];
-	uchar	raddr[IPaddrlen];
-	uchar	dns[2*IPaddrlen];
-	uchar	fs[2*IPaddrlen];
-	uchar	auth[2*IPaddrlen];
-	uchar	ntp[IPaddrlen];
+	unsigned char	gaddr[IPaddrlen];
+	unsigned char	laddr[IPaddrlen];
+	unsigned char	mask[IPaddrlen];
+	unsigned char	raddr[IPaddrlen];
+	unsigned char	dns[2*IPaddrlen];
+	unsigned char	fs[2*IPaddrlen];
+	unsigned char	auth[2*IPaddrlen];
+	unsigned char	ntp[IPaddrlen];
 	int	mtu;
 
 	/* dhcp specific */
@@ -45,7 +45,7 @@ struct Conf
 	char	sname[64];
 	char	hostname[32];
 	char	domainname[64];
-	uchar	server[IPaddrlen];	/* server IP address */
+	unsigned char	server[IPaddrlen];	/* server IP address */
 	uint32_t	offered;		/* offered lease time */
 	uint32_t	lease;			/* lease time */
 	uint32_t	resend;			/* # of resends for current state */
@@ -59,10 +59,10 @@ struct Conf
 //	ulong	solicit_retries;
 
 	/* router-advertisement related */
-	uchar	sendra;
-	uchar	recvra;
-	uchar	mflag;
-	uchar	oflag;
+	unsigned char	sendra;
+	unsigned char	recvra;
+	unsigned char	mflag;
+	unsigned char	oflag;
 	int 	maxraint; /* rfc2461, p.39: 4sec ≤ maxraint ≤ 1800sec, def 600 */
 	int	minraint;	/* 3sec ≤ minraint ≤ 0.75*maxraint */
 	int	linkmtu;
@@ -70,14 +70,14 @@ struct Conf
 	int	rxmitra;	/* default 0 */
 	int	ttl;		/* default 0 (unspecified) */
 	/* default gateway params */
-	uchar	v6gaddr[IPaddrlen];
+	unsigned char	v6gaddr[IPaddrlen];
 	int	routerlt;	/* router life time */
 
 	/* prefix related */
-	uchar	v6pref[IPaddrlen];
+	unsigned char	v6pref[IPaddrlen];
 	int	prefixlen;
-	uchar	onlink;		/* flag: address is `on-link' */
-	uchar	autoflag;	/* flag: autonomous */
+	unsigned char	onlink;		/* flag: address is `on-link' */
+	unsigned char	autoflag;	/* flag: autonomous */
 	uint32_t	validlt;	/* valid lifetime (seconds) */
 	uint32_t	preflt;		/* preferred lifetime (seconds) */
 };
@@ -104,7 +104,7 @@ extern int	dupl_disc;
 extern int	myifc;
 extern char	*vs;
 
-void	adddefroute(char*, uchar*);
+void	adddefroute(char*, unsigned char*);
 void	binddevice(void);
 void	bootprequest(void);
 void	controldevice(void);
@@ -119,32 +119,32 @@ void	dounbind(void);
 int	getndb(void);
 int	ipconfig4(void);
 int	ipconfig6(int);
-long	jitter(void);
+int32_t	jitter(void);
 void	lookforip(char*);
 void	mkclientid(void);
 int	nipifcs(char*);
 int	openlisten(void);
-uchar	*optaddaddr(uchar*, int, uchar*);
-uchar	*optaddbyte(uchar*, int, int);
-uchar	*optaddstr(uchar*, int, char*);
-uchar	*optadd(uchar*, int, void*, int);
-uchar	*optaddulong(uchar*, int, uint32_t);
-uchar	*optaddvec(uchar*, int, uchar*, int);
-int	optgetaddrs(uchar*, int, uchar*, int);
-int	optgetaddr(uchar*, int, uchar*);
-int	optgetbyte(uchar*, int);
-int	optgetstr(uchar*, int, char*, int);
-uchar	*optget(uchar*, int, int*);
-uint32_t	optgetulong(uchar*, int);
-int	optgetvec(uchar*, int, uchar*, int);
-int	parseoptions(uchar *p, int n);
+unsigned char	*optaddaddr(unsigned char*, int, unsigned char*);
+unsigned char	*optaddbyte(unsigned char*, int, int);
+unsigned char	*optaddstr(unsigned char*, int, char*);
+unsigned char	*optadd(unsigned char*, int, void*, int);
+unsigned char	*optaddulong(unsigned char*, int, uint32_t);
+unsigned char	*optaddvec(unsigned char*, int, unsigned char*, int);
+int	optgetaddrs(unsigned char*, int, unsigned char*, int);
+int	optgetaddr(unsigned char*, int, unsigned char*);
+int	optgetbyte(unsigned char*, int);
+int	optgetstr(unsigned char*, int, char*, int);
+unsigned char	*optget(unsigned char*, int, int*);
+uint32_t	optgetulong(unsigned char*, int);
+int	optgetvec(unsigned char*, int, unsigned char*, int);
+int	parseoptions(unsigned char *p, int n);
 int	parseverb(char*);
 void	procsetname(char *fmt, ...);
 void	putndb(void);
 uint32_t	randint(uint32_t low, uint32_t hi);
 void	tweakservers(void);
 void	usage(void);
-int	validip(uchar*);
+int	validip(unsigned char*);
 void	warning(char *fmt, ...);
 void	writendb(char*, int, int);
 
@@ -208,63 +208,63 @@ enum {
 };
 
 struct Headers {
-	uchar	dst[IPaddrlen];
-	uchar	src[IPaddrlen];
+	unsigned char	dst[IPaddrlen];
+	unsigned char	src[IPaddrlen];
 };
 
 struct Routersol {
-	uchar	vcf[4];		/* version:4, traffic class:8, flow label:20 */
-	uchar	ploadlen[2];	/* payload length: packet length - 40 */
-	uchar	proto;		/* next header	type */
-	uchar	ttl;		/* hop limit */
-	uchar	src[IPaddrlen];
-	uchar	dst[IPaddrlen];
-	uchar	type;
-	uchar	code;
-	uchar	cksum[2];
-	uchar	res[4];
+	unsigned char	vcf[4];		/* version:4, traffic class:8, flow label:20 */
+	unsigned char	ploadlen[2];	/* payload length: packet length - 40 */
+	unsigned char	proto;		/* next header	type */
+	unsigned char	ttl;		/* hop limit */
+	unsigned char	src[IPaddrlen];
+	unsigned char	dst[IPaddrlen];
+	unsigned char	type;
+	unsigned char	code;
+	unsigned char	cksum[2];
+	unsigned char	res[4];
 };
 
 struct Routeradv {
-	uchar	vcf[4];		/* version:4, traffic class:8, flow label:20 */
-	uchar	ploadlen[2];	/* payload length: packet length - 40 */
-	uchar	proto;		/* next header	type */
-	uchar	ttl;		/* hop limit */
-	uchar	src[IPaddrlen];
-	uchar	dst[IPaddrlen];
-	uchar	type;
-	uchar	code;
-	uchar	cksum[2];
-	uchar	cttl;
-	uchar	mor;
-	uchar	routerlt[2];
-	uchar	rchbltime[4];
-	uchar	rxmtimer[4];
+	unsigned char	vcf[4];		/* version:4, traffic class:8, flow label:20 */
+	unsigned char	ploadlen[2];	/* payload length: packet length - 40 */
+	unsigned char	proto;		/* next header	type */
+	unsigned char	ttl;		/* hop limit */
+	unsigned char	src[IPaddrlen];
+	unsigned char	dst[IPaddrlen];
+	unsigned char	type;
+	unsigned char	code;
+	unsigned char	cksum[2];
+	unsigned char	cttl;
+	unsigned char	mor;
+	unsigned char	routerlt[2];
+	unsigned char	rchbltime[4];
+	unsigned char	rxmtimer[4];
 };
 
 struct Lladdropt {
-	uchar	type;
-	uchar	len;
-	uchar	lladdr[MAClen];
+	unsigned char	type;
+	unsigned char	len;
+	unsigned char	lladdr[MAClen];
 };
 
 struct Prefixopt {
-	uchar	type;
-	uchar	len;
-	uchar	plen;
-	uchar	lar;
-	uchar	validlt[4];
-	uchar	preflt[4];
-	uchar	reserv[4];
-	uchar	pref[IPaddrlen];
+	unsigned char	type;
+	unsigned char	len;
+	unsigned char	plen;
+	unsigned char	lar;
+	unsigned char	validlt[4];
+	unsigned char	preflt[4];
+	unsigned char	reserv[4];
+	unsigned char	pref[IPaddrlen];
 };
 
 struct Mtuopt {
-	uchar	type;
-	uchar	len;
-	uchar	reserv[2];
-	uchar	mtu[4];
+	unsigned char	type;
+	unsigned char	len;
+	unsigned char	reserv[2];
+	unsigned char	mtu[4];
 };
 
-void	ea2lla(uchar *lla, uchar *ea);
-void	ipv62smcast(uchar *smcast, uchar *a);
+void	ea2lla(unsigned char *lla, unsigned char *ea);
+void	ipv62smcast(unsigned char *smcast, unsigned char *a);

+ 4 - 4
sys/src/cmd/ip/ipconfig/ipv6.c

@@ -24,9 +24,9 @@
 
 #define RALOG "v6routeradv"
 
-#define NetS(x) (((uchar*)x)[0]<< 8 | ((uchar*)x)[1])
-#define NetL(x) (((uchar*)x)[0]<<24 | ((uchar*)x)[1]<<16 | \
-		 ((uchar*)x)[2]<< 8 | ((uchar*)x)[3])
+#define NetS(x) (((unsigned char*)x)[0]<< 8 | ((unsigned char*)x)[1])
+#define NetL(x) (((unsigned char*)x)[0]<<24 | ((unsigned char*)x)[1]<<16 | \
+		 ((unsigned char*)x)[2]<< 8 | ((unsigned char*)x)[3])
 
 enum {
 	ICMP6LEN=	4,
@@ -512,7 +512,7 @@ sendrs(int fd)
 static void
 recvrarouter(uint8_t buf[], int pktlen)
 {
-	USED(buf, pktlen);
+	USED(buf); USED(pktlen);
 	ralog("i am a router and got a router advert");
 }
 

+ 1 - 1
sys/src/cmd/ip/ipconfig/main.c

@@ -886,7 +886,7 @@ ipunconfig(void)
 }
 
 void
-ding(void*, char *msg)
+ding(void* v, char *msg)
 {
 	if(strstr(msg, "alarm"))
 		noted(NCONT);