bug-grub
[Top][All Lists]
Advanced

[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,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]