/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 18 - (show annotations)
Sun Aug 9 19:40:05 2009 UTC (14 years, 8 months ago) by dpavlin
File size: 2579 byte(s)
decode LinkPolicy
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;

  ViewVC Help
Powered by ViewVC 1.1.26