[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] new command
From: |
Eugene A. Doudine |
Subject: |
Re: [PATCH] new command |
Date: |
Thu, 11 Jan 2001 08:07:46 +0700 (KRAT) |
Hello, Okuju
Thank you for the thorough review of my code, I've rewritten it
according to your suggestions.
Regards,
Eugene
diff -ubBr ./grub-0.5.96.1/ChangeLog ./grub-0.5.96.1-ifconfig2/ChangeLog
--- ./grub-0.5.96.1/ChangeLog Fri Oct 20 03:44:35 2000
+++ ./grub-0.5.96.1-ifconfig2/ChangeLog Thu Jan 11 07:03:00 2001
@@ -1,3 +1,11 @@
+2001-01-11 Eugene Doudine <address@hidden>
+ * stage2/builtins.c (ifconfig_func): New function to configure
+ network interface from command line.
+ (builtin_ifconfig): New variable.
+ (builtin_table): Added pointer to builtin_ifconfig.
+ * netboot/main.c (ifconfig): New function.
+ * netboot/etherboot.h: Added prototype for ifconfig.
+
2000-10-17 OKUJI Yoshinori <address@hidden>
* stage2/builtins.c (setkey_func): Clear the all elements of
diff -ubBr ./grub-0.5.96.1/netboot/etherboot.h
./grub-0.5.96.1-ifconfig2/netboot/etherboot.h
--- ./grub-0.5.96.1/netboot/etherboot.h Tue Jun 6 19:04:01 2000
+++ ./grub-0.5.96.1-ifconfig2/netboot/etherboot.h Thu Jan 11 05:20:32 2001
@@ -462,6 +462,7 @@
#ifdef GRUB
extern void print_network_configuration P((void));
extern int arp_server_override P((const char *buf));
+extern int ifconfig P((char *ip,char *sm,char *gw,char *svr));
#endif /* GRUB */
#ifndef GRUB
diff -ubBr ./grub-0.5.96.1/netboot/main.c
./grub-0.5.96.1-ifconfig2/netboot/main.c
--- ./grub-0.5.96.1/netboot/main.c Sun Jul 30 03:22:54 2000
+++ ./grub-0.5.96.1-ifconfig2/netboot/main.c Thu Jan 11 07:13:50 2001
@@ -206,6 +206,37 @@
return (htonl (0xffffff00));
}
+/* ifconfig - configure network interface */
+int
+ifconfig (char *ip,char *sm,char *gw,char *svr)
+{
+ in_addr tmp;
+ if (sm)
+ {
+ if (!inet_aton(sm,&tmp))
+ return 0;
+ else
+ netmask=tmp.s_addr;
+ }
+ if (ip)
+ {
+ if (!inet_aton(ip,&arptable[ARP_CLIENT].ipaddr))
+ return 0;
+ if (!netmask && !sm)
+ netmask=default_netmask();
+ }
+ if (ip || sm)
+ network_ready=(IP_BROADCAST==(netmask |
arptable[ARP_CLIENT].ipaddr.s_addr)
+ || netmask==(netmask | arptable[ARP_CLIENT].ipaddr.s_addr )
+ || !netmask)?0:1;
+ if (gw && !inet_aton(gw,&arptable[ARP_GATEWAY].ipaddr))
+ return 0;
+ if (svr && !inet_aton(svr,&arptable[ARP_SERVER].ipaddr))
+ return 0;
+ return 1;
+}
+
+
/**************************************************************************
UDP_TRANSMIT - Send a UDP datagram
**************************************************************************/
diff -ubBr ./grub-0.5.96.1/stage2/builtins.c
./grub-0.5.96.1-ifconfig2/stage2/builtins.c
--- ./grub-0.5.96.1/stage2/builtins.c Fri Oct 20 03:50:00 2000
+++ ./grub-0.5.96.1-ifconfig2/stage2/builtins.c Thu Jan 11 07:19:22 2001
@@ -1428,6 +1428,58 @@
};
+#ifdef SUPPORT_NETBOOT
+
+static int
+ifconfig_func (char *arg, int flags)
+{
+ char *svr=NULL,*ip=NULL,*gw=NULL,*sm=NULL;
+ if (! eth_probe ())
+ {
+ grub_printf ("No ethernet card found.\n");
+ errnum=ERR_DEV_VALUES;
+ return 1;
+ }
+ if (!arg || !grub_strlen(arg)) {
+ print_network_configuration();
+ return 0;
+ }
+ while (*arg)
+ {
+ if (!grub_memcmp("--server=",arg,sizeof"--server"))
+ svr=sizeof("--server")+arg;
+ else if (!grub_memcmp("--address=",arg,sizeof("--address")))
+ ip=sizeof("--address")+arg;
+ else if (!grub_memcmp("--gateway=",arg,sizeof("--gateway")))
+ gw=sizeof("--gateway")+arg;
+ else if (!grub_memcmp("--mask=",arg,sizeof("--mask")))
+ sm=sizeof("--mask")+arg;
+ else
+ {
+ errnum = ERR_BAD_ARGUMENT;
+ return 1;
+ }
+ arg=skip_to(0,arg);
+ }
+ if (!ifconfig(ip,sm,gw,svr))
+ {
+ errnum = ERR_BAD_ARGUMENT;
+ return 1;
+ }
+ return 0;
+}
+
+static struct builtin builtin_ifconfig =
+{
+ "ifconfig",
+ ifconfig_func,
+ BUILTIN_CMDLINE | BUILTIN_MENU,
+ "ifconfig [--address=IP] [--gateway=IP] [--mask=MASK] [--server=IP]",
+ "Configure IP address, mask, gateway and tftp server from command line"
+ " or print current network configuration"
+};
+#endif /* SUPPORT_NETBOOT */
+
/* impsprobe */
static int
impsprobe_func (char *arg, int flags)
@@ -4001,6 +4053,9 @@
&builtin_help,
&builtin_hiddenmenu,
&builtin_hide,
+#ifdef SUPPORT_NETBOOT
+ &builtin_ifconfig,
+#endif /* SUPPORT_NETBOOT */
&builtin_impsprobe,
&builtin_initrd,
&builtin_install,