# Process  /proc/cmdline and export the network variables
#
# Command example
#     awk -fcmdline_export_awk /proc/cmdline
#
# How to use within a script file:
#   Add the following line in the sript:
#   `awk -fcmdline_export_awk /proc/cmdline`
#
# Sample Server-boot NVRAM/DHCP /proc/cmdline:
#   debug root=nfs nfsroot=9.3.154.26:/tftpboot/linux NSVideo=800x600 
#       NSDepth=16 ip=9.3.154.6:9.3.154.26:9.3.154.1:255.255.255.224 load_ramdisk=1
#
# Sample Flash-boot /proc/cmdline:
# Flash boot /proc/cmdline looks like:
#   debug root=/dev/hda1 NSVideo=800x600 NSDepth=16 
#       ip=9.3.154.6:0.0.0.0.:9.3.154.1:255.255.255.224:xxx.xxx.xxx.xxx:tr0 load_ramdisk=1
#
# Output:
#  export root=nfs
#  export serverBaseDir=/nstation/linux
#  export V=800x600
#  export D=16
#  export ip=9.3.154.39
#  export server=9.3.154.26
#  export gateway=9.3.154.33
#  export subnetmask=255.255.255.224
#  export hostname=xxx.xxx.xxx.xxx	currently not used
#  exort  adapter=tr0			
#  export n1=9.3.154.1
#  export n2=0.0.0.0
#  export pf=1
#


BEGIN { }

$0 ~ "ip" { 
            # process all the fields of the cmdline
            field = 1;
            while (field <= NF) {
	      if ($field ~ "root" && $field !~ "nfsroot" )        # "root=" field
              { 
                printf("export %s\n", $field); 
              }  
              if ($field ~ "nfsroot")                                  # "nfsroot=" field
              {
                # split the ip fields
                split($field, nfsroot_fields, "=");
#               printf ("nfsroot_fields: %s, %s\n", nfsroot_fields[1], nfsroot_fields[2])
	        split(nfsroot_fields[2], nfsroot_sub_fields, ":");
	        printf("export serverBaseDir=%s\n",nfsroot_sub_fields[2]);
              }
	      if ($field ~ "NSVideo" )                            # "NSVideo=" field
              { 
                printf("export %s\n", $field); 
              }  
	      if ($field ~ "V=" )                            # "V=" field  Video
              { 
                printf("export %s\n", $field); 
              }  
	      if ($field ~ "D=" )                            # "D=" field   Display
              { 
                printf("export %s\n", $field); 
              }  
	      if ($field ~ "n1=" )                            # "n1=" field  nameserver1
              { 
                printf("export %s\n", $field); 
              }  
	      if ($field ~ "n2=" )                            # "n2=" field  nameserver1
              { 
                printf("export %s\n", $field); 
              }  
	      if ($field ~ "pf=" )                   # "pf=" field  1=2800 and 2=2200
              { 
                printf("export %s\n", $field); 
              }  
              if ($field ~ "trap_server=" )                            # "n2=" field  nameserver1
              {
                printf("export %s\n", $field);
              }
              if ($field ~ "TS_port=" )                            # "n2=" field  nameserver1
              {
                printf("export %s\n", $field);
              }
              if ($field ~ "ip")                                  # "ip=" field
              {
                # split the ip fields
                split($field, ip_fields, "=");
#               printf ("ip_fields: %s, %s\n", ip_fields[1], ip_fields[2])
	        split(ip_fields[2], ip_net_fields, ":");
	        printf("export ip=%s\nexport server=%s\nexport gateway=%s\nexport subnetmask=%s\nexport adapter=%s\n",ip_net_fields[1], 
	                ip_net_fields[2], ip_net_fields[3], ip_net_fields[4],ip_net_fields[6]);
              }


              # process next field (separated by " ")
              field += 1;
            }  # end while loop 

       }    # end statement

END { }


