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