/[Intel-AMT]/trunk/lib/Intel/AMT/Redir.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

Diff of /trunk/lib/Intel/AMT/Redir.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 8 by dpavlin, Sun Aug 9 12:03:19 2009 UTC revision 9 by dpavlin, Sun Aug 9 12:49:48 2009 UTC
# Line 6  use strict; Line 6  use strict;
6  use IO::Socket::INET;  use IO::Socket::INET;
7  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
8    
 sub hdump {  
         my $data = shift;  
         my $out = unpack('H*', $data),$/;  
         $out =~ s/(..)/$1 /g;  
         warn $out,$/;  
 }  
   
9  our $sock;  our $sock;
10    
11    my $MAX_TRANSMIT_BUFFER = 1000;
12    my $TRANSMIT_BUFFER_TIMEOUT = 100;
13    my $TRANSMIT_OVERFLOW_TIMEOUT = 0;
14    my $HOST_SESSION_RX_TIMEOUT = 10000;
15    my $HOST_FIFO_RX_FLUSH_TIMEOUT = 0;
16    my $HEARTBEAT_INTERVAL = 5000;
17    
18  sub connect {  sub connect {
19          my ( $host ) = shift;          my ( $host ) = shift;
20          my $port = 16994;          my $port = 16994;
# Line 31  sub connect { Line 31  sub connect {
31    
32          $sock->autoflush(1);          $sock->autoflush(1);
33    
34          put( pack('C4A4', 0x10, 0, 0, 0, "SOL ") );          put( pack('C4A4', 0x10, 0, 0, 0, "SOL ")
35          get( 0x11, 13 );                  , 'start redirection session' );
36            get( 0x11, 13
37                    , 'start redirection session reply' );
38    
39          my $credentials = pack('CA*CA*', length($user), $user, length($passwd), $passwd);          my $credentials = pack('CA*CA*', length($user), $user, length($passwd), $passwd);
40    
41          put( pack('C9', 0x13, 0, 0, 0, 0x01, length($credentials), 0, 0, 0) . $credentials );          put( pack('C9', 0x13, 0, 0, 0, 0x01, length($credentials), 0, 0, 0) . $credentials
42          get( 0x14, 9 );                  , 'autheniticate session' );
43            get( 0x14, 9
44                    , 'authenticate session reply' );
45    
46            put(
47                    pack('C8v6C4',
48                            0x20, 0,0,0,
49                            0,0,0,0,
50                            $MAX_TRANSMIT_BUFFER,
51                            $TRANSMIT_BUFFER_TIMEOUT,
52                            $TRANSMIT_OVERFLOW_TIMEOUT,
53                            $HOST_SESSION_RX_TIMEOUT,
54                            $HOST_FIFO_RX_FLUSH_TIMEOUT,
55                            $HEARTBEAT_INTERVAL,
56                            0,0,0,0,
57                    )
58                    , 'start sol redirection' );
59            get( 0x21, 23
60                    , 'start sol redirection reply' );
61    
62            my $send = "\r";
63    
64            put(
65                    pack('C8v', 0x28,0,0,0, 0,0,0,0, length($send) ) . $send,
66                    'sol data to host'
67            );
68            my $host = get( 0x2a, -10, 'sol data from host' );
69    
70  }  }
71    
72    sub hdump {
73            my ($data,$desc) = @_;
74            my $out = unpack('H*', $data);
75            $out =~ s/(.{16})/$1 /g;
76            $out =~ s/(\S\S)/$1 /g;
77            warn $desc ? "# $desc\n$out\n" : "$out\n";
78    }
79    
80  sub put {  sub put {
81          my ( $data ) = shift;          my ( $data, $desc ) = @_;
82          hdump $data;          hdump $data, $desc;
83          syswrite $sock, $data, length($data);          syswrite $sock, $data, length($data);
84  }  }
85    
86  sub get {  sub get {
87          my ( $expect, $len ) = @_;          my ( $expect, $len, $desc ) = @_;
88    
89          my $reply;          my $reply;
90          sysread $sock,$reply,$len;          sysread $sock,$reply,abs($len);
91          hdump $reply;          hdump $reply, $desc;
92    
93          my ( $op, $error ) = unpack('CC', $reply);          my ( $op, $error ) = unpack('CC', $reply);
94          die "expected $expect got $op" unless $op == $expect;          die "expected $expect got $op" unless $op == $expect;
95          die "error" unless $error == 0x00;          die "error" unless $error == 0x00;
96    
97            if ( $len < 0 ) {
98                    $len = unpack('x8v', $reply);
99                    warn "len: $len\n";
100                    sysread $sock, $reply, $len;
101                    hdump $reply, 'data';
102            }
103    
104          return $reply;          return $reply;
105  }  }
106    

Legend:
Removed from v.8  
changed lines
  Added in v.9

  ViewVC Help
Powered by ViewVC 1.1.26