Changeset 3070 in /cluster/svnroot


Ignore:
Timestamp:
Mar 12, 2011 6:42:07 PM (10 years ago)
Author:
leemasa
Message:

Working on automatic system for getting boot flags from custom NIC (#524)

Location:
bccd-ng/branches/sam-test_fw
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • bccd-ng/branches/sam-test_fw/packages/etc/skel/.bash_profile

    r3037 r3070  
    6161echo "initiating automatic control generation
    6262some tests may take a little while"
     63
    6364perl $HOME/tests/bccd_test_suite.pl -c --verbose --messy --mail
    6465echo "Please email developers@bccd.net
  • bccd-ng/branches/sam-test_fw/trees/usr/local/lib/site_perl/5.10.0/Bccd.pm

    r3030 r3070  
    22192219            redo FIND_EXT_NIC;
    22202220        }
    2221                         print "/************************\n$bccd_nic\n*******************/";
    2222                         sleep 5;
    22232221        } else {
    2224                                 my @custom_macs;
    2225                                 my @custom_nics;
    2226                                 my @boot_strings;
    2227 
    2228                                 my @mac_addresses =
    2229                                                 split(/\n/,`ifconfig -a | awk '/HWaddr/ {print \$1 " " \$5}'`);
    2230                                 @custom_macs = grep {/ 02:/} @mac_addresses;
    2231 
    2232                                 for(my $i = 0; $i <= $#custom_macs; ++$i){
    2233                                                 if($custom_macs[$i] =~ m/^(.*?) /) {
    2234                                                                 $custom_nics[$i] = $1;
    2235                                                 }
    2236 
    2237 
    2238                                                 my $open_hex;
    2239                                                 if ($custom_macs[$i] =~ m/(\d):(\d\d)$/){
    2240                                                                 $open_hex = $1.$2;
    2241                                                 } else {
    2242                                                                 die "Error in detecting last three hexes in MAC";
    2243                                                 }
    2244 
    2245                                                 $boot_strings[$i] = sprintf "%012b", hex( $open_hex );
    2246 
    2247                                                 if (
    2248                                                         substr($boot_strings[$i],
    2249                                                                 $IS_BCCD_NETWORK_NIC,1)
    2250                                                                 eq '1'
    2251                                                         )
    2252                                                 {
    2253                                                         $bccd_nic = $custom_nics[$i];
    2254                                                 }
    2255                                 }
    2256                         print "/************************\n$bccd_nic\n*******************/";
    2257                         sleep 5;
    22582222
    22592223                }
     
    24502414}
    24512415
     2416sub get_boot_flags_from_NIC{
     2417        my %request = @_;
     2418        my @custom_macs;
     2419        my @custom_nics;
     2420        my @boot_strings;
     2421        my $boot_string;
     2422        my $bccd_nic;
     2423
     2424
     2425        my @mac_addresses =
     2426                split(/\n/,`ifconfig -a | awk '/HWaddr/ {print \$1 " " \$5}'`);
     2427        @custom_macs = grep {/ 02:/} @mac_addresses;
     2428
     2429        for(my $i = 0; $i <= $#custom_macs; ++$i){
     2430                if($custom_macs[$i] =~ m/^(.*?) /) {
     2431                        $custom_nics[$i] = $1;
     2432                }
     2433
     2434                my $open_hex;
     2435                if ($custom_macs[$i] =~ m/([1-9A-F]):([1-9A-F][1-9A-F])$/){
     2436                        $open_hex = $1.$2;
     2437                } else {
     2438                        die "Error in detecting last three hexes in MAC";
     2439                }
     2440
     2441                $boot_strings[$i] = sprintf "%012b", hex( $open_hex );
     2442
     2443                if (
     2444                                substr($boot_strings[$i],
     2445                                        $IS_BCCD_NETWORK_NIC,1)
     2446                                eq '1'
     2447                   )
     2448                {
     2449                        $bccd_nic = $custom_nics[$i];
     2450                        $boot_string = $boot_strings[$i];
     2451                }
     2452        }
     2453       
     2454        my $boot_flags = '';   
     2455
     2456        foreach my $key(keys %request){
     2457                my $value;
     2458                my $pointer = $request{$key};
     2459                my ($index,$length) = split(/,/,$pointer);
     2460
     2461                unless($length){
     2462                        $length = 1;
     2463                }
     2464
     2465                $value = substr($boot_string,$index,$length);
     2466                $boot_flags .= "export $key=$value\n"; 
     2467        }
     2468
     2469        if ($boot_flags){
     2470                open(BOOTFLAGS, ">/.bccd_boot_flags");
     2471                        print BOOTFLAGS $boot_flags;
     2472                close(BOOTFLAGS);
     2473        }
     2474}
     2475
    245224761;
    24532477
Note: See TracChangeset for help on using the changeset viewer.