/[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 19 - (show 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 package Intel::AMT::NetworkAdministration;
2
3 use warnings;
4 use strict;
5
6 use Data::Dump qw/dump/;
7
8 our $debug = 0;
9
10 =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 # 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 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 my $soap = Intel::AMT::SOAP::_soap( 'NetworkAdministration' );
61
62 my $info = {
63 hostname => $soap->GetHostName()->paramsout,
64 domainname => $soap->GetDomainName()->paramsout,
65 interfaces => [ $soap->EnumerateInterfaces->paramsout ],
66 # vlan => [ $soap->GetVlanParameters->paramsout ], # hangs on 3.2.1
67 ping => $soap->GetPingResponse->paramsout,
68 };
69
70 warn "# network_settings ",dump( $info ) if $debug;
71
72 foreach my $if ( @{ $info->{interfaces} } ) {
73 my $detail = $soap->GetInterfaceSettings( SOAP::Data->name('InterfaceHandle'=>$if) )->paramsout;
74 warn "## $if ",dump( $detail ) if $debug;
75 foreach my $param ( keys %{ $detail->{IPv4Parameters} } ) {
76 if ( my $ip = $detail->{IPv4Parameters}->{$param} ) {
77 $detail->{IPv4Parameters}->{$param} = ipv4( $ip );
78 }
79 }
80
81
82 if ( my $lp = $detail->{LinkPolicy} ) {
83 $detail->{LinkPolicy} = decode_mask( $lp, $LinkPolicy );
84 }
85
86 $info->{interface_settings}->{$if} = $detail;
87 }
88
89 return $info;
90 };
91
92 1;

  ViewVC Help
Powered by ViewVC 1.1.26