/[Intel-AMT]/trunk/lib/Intel/AMT/NetworkAdministration.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/lib/Intel/AMT/NetworkAdministration.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 19 - (hide annotations)
Sun Aug 30 15:21:22 2009 UTC (14 years, 8 months ago) by dpavlin
File size: 2616 byte(s)
some work on chattines
1 dpavlin 17 package Intel::AMT::NetworkAdministration;
2    
3     use warnings;
4     use strict;
5    
6     use Data::Dump qw/dump/;
7    
8 dpavlin 19 our $debug = 0;
9    
10 dpavlin 17 =for reference
11    
12     dpavlin@t61p:~/Desktop/docs/amt/AMT-5.1-SDK/Linux/Intel_AMT/Samples/Soap/NetworkAdministration/c++$ grep FunctionCall *
13     NetworkAdministrationSample.cpp: FunctionCall("GetHostName");
14     NetworkAdministrationSample.cpp: FunctionCall("SetHostName");
15     NetworkAdministrationSample.cpp: FunctionCall("EnumerateInterfaces");
16     NetworkAdministrationSample.cpp: FunctionCall("GetInterfaceSettings");
17     NetworkAdministrationSample.cpp: FunctionCall("SetInterfaceSettings");
18     NetworkAdministrationSample.cpp: FunctionCall("GetVlanParameters");
19     NetworkAdministrationSample.cpp: FunctionCall("SetVlanParameters");
20     NetworkAdministrationSample.cpp: FunctionCall("GetPingResponse");
21     NetworkAdministrationSample.cpp: FunctionCall("SetPingResponse");
22    
23     =cut
24    
25 dpavlin 18 # vim swap hash: '<,'> s/^I\(.*\) => \(.*\),/^I\2 => '\1',/gc
26     my $LinkPolicy = {
27     0x01 => 'AVAILABLE_ON_AC_S0',
28     0x0E => 'AVAILABLE_ON_AC_SX',
29     0x10 => 'AVAILABLE_ON_DC_S0',
30     0xE0 => 'AVAILABLE_ON_DC_SX',
31     };
32    
33    
34     sub decode_mask {
35     my ($nr,$mask) = @_;
36     my @decode;
37     foreach my $m ( keys %$mask ) {
38     push @decode, $mask->{$m} if $nr & $m;
39     }
40     return sprintf("%x", $nr) unless @decode;
41     return [ sort @decode ];
42     }
43    
44 dpavlin 17 use lib 'lib';
45     use base qw/Intel::AMT::SOAP/;
46    
47     sub ipv4 {
48     my $addr = shift;
49     return $addr unless $addr;
50     # sprintf("%x ",$addr) .
51     join('.',
52     ($addr & 0xff000000) >> 24,
53     ($addr & 0x00ff0000) >> 16,
54     ($addr & 0x0000ff00) >> 8,
55     $addr & 0x000000ff,
56     );
57     }
58    
59     sub network_settings {
60 dpavlin 18 my $soap = Intel::AMT::SOAP::_soap( 'NetworkAdministration' );
61    
62 dpavlin 17 my $info = {
63     hostname => $soap->GetHostName()->paramsout,
64     domainname => $soap->GetDomainName()->paramsout,
65     interfaces => [ $soap->EnumerateInterfaces->paramsout ],
66 dpavlin 18 # vlan => [ $soap->GetVlanParameters->paramsout ], # hangs on 3.2.1
67 dpavlin 17 ping => $soap->GetPingResponse->paramsout,
68     };
69    
70 dpavlin 19 warn "# network_settings ",dump( $info ) if $debug;
71 dpavlin 17
72     foreach my $if ( @{ $info->{interfaces} } ) {
73     my $detail = $soap->GetInterfaceSettings( SOAP::Data->name('InterfaceHandle'=>$if) )->paramsout;
74 dpavlin 19 warn "## $if ",dump( $detail ) if $debug;
75 dpavlin 17 foreach my $param ( keys %{ $detail->{IPv4Parameters} } ) {
76     if ( my $ip = $detail->{IPv4Parameters}->{$param} ) {
77     $detail->{IPv4Parameters}->{$param} = ipv4( $ip );
78     }
79     }
80 dpavlin 18
81    
82     if ( my $lp = $detail->{LinkPolicy} ) {
83     $detail->{LinkPolicy} = decode_mask( $lp, $LinkPolicy );
84     }
85    
86 dpavlin 17 $info->{interface_settings}->{$if} = $detail;
87     }
88    
89     return $info;
90     };
91    
92     1;

  ViewVC Help
Powered by ViewVC 1.1.26