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; |