~ubuntu-branches/ubuntu/vivid/openipmi/vivid

« back to all changes in this revision

Viewing changes to swig/perl/test_lanparm

  • Committer: Bazaar Package Importer
  • Author(s): Noèl Köthe
  • Date: 2006-09-15 17:56:24 UTC
  • mfrom: (1.1.2 upstream) (2.1.1 etch)
  • Revision ID: james.westby@ubuntu.com-20060915175624-ljk0mg3xtcm65tvm
Tags: 2.0.7-1
* new upstream release from 2006-06-08
  Thanks to John Wright <john.wright hp.com> for initial work
  (closes: Bug#380149)
* updated Standards Version
* new binaries openipmicmd, openipmish, rmcp_ping

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/perl
 
2
 
 
3
# test_lanparm
 
4
#
 
5
# Test of the lanparm code
 
6
#
 
7
# Author: MontaVista Software, Inc.
 
8
#         Corey Minyard <minyard@mvista.com>
 
9
#         source@mvista.com
 
10
#
 
11
# Copyright 2004 MontaVista Software Inc.
 
12
#
 
13
#  This program is free software; you can redistribute it and/or
 
14
#  modify it under the terms of the GNU Lesser General Public License
 
15
#  as published by the Free Software Foundation; either version 2 of
 
16
#  the License, or (at your option) any later version.
 
17
#
 
18
#
 
19
#  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
 
20
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 
21
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 
22
#  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 
23
#  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 
24
#  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
 
25
#  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 
26
#  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
 
27
#  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
 
28
#  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
29
#
 
30
#  You should have received a copy of the GNU Lesser General Public
 
31
#  License along with this program; if not, write to the Free
 
32
#  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
33
#
 
34
 
 
35
use Lanserv;
 
36
use OpenIPMI;
 
37
 
 
38
my $errcountholder : shared = 0;
 
39
$errcount = \$errcountholder;
 
40
 
 
41
my $fru_field_table = {};
 
42
 
 
43
sub reg_err {
 
44
    my $str = shift;
 
45
 
 
46
    $$errcount++;
 
47
    print STDERR "***", $str, "\n";
 
48
}
 
49
 
 
50
sub get_errcount {
 
51
    return $$errcount;
 
52
}
 
53
 
 
54
{
 
55
    package CloseDomain;
 
56
    sub new {
 
57
        my $a = shift;
 
58
        my $b = \$a;
 
59
        $b = bless $b;
 
60
        return $b;
 
61
    }
 
62
 
 
63
    sub domain_cb {
 
64
        my $self = shift;
 
65
        my $domain = shift;
 
66
 
 
67
        $domain->close($$self);
 
68
    }
 
69
 
 
70
    package aaa;
 
71
 
 
72
    sub new {
 
73
        my $self = shift;
 
74
        my $a = {};
 
75
        $a->{handler} = shift;
 
76
        return bless \$a;
 
77
    }
 
78
 
 
79
    package Handlers;
 
80
 
 
81
    sub new {
 
82
        my $a = {};
 
83
        $a->{keepon} = 1;
 
84
        $a->{accmode} = 0;
 
85
        return bless \$a;
 
86
    }
 
87
 
 
88
    sub log {
 
89
        my $self = shift;
 
90
        my $level = shift;
 
91
        my $log = shift;
 
92
 
 
93
        print $level, ": ", $log, "\n";
 
94
    }
 
95
 
 
96
    sub lanparm_set_parm_cb {
 
97
        my $self = shift;
 
98
        my $lanparm = shift;
 
99
        my $err = shift;
 
100
 
 
101
        print "Parm set: ", $$self->{accmode}, "\n";
 
102
        $rv = $lanparm->get_parm($OpenIPMI::LANPARM_AUTH_TYPE_ENABLES,
 
103
                                 0, 0, $self);
 
104
        if ($rv) {
 
105
            main::reg_err("Unable to request lan parm(1): $rv\n");
 
106
            $self->close();
 
107
            return;
 
108
        }
 
109
    }
 
110
 
 
111
 
 
112
    sub lanparm_got_parm_cb {
 
113
        my $self = shift;
 
114
        my $lanparm = shift;
 
115
        my $err = shift;
 
116
        my $parm_rev = shift;
 
117
        my @vals = @_;
 
118
 
 
119
        print "Parm retrieved: ", $$self->{accmode}, "\n";
 
120
        if ($parm_rev != 0x11) {
 
121
            main::reg_err("Invalid parm revision\n");
 
122
        }
 
123
 
 
124
        if ($$self->{accmode} == 1) {
 
125
            if (join(" ", @vals) ne "55 55 55 55 55") {
 
126
                main::reg_err("Invalid get parms(1)\n");
 
127
                $self->close();
 
128
                return;
 
129
            }
 
130
            $vals[2] = 0x01;
 
131
            $$self->{accmode} = 2;
 
132
            $rv = $lanparm->set_parm($OpenIPMI::LANPARM_AUTH_TYPE_ENABLES,
 
133
                                     join(" ", @vals), $self);
 
134
            if ($rv) {
 
135
                main::reg_err("Error setting parms(1): $rv\n");
 
136
                $self->close();
 
137
                return;
 
138
            }
 
139
        } elsif ($$self->{accmode} == 2) {
 
140
            if (join(" ", @vals) ne "55 55 1 55 55") {
 
141
                main::reg_err("Invalid get parms(2)\n");
 
142
                $self->close();
 
143
                return;
 
144
            }
 
145
            $vals[4] = 0x04;
 
146
            $$self->{accmode} = 3;
 
147
            $rv = $lanparm->set_parm_array($OpenIPMI::LANPARM_AUTH_TYPE_ENABLES,
 
148
                                           \@vals, $self);
 
149
            if ($rv) {
 
150
                main::reg_err("Error setting parms(2): $rv\n");
 
151
                $self->close();
 
152
                return;
 
153
            }
 
154
        } else {
 
155
            if (join(" ", @vals) ne "55 55 1 55 4") {
 
156
                main::reg_err("Invalid get parms(3)\n");
 
157
                $self->close();
 
158
                return;
 
159
            }
 
160
 
 
161
            $self->close();
 
162
        }
 
163
    }
 
164
 
 
165
    @first_configs = 
 
166
        ( "0 -1 -1 support_auth_oem bool false",
 
167
          "1 -1 -1 support_auth_straight bool false",
 
168
          "2 -1 -1 support_auth_md5 bool false",
 
169
          "3 -1 -1 support_auth_md2 bool false",
 
170
          "4 -1 -1 support_auth_none bool false",
 
171
          "5 -1 -1 ip_addr_source integer 0",
 
172
          "6 -1 -1 ipv4_ttl integer 0",
 
173
          "7 -1 -1 ipv4_flags integer 0",
 
174
          "8 -1 -1 ipv4_precedence integer 0",
 
175
          "9 -1 -1 ipv4_tos integer 0",
 
176
          "10 0 1 enable_auth_oem bool false",
 
177
          "10 1 2 enable_auth_oem bool false",
 
178
          "10 2 3 enable_auth_oem bool false",
 
179
          "10 3 4 enable_auth_oem bool false",
 
180
          "10 4 -1 enable_auth_oem bool false",
 
181
          "11 0 1 enable_auth_straight bool false",
 
182
          "11 1 2 enable_auth_straight bool false",
 
183
          "11 2 3 enable_auth_straight bool false",
 
184
          "11 3 4 enable_auth_straight bool false",
 
185
          "11 4 -1 enable_auth_straight bool false",
 
186
          "12 0 1 enable_auth_md5 bool false",
 
187
          "12 1 2 enable_auth_md5 bool false",
 
188
          "12 2 3 enable_auth_md5 bool false",
 
189
          "12 3 4 enable_auth_md5 bool false",
 
190
          "12 4 -1 enable_auth_md5 bool false",
 
191
          "13 0 1 enable_auth_md2 bool false",
 
192
          "13 1 2 enable_auth_md2 bool false",
 
193
          "13 2 3 enable_auth_md2 bool false",
 
194
          "13 3 4 enable_auth_md2 bool false",
 
195
          "13 4 -1 enable_auth_md2 bool false",
 
196
          "14 0 1 enable_auth_none bool false",
 
197
          "14 1 2 enable_auth_none bool false",
 
198
          "14 2 3 enable_auth_none bool false",
 
199
          "14 3 4 enable_auth_none bool false",
 
200
          "14 4 -1 enable_auth_none bool false",
 
201
          "15 -1 -1 ip_addr ip 0.0.0.0",
 
202
          "16 -1 -1 mac_addr mac 00:00:00:00:00:00",
 
203
          "17 -1 -1 subnet_mask ip 0.0.0.0",
 
204
          "18 -1 -1 port_rmcp_primary integer 0",
 
205
          "19 -1 -1 port_rmcp_secondary integer 0",
 
206
          "20 -1 -1 bmc_generated_arps bool false",
 
207
          "21 -1 -1 bmc_generated_garps bool false",
 
208
          "22 -1 -1 garp_interval integer 0",
 
209
          "23 -1 -1 default_gateway_ip_addr ip 0.0.0.0",
 
210
          "24 -1 -1 default_gateway_mac_addr mac 00:00:00:00:00:00",
 
211
          "25 -1 -1 backup_gateway_ip_addr ip 0.0.0.0",
 
212
          "26 -1 -1 backup_gateway_mac_addr mac 00:00:00:00:00:00",
 
213
          "27 -1 -1 community_string data 0x00%0x00%0x00%0x00%0x00%0x00%0x00%0x00%0x00%0x00%0x00%0x00%0x00%0x00%0x00%0x00%0x00%0x00",
 
214
          "28 -1 -1 num_alert_destinations integer 16",
 
215
          "29 0 1 alert_ack bool false",
 
216
          "29 1 2 alert_ack bool false",
 
217
          "29 2 3 alert_ack bool false",
 
218
          "29 3 4 alert_ack bool false",
 
219
          "29 4 5 alert_ack bool false",
 
220
          "29 5 6 alert_ack bool false",
 
221
          "29 6 7 alert_ack bool false",
 
222
          "29 7 8 alert_ack bool false",
 
223
          "29 8 9 alert_ack bool false",
 
224
          "29 9 10 alert_ack bool false",
 
225
          "29 10 11 alert_ack bool false",
 
226
          "29 11 12 alert_ack bool false",
 
227
          "29 12 13 alert_ack bool false",
 
228
          "29 13 14 alert_ack bool false",
 
229
          "29 14 15 alert_ack bool false",
 
230
          "29 15 -1 alert_ack bool false",
 
231
          "30 0 1 dest_type integer 0",
 
232
          "30 1 2 dest_type integer 0",
 
233
          "30 2 3 dest_type integer 0",
 
234
          "30 3 4 dest_type integer 0",
 
235
          "30 4 5 dest_type integer 0",
 
236
          "30 5 6 dest_type integer 0",
 
237
          "30 6 7 dest_type integer 0",
 
238
          "30 7 8 dest_type integer 0",
 
239
          "30 8 9 dest_type integer 0",
 
240
          "30 9 10 dest_type integer 0",
 
241
          "30 10 11 dest_type integer 0",
 
242
          "30 11 12 dest_type integer 0",
 
243
          "30 12 13 dest_type integer 0",
 
244
          "30 13 14 dest_type integer 0",
 
245
          "30 14 15 dest_type integer 0",
 
246
          "30 15 -1 dest_type integer 0",
 
247
          "31 0 1 alert_retry_interval integer 0",
 
248
          "31 1 2 alert_retry_interval integer 0",
 
249
          "31 2 3 alert_retry_interval integer 0",
 
250
          "31 3 4 alert_retry_interval integer 0",
 
251
          "31 4 5 alert_retry_interval integer 0",
 
252
          "31 5 6 alert_retry_interval integer 0",
 
253
          "31 6 7 alert_retry_interval integer 0",
 
254
          "31 7 8 alert_retry_interval integer 0",
 
255
          "31 8 9 alert_retry_interval integer 0",
 
256
          "31 9 10 alert_retry_interval integer 0",
 
257
          "31 10 11 alert_retry_interval integer 0",
 
258
          "31 11 12 alert_retry_interval integer 0",
 
259
          "31 12 13 alert_retry_interval integer 0",
 
260
          "31 13 14 alert_retry_interval integer 0",
 
261
          "31 14 15 alert_retry_interval integer 0",
 
262
          "31 15 -1 alert_retry_interval integer 0",
 
263
          "32 0 1 max_alert_retries integer 0",
 
264
          "32 1 2 max_alert_retries integer 0",
 
265
          "32 2 3 max_alert_retries integer 0",
 
266
          "32 3 4 max_alert_retries integer 0",
 
267
          "32 4 5 max_alert_retries integer 0",
 
268
          "32 5 6 max_alert_retries integer 0",
 
269
          "32 6 7 max_alert_retries integer 0",
 
270
          "32 7 8 max_alert_retries integer 0",
 
271
          "32 8 9 max_alert_retries integer 0",
 
272
          "32 9 10 max_alert_retries integer 0",
 
273
          "32 10 11 max_alert_retries integer 0",
 
274
          "32 11 12 max_alert_retries integer 0",
 
275
          "32 12 13 max_alert_retries integer 0",
 
276
          "32 13 14 max_alert_retries integer 0",
 
277
          "32 14 15 max_alert_retries integer 0",
 
278
          "32 15 -1 max_alert_retries integer 0",
 
279
          "33 0 1 dest_format integer 0",
 
280
          "33 1 2 dest_format integer 0",
 
281
          "33 2 3 dest_format integer 0",
 
282
          "33 3 4 dest_format integer 0",
 
283
          "33 4 5 dest_format integer 0",
 
284
          "33 5 6 dest_format integer 0",
 
285
          "33 6 7 dest_format integer 0",
 
286
          "33 7 8 dest_format integer 0",
 
287
          "33 8 9 dest_format integer 0",
 
288
          "33 9 10 dest_format integer 0",
 
289
          "33 10 11 dest_format integer 0",
 
290
          "33 11 12 dest_format integer 0",
 
291
          "33 12 13 dest_format integer 0",
 
292
          "33 13 14 dest_format integer 0",
 
293
          "33 14 15 dest_format integer 0",
 
294
          "33 15 -1 dest_format integer 0",
 
295
          "34 0 1 gw_to_use integer 0",
 
296
          "34 1 2 gw_to_use integer 0",
 
297
          "34 2 3 gw_to_use integer 0",
 
298
          "34 3 4 gw_to_use integer 0",
 
299
          "34 4 5 gw_to_use integer 0",
 
300
          "34 5 6 gw_to_use integer 0",
 
301
          "34 6 7 gw_to_use integer 0",
 
302
          "34 7 8 gw_to_use integer 0",
 
303
          "34 8 9 gw_to_use integer 0",
 
304
          "34 9 10 gw_to_use integer 0",
 
305
          "34 10 11 gw_to_use integer 0",
 
306
          "34 11 12 gw_to_use integer 0",
 
307
          "34 12 13 gw_to_use integer 0",
 
308
          "34 13 14 gw_to_use integer 0",
 
309
          "34 14 15 gw_to_use integer 0",
 
310
          "34 15 -1 gw_to_use integer 0",
 
311
          "35 0 1 dest_ip_addr ip 0.0.0.0",
 
312
          "35 1 2 dest_ip_addr ip 0.0.0.0",
 
313
          "35 2 3 dest_ip_addr ip 0.0.0.0",
 
314
          "35 3 4 dest_ip_addr ip 0.0.0.0",
 
315
          "35 4 5 dest_ip_addr ip 0.0.0.0",
 
316
          "35 5 6 dest_ip_addr ip 0.0.0.0",
 
317
          "35 6 7 dest_ip_addr ip 0.0.0.0",
 
318
          "35 7 8 dest_ip_addr ip 0.0.0.0",
 
319
          "35 8 9 dest_ip_addr ip 0.0.0.0",
 
320
          "35 9 10 dest_ip_addr ip 0.0.0.0",
 
321
          "35 10 11 dest_ip_addr ip 0.0.0.0",
 
322
          "35 11 12 dest_ip_addr ip 0.0.0.0",
 
323
          "35 12 13 dest_ip_addr ip 0.0.0.0",
 
324
          "35 13 14 dest_ip_addr ip 0.0.0.0",
 
325
          "35 14 15 dest_ip_addr ip 0.0.0.0",
 
326
          "35 15 -1 dest_ip_addr ip 0.0.0.0",
 
327
          "36 0 1 dest_mac_addr mac 00:00:00:00:00:00",
 
328
          "36 1 2 dest_mac_addr mac 00:00:00:00:00:00",
 
329
          "36 2 3 dest_mac_addr mac 00:00:00:00:00:00",
 
330
          "36 3 4 dest_mac_addr mac 00:00:00:00:00:00",
 
331
          "36 4 5 dest_mac_addr mac 00:00:00:00:00:00",
 
332
          "36 5 6 dest_mac_addr mac 00:00:00:00:00:00",
 
333
          "36 6 7 dest_mac_addr mac 00:00:00:00:00:00",
 
334
          "36 7 8 dest_mac_addr mac 00:00:00:00:00:00",
 
335
          "36 8 9 dest_mac_addr mac 00:00:00:00:00:00",
 
336
          "36 9 10 dest_mac_addr mac 00:00:00:00:00:00",
 
337
          "36 10 11 dest_mac_addr mac 00:00:00:00:00:00",
 
338
          "36 11 12 dest_mac_addr mac 00:00:00:00:00:00",
 
339
          "36 12 13 dest_mac_addr mac 00:00:00:00:00:00",
 
340
          "36 13 14 dest_mac_addr mac 00:00:00:00:00:00",
 
341
          "36 14 15 dest_mac_addr mac 00:00:00:00:00:00",
 
342
          "36 15 -1 dest_mac_addr mac 00:00:00:00:00:00",
 
343
          "37 0 1 dest_vlan_tag_type integer 0",
 
344
          "37 1 2 dest_vlan_tag_type integer 0",
 
345
          "37 2 3 dest_vlan_tag_type integer 0",
 
346
          "37 3 4 dest_vlan_tag_type integer 0",
 
347
          "37 4 5 dest_vlan_tag_type integer 0",
 
348
          "37 5 6 dest_vlan_tag_type integer 0",
 
349
          "37 6 7 dest_vlan_tag_type integer 0",
 
350
          "37 7 8 dest_vlan_tag_type integer 0",
 
351
          "37 8 9 dest_vlan_tag_type integer 0",
 
352
          "37 9 10 dest_vlan_tag_type integer 0",
 
353
          "37 10 11 dest_vlan_tag_type integer 0",
 
354
          "37 11 12 dest_vlan_tag_type integer 0",
 
355
          "37 12 13 dest_vlan_tag_type integer 0",
 
356
          "37 13 14 dest_vlan_tag_type integer 0",
 
357
          "37 14 15 dest_vlan_tag_type integer 0",
 
358
          "37 15 -1 dest_vlan_tag_type integer 0",
 
359
          "38 0 1 dest_vlan_tag integer 0",
 
360
          "38 1 2 dest_vlan_tag integer 0",
 
361
          "38 2 3 dest_vlan_tag integer 0",
 
362
          "38 3 4 dest_vlan_tag integer 0",
 
363
          "38 4 5 dest_vlan_tag integer 0",
 
364
          "38 5 6 dest_vlan_tag integer 0",
 
365
          "38 6 7 dest_vlan_tag integer 0",
 
366
          "38 7 8 dest_vlan_tag integer 0",
 
367
          "38 8 9 dest_vlan_tag integer 0",
 
368
          "38 9 10 dest_vlan_tag integer 0",
 
369
          "38 10 11 dest_vlan_tag integer 0",
 
370
          "38 11 12 dest_vlan_tag integer 0",
 
371
          "38 12 13 dest_vlan_tag integer 0",
 
372
          "38 13 14 dest_vlan_tag integer 0",
 
373
          "38 14 15 dest_vlan_tag integer 0",
 
374
          "38 15 -1 dest_vlan_tag integer 0",
 
375
          "39 -1 -1 vlan_id_enable bool false",
 
376
          "40 -1 -1 vlan_id integer 0",
 
377
          "41 -1 -1 vlan_priority integer 0",
 
378
          "42 -1 -1 num_cipher_suites integer 16",
 
379
          "43 0 1 cipher_suite_entry integer 1",
 
380
          "43 1 2 cipher_suite_entry integer 2",
 
381
          "43 2 3 cipher_suite_entry integer 3",
 
382
          "43 3 4 cipher_suite_entry integer 4",
 
383
          "43 4 5 cipher_suite_entry integer 5",
 
384
          "43 5 6 cipher_suite_entry integer 6",
 
385
          "43 6 7 cipher_suite_entry integer 7",
 
386
          "43 7 8 cipher_suite_entry integer 8",
 
387
          "43 8 9 cipher_suite_entry integer 9",
 
388
          "43 9 10 cipher_suite_entry integer 10",
 
389
          "43 10 11 cipher_suite_entry integer 11",
 
390
          "43 11 12 cipher_suite_entry integer 12",
 
391
          "43 12 13 cipher_suite_entry integer 13",
 
392
          "43 13 14 cipher_suite_entry integer 14",
 
393
          "43 14 15 cipher_suite_entry integer 15",
 
394
          "43 15 -1 cipher_suite_entry integer 16",
 
395
          "44 0 1 max_priv_for_cipher_suite integer 0",
 
396
          "44 1 2 max_priv_for_cipher_suite integer 0",
 
397
          "44 2 3 max_priv_for_cipher_suite integer 0",
 
398
          "44 3 4 max_priv_for_cipher_suite integer 0",
 
399
          "44 4 5 max_priv_for_cipher_suite integer 0",
 
400
          "44 5 6 max_priv_for_cipher_suite integer 0",
 
401
          "44 6 7 max_priv_for_cipher_suite integer 0",
 
402
          "44 7 8 max_priv_for_cipher_suite integer 0",
 
403
          "44 8 9 max_priv_for_cipher_suite integer 0",
 
404
          "44 9 10 max_priv_for_cipher_suite integer 0",
 
405
          "44 10 11 max_priv_for_cipher_suite integer 0",
 
406
          "44 11 12 max_priv_for_cipher_suite integer 0",
 
407
          "44 12 13 max_priv_for_cipher_suite integer 0",
 
408
          "44 13 14 max_priv_for_cipher_suite integer 0",
 
409
          "44 14 15 max_priv_for_cipher_suite integer 0",
 
410
          "44 15 -1 max_priv_for_cipher_suite integer 0" );
 
411
 
 
412
    @set_configs = 
 
413
        ( "0 -1 -1 support_auth_oem bool false 1",
 
414
          "1 -1 -1 support_auth_straight bool false 1",
 
415
          "2 -1 -1 support_auth_md5 bool false 1",
 
416
          "3 -1 -1 support_auth_md2 bool false 1",
 
417
          "4 -1 -1 support_auth_none bool false 1",
 
418
          "5 -1 -1 ip_addr_source integer 1",
 
419
          "6 -1 -1 ipv4_ttl integer 2",
 
420
          "7 -1 -1 ipv4_flags integer 3",
 
421
          "8 -1 -1 ipv4_precedence integer 4",
 
422
          "9 -1 -1 ipv4_tos integer 5",
 
423
          "10 0 1 enable_auth_oem bool true",
 
424
          "10 1 2 enable_auth_oem bool true",
 
425
          "10 2 3 enable_auth_oem bool true",
 
426
          "10 3 4 enable_auth_oem bool true",
 
427
          "10 4 -1 enable_auth_oem bool true",
 
428
          "11 0 1 enable_auth_straight bool true",
 
429
          "11 1 2 enable_auth_straight bool true",
 
430
          "11 2 3 enable_auth_straight bool true",
 
431
          "11 3 4 enable_auth_straight bool true",
 
432
          "11 4 -1 enable_auth_straight bool true",
 
433
          "12 0 1 enable_auth_md5 bool true",
 
434
          "12 1 2 enable_auth_md5 bool true",
 
435
          "12 2 3 enable_auth_md5 bool true",
 
436
          "12 3 4 enable_auth_md5 bool true",
 
437
          "12 4 -1 enable_auth_md5 bool true",
 
438
          "13 0 1 enable_auth_md2 bool true",
 
439
          "13 1 2 enable_auth_md2 bool true",
 
440
          "13 2 3 enable_auth_md2 bool true",
 
441
          "13 3 4 enable_auth_md2 bool true",
 
442
          "13 4 -1 enable_auth_md2 bool true",
 
443
          "14 0 1 enable_auth_none bool true",
 
444
          "14 1 2 enable_auth_none bool true",
 
445
          "14 2 3 enable_auth_none bool true",
 
446
          "14 3 4 enable_auth_none bool true",
 
447
          "14 4 -1 enable_auth_none bool true",
 
448
          "15 -1 -1 ip_addr ip 1.2.3.4",
 
449
          "16 -1 -1 mac_addr mac 11:22:33:44:55:bb",
 
450
          "17 -1 -1 subnet_mask ip 5.6.7.8",
 
451
          "18 -1 -1 port_rmcp_primary integer 9",
 
452
          "19 -1 -1 port_rmcp_secondary integer 10",
 
453
          "20 -1 -1 bmc_generated_arps bool true",
 
454
          "21 -1 -1 bmc_generated_garps bool true",
 
455
          "22 -1 -1 garp_interval integer 11",
 
456
          "23 -1 -1 default_gateway_ip_addr ip 12.13.14.15",
 
457
          "24 -1 -1 default_gateway_mac_addr mac cc:16:17:18:19:20",
 
458
          "25 -1 -1 backup_gateway_ip_addr ip 21.22.23.24",
 
459
          "26 -1 -1 backup_gateway_mac_addr mac dd:25:26:27:28:29",
 
460
          "27 -1 -1 community_string data 0x30%0x31%0x32%0x33%0x34%0x35%0x36%0x37%0x38%0x39%0x3a%0x3b%0x3c%0x3d%0x3e%0x3f%0x40%0x41",
 
461
          "28 -1 -1 num_alert_destinations integer 16 1",
 
462
          "29 0 1 alert_ack bool true",
 
463
          "29 1 2 alert_ack bool true",
 
464
          "29 2 3 alert_ack bool true",
 
465
          "29 3 4 alert_ack bool true",
 
466
          "29 4 5 alert_ack bool true",
 
467
          "29 5 6 alert_ack bool true",
 
468
          "29 6 7 alert_ack bool true",
 
469
          "29 7 8 alert_ack bool true",
 
470
          "29 8 9 alert_ack bool true",
 
471
          "29 9 10 alert_ack bool true",
 
472
          "29 10 11 alert_ack bool true",
 
473
          "29 11 12 alert_ack bool true",
 
474
          "29 12 13 alert_ack bool true",
 
475
          "29 13 14 alert_ack bool true",
 
476
          "29 14 15 alert_ack bool true",
 
477
          "29 15 -1 alert_ack bool true",
 
478
          "30 0 1 dest_type integer 1",
 
479
          "30 1 2 dest_type integer 2",
 
480
          "30 2 3 dest_type integer 3",
 
481
          "30 3 4 dest_type integer 4",
 
482
          "30 4 5 dest_type integer 5",
 
483
          "30 5 6 dest_type integer 6",
 
484
          "30 6 7 dest_type integer 7",
 
485
          "30 7 8 dest_type integer 7",
 
486
          "30 8 9 dest_type integer 6",
 
487
          "30 9 10 dest_type integer 5",
 
488
          "30 10 11 dest_type integer 4",
 
489
          "30 11 12 dest_type integer 3",
 
490
          "30 12 13 dest_type integer 2",
 
491
          "30 13 14 dest_type integer 1",
 
492
          "30 14 15 dest_type integer 2",
 
493
          "30 15 -1 dest_type integer 3",
 
494
          "31 0 1 alert_retry_interval integer 1",
 
495
          "31 1 2 alert_retry_interval integer 2",
 
496
          "31 2 3 alert_retry_interval integer 3",
 
497
          "31 3 4 alert_retry_interval integer 4",
 
498
          "31 4 5 alert_retry_interval integer 5",
 
499
          "31 5 6 alert_retry_interval integer 6",
 
500
          "31 6 7 alert_retry_interval integer 7",
 
501
          "31 7 8 alert_retry_interval integer 8",
 
502
          "31 8 9 alert_retry_interval integer 9",
 
503
          "31 9 10 alert_retry_interval integer 10",
 
504
          "31 10 11 alert_retry_interval integer 11",
 
505
          "31 11 12 alert_retry_interval integer 12",
 
506
          "31 12 13 alert_retry_interval integer 13",
 
507
          "31 13 14 alert_retry_interval integer 14",
 
508
          "31 14 15 alert_retry_interval integer 15",
 
509
          "31 15 -1 alert_retry_interval integer 14",
 
510
          "32 0 1 max_alert_retries integer 1",
 
511
          "32 1 2 max_alert_retries integer 2",
 
512
          "32 2 3 max_alert_retries integer 3",
 
513
          "32 3 4 max_alert_retries integer 4",
 
514
          "32 4 5 max_alert_retries integer 5",
 
515
          "32 5 6 max_alert_retries integer 6",
 
516
          "32 6 7 max_alert_retries integer 7",
 
517
          "32 7 8 max_alert_retries integer 6",
 
518
          "32 8 9 max_alert_retries integer 5",
 
519
          "32 9 10 max_alert_retries integer 4",
 
520
          "32 10 11 max_alert_retries integer 3",
 
521
          "32 11 12 max_alert_retries integer 2",
 
522
          "32 12 13 max_alert_retries integer 1",
 
523
          "32 13 14 max_alert_retries integer 2",
 
524
          "32 14 15 max_alert_retries integer 3",
 
525
          "32 15 -1 max_alert_retries integer 4",
 
526
          "33 0 1 dest_format integer 1",
 
527
          "33 1 2 dest_format integer 2",
 
528
          "33 2 3 dest_format integer 3",
 
529
          "33 3 4 dest_format integer 4",
 
530
          "33 4 5 dest_format integer 5",
 
531
          "33 5 6 dest_format integer 6",
 
532
          "33 6 7 dest_format integer 7",
 
533
          "33 7 8 dest_format integer 8",
 
534
          "33 8 9 dest_format integer 9",
 
535
          "33 9 10 dest_format integer 10",
 
536
          "33 10 11 dest_format integer 11",
 
537
          "33 11 12 dest_format integer 12",
 
538
          "33 12 13 dest_format integer 13",
 
539
          "33 13 14 dest_format integer 14",
 
540
          "33 14 15 dest_format integer 15",
 
541
          "33 15 -1 dest_format integer 14",
 
542
          "34 0 1 gw_to_use integer 1",
 
543
          "34 1 2 gw_to_use integer 1",
 
544
          "34 2 3 gw_to_use integer 1",
 
545
          "34 3 4 gw_to_use integer 1",
 
546
          "34 4 5 gw_to_use integer 1",
 
547
          "34 5 6 gw_to_use integer 1",
 
548
          "34 6 7 gw_to_use integer 1",
 
549
          "34 7 8 gw_to_use integer 1",
 
550
          "34 8 9 gw_to_use integer 1",
 
551
          "34 9 10 gw_to_use integer 1",
 
552
          "34 10 11 gw_to_use integer 1",
 
553
          "34 11 12 gw_to_use integer 1",
 
554
          "34 12 13 gw_to_use integer 1",
 
555
          "34 13 14 gw_to_use integer 1",
 
556
          "34 14 15 gw_to_use integer 1",
 
557
          "34 15 -1 gw_to_use integer 1",
 
558
          "35 0 1 dest_ip_addr ip 1.1.1.1",
 
559
          "35 1 2 dest_ip_addr ip 2.2.2.2",
 
560
          "35 2 3 dest_ip_addr ip 3.3.3.3",
 
561
          "35 3 4 dest_ip_addr ip 4.4.4.4",
 
562
          "35 4 5 dest_ip_addr ip 5.5.5.5",
 
563
          "35 5 6 dest_ip_addr ip 6.6.6.6",
 
564
          "35 6 7 dest_ip_addr ip 7.7.7.7",
 
565
          "35 7 8 dest_ip_addr ip 8.8.8.8",
 
566
          "35 8 9 dest_ip_addr ip 9.9.9.9",
 
567
          "35 9 10 dest_ip_addr ip 10.10.10.10",
 
568
          "35 10 11 dest_ip_addr ip 11.11.11.11",
 
569
          "35 11 12 dest_ip_addr ip 12.12.12.12",
 
570
          "35 12 13 dest_ip_addr ip 13.13.13.13",
 
571
          "35 13 14 dest_ip_addr ip 14.14.14.14",
 
572
          "35 14 15 dest_ip_addr ip 15.15.15.15",
 
573
          "35 15 -1 dest_ip_addr ip 16.16.16.16",
 
574
          "36 0 1 dest_mac_addr mac 11:11:11:11:11:11",
 
575
          "36 1 2 dest_mac_addr mac 22:22:22:22:22:22",
 
576
          "36 2 3 dest_mac_addr mac 33:33:33:33:33:33",
 
577
          "36 3 4 dest_mac_addr mac 44:44:44:44:44:44",
 
578
          "36 4 5 dest_mac_addr mac 55:55:55:55:55:55",
 
579
          "36 5 6 dest_mac_addr mac 66:66:66:66:66:66",
 
580
          "36 6 7 dest_mac_addr mac 77:77:77:77:77:77",
 
581
          "36 7 8 dest_mac_addr mac 88:88:88:88:88:88",
 
582
          "36 8 9 dest_mac_addr mac 99:99:99:99:99:99",
 
583
          "36 9 10 dest_mac_addr mac aa:aa:aa:aa:aa:aa",
 
584
          "36 10 11 dest_mac_addr mac bb:bb:bb:bb:bb:bb",
 
585
          "36 11 12 dest_mac_addr mac cc:cc:cc:cc:cc:cc",
 
586
          "36 12 13 dest_mac_addr mac dd:dd:dd:dd:dd:dd",
 
587
          "36 13 14 dest_mac_addr mac ee:ee:ee:ee:ee:ee",
 
588
          "36 14 15 dest_mac_addr mac ff:ff:ff:ff:ff:ff",
 
589
          "36 15 -1 dest_mac_addr mac ee:ee:ee:ee:ee:ee",
 
590
          "37 0 1 dest_vlan_tag_type integer 1",
 
591
          "37 1 2 dest_vlan_tag_type integer 2",
 
592
          "37 2 3 dest_vlan_tag_type integer 3",
 
593
          "37 3 4 dest_vlan_tag_type integer 4",
 
594
          "37 4 5 dest_vlan_tag_type integer 5",
 
595
          "37 5 6 dest_vlan_tag_type integer 6",
 
596
          "37 6 7 dest_vlan_tag_type integer 7",
 
597
          "37 7 8 dest_vlan_tag_type integer 8",
 
598
          "37 8 9 dest_vlan_tag_type integer 9",
 
599
          "37 9 10 dest_vlan_tag_type integer 10",
 
600
          "37 10 11 dest_vlan_tag_type integer 11",
 
601
          "37 11 12 dest_vlan_tag_type integer 12",
 
602
          "37 12 13 dest_vlan_tag_type integer 13",
 
603
          "37 13 14 dest_vlan_tag_type integer 14",
 
604
          "37 14 15 dest_vlan_tag_type integer 15",
 
605
          "37 15 -1 dest_vlan_tag_type integer 14",
 
606
          "38 0 1 dest_vlan_tag integer 1234",
 
607
          "38 1 2 dest_vlan_tag integer 3333",
 
608
          "38 2 3 dest_vlan_tag integer 4353",
 
609
          "38 3 4 dest_vlan_tag integer 46434",
 
610
          "38 4 5 dest_vlan_tag integer 3453",
 
611
          "38 5 6 dest_vlan_tag integer 56455",
 
612
          "38 6 7 dest_vlan_tag integer 3434",
 
613
          "38 7 8 dest_vlan_tag integer 36344",
 
614
          "38 8 9 dest_vlan_tag integer 34755",
 
615
          "38 9 10 dest_vlan_tag integer 2346",
 
616
          "38 10 11 dest_vlan_tag integer 34",
 
617
          "38 11 12 dest_vlan_tag integer 54904",
 
618
          "38 12 13 dest_vlan_tag integer 53094",
 
619
          "38 13 14 dest_vlan_tag integer 59045",
 
620
          "38 14 15 dest_vlan_tag integer 4564",
 
621
          "38 15 -1 dest_vlan_tag integer 49433",
 
622
          "39 -1 -1 vlan_id_enable bool true",
 
623
          "40 -1 -1 vlan_id integer 18",
 
624
          "41 -1 -1 vlan_priority integer 3",
 
625
          "42 -1 -1 num_cipher_suites integer 16 1",
 
626
          "43 0 1 cipher_suite_entry integer 1 1",
 
627
          "43 1 2 cipher_suite_entry integer 2 1",
 
628
          "43 2 3 cipher_suite_entry integer 3 1",
 
629
          "43 3 4 cipher_suite_entry integer 4 1",
 
630
          "43 4 5 cipher_suite_entry integer 5 1",
 
631
          "43 5 6 cipher_suite_entry integer 6 1",
 
632
          "43 6 7 cipher_suite_entry integer 7 1",
 
633
          "43 7 8 cipher_suite_entry integer 8 1",
 
634
          "43 8 9 cipher_suite_entry integer 9 1",
 
635
          "43 9 10 cipher_suite_entry integer 10 1",
 
636
          "43 10 11 cipher_suite_entry integer 11 1",
 
637
          "43 11 12 cipher_suite_entry integer 12 1",
 
638
          "43 12 13 cipher_suite_entry integer 13 1",
 
639
          "43 13 14 cipher_suite_entry integer 14 1",
 
640
          "43 14 15 cipher_suite_entry integer 15 1",
 
641
          "43 15 -1 cipher_suite_entry integer 16 1",
 
642
          "44 0 1 max_priv_for_cipher_suite integer 15",
 
643
          "44 1 2 max_priv_for_cipher_suite integer 14",
 
644
          "44 2 3 max_priv_for_cipher_suite integer 13",
 
645
          "44 3 4 max_priv_for_cipher_suite integer 12",
 
646
          "44 4 5 max_priv_for_cipher_suite integer 11",
 
647
          "44 5 6 max_priv_for_cipher_suite integer 10",
 
648
          "44 6 7 max_priv_for_cipher_suite integer 9",
 
649
          "44 7 8 max_priv_for_cipher_suite integer 8",
 
650
          "44 8 9 max_priv_for_cipher_suite integer 7",
 
651
          "44 9 10 max_priv_for_cipher_suite integer 6",
 
652
          "44 10 11 max_priv_for_cipher_suite integer 5",
 
653
          "44 11 12 max_priv_for_cipher_suite integer 4",
 
654
          "44 12 13 max_priv_for_cipher_suite integer 3",
 
655
          "44 13 14 max_priv_for_cipher_suite integer 2",
 
656
          "44 14 15 max_priv_for_cipher_suite integer 1",
 
657
          "44 15 -1 max_priv_for_cipher_suite integer 2");
 
658
 
 
659
    sub lanparm_set_config_cb {
 
660
        my $self = shift;
 
661
        my $lanparm = shift;
 
662
        my $err = shift;
 
663
 
 
664
        print "Lanparm config set\n";
 
665
 
 
666
        $rv = $lanparm->get_config($self);
 
667
        if ($rv) {
 
668
            main::reg_err("Unable to get lanparm config: $rv\n");
 
669
            $self->close();
 
670
            return;
 
671
        }
 
672
    }
 
673
 
 
674
    sub lanparm_got_config_cb {
 
675
        my $self = shift;
 
676
        my $lanparm = shift;
 
677
        my $err = shift;
 
678
        my $config = shift;
 
679
        my $rv;
 
680
        my $i;
 
681
 
 
682
        if ($$self->{accmode} == 0) {
 
683
            @config = @first_configs;
 
684
            print "Checking first config\n";
 
685
        } else {
 
686
            @config = @set_configs;
 
687
            print "Checking second config\n";
 
688
        }
 
689
 
 
690
        for $i (@config) {
 
691
            my ($parm, $idx, $nidx, $name, $type, $val) = split /\s+/, $i;
 
692
            $val = join(" ", split(/%/, $val));
 
693
            my $vidx = int($idx);
 
694
            my $v = $config->get_val($parm, \$vidx);
 
695
            my ($vname, $vtype, $vval) = split /\s+/, $v, 3;
 
696
            if ($name ne $vname) {
 
697
                main::reg_err("$parm($idx) name mismatch, expected $name, got $vname");
 
698
            }
 
699
            if ($type ne $vtype) {
 
700
                main::reg_err("$parm($idx) type mismatch, expected $type, got $vtype");
 
701
            }
 
702
            if ($val ne $vval) {
 
703
                main::reg_err("$parm($idx) val mismatch, expected $val, got $vval");
 
704
            }
 
705
            if ($nidx != $vidx) {
 
706
                main::reg_err("$parm($idx) nidx mismatch, expected $nidx, got $vidx");
 
707
            }
 
708
        }
 
709
 
 
710
        if ($$self->{accmode} == 0) {
 
711
            for $i (@set_configs) {
 
712
                my ($parm, $idx, $nidx, $name, $type, $val, $ro) = split /\s+/, $i;
 
713
                next if ($ro); # skip read-only vals
 
714
                $val = join(" ", split(/%/, $val));
 
715
                $rv = $config->set_val($parm, $idx, $type, $val);
 
716
                if ($rv) {
 
717
                    main::reg_err("error $rv setting parm $parm($idx) $type $val");
 
718
                }
 
719
            }
 
720
            $$self->{accmode} = 1;
 
721
 
 
722
            $rv = $lanparm->set_config($config, $self);
 
723
            if ($rv) {
 
724
                main::reg_err("Unable to set lanparm config: $rv\n");
 
725
                $self->close();
 
726
                return;
 
727
            }
 
728
        } else {
 
729
            $rv = $lanparm->get_parm($OpenIPMI::LANPARM_AUTH_TYPE_ENABLES,
 
730
                                     0, 0, $self);
 
731
            if ($rv) {
 
732
                main::reg_err("Unable to request lan parm(1): $rv\n");
 
733
                $self->close();
 
734
                return;
 
735
            }
 
736
        }
 
737
    }
 
738
 
 
739
    sub mc_update_cb {
 
740
        my $self = shift;
 
741
        my $op = shift;
 
742
        my $domain = shift;
 
743
        my $mc = shift;
 
744
        my $rv;
 
745
        my $lanparm;
 
746
 
 
747
        if ($op eq "added") {
 
748
            print $op, " MC ", $mc->get_name(), "\n";
 
749
            $lanparm = $mc->get_lanparm(7);
 
750
            if (! defined($lanparm)) {
 
751
                main::reg_err("Unable to get lanparm\n");
 
752
                $self->close();
 
753
                return;
 
754
            }
 
755
            $rv = $lanparm->get_config($self);
 
756
            if ($rv) {
 
757
                main::reg_err("Unable to get lanparm config: $rv\n");
 
758
                $self->close();
 
759
                return;
 
760
            }
 
761
        }
 
762
    }
 
763
 
 
764
    sub conn_change_cb {
 
765
        my $self = shift;
 
766
        my $domain = shift;
 
767
        my $err = shift;
 
768
        my $conn_num = shift;
 
769
        my $port_num = shift;
 
770
        my $still_connected = shift;
 
771
        my $rv;
 
772
 
 
773
        if ($err) {
 
774
            main::reg_err("Error starting up IPMI connection: $err");
 
775
            $self->close();
 
776
            return;
 
777
        }
 
778
 
 
779
        print "Connection up!\n";
 
780
        $rv = $domain->add_mc_update_handler($self);
 
781
        if ($rv) {
 
782
            main::reg_err("Unable to add mc updated handler: $rv\n");
 
783
            $self->close();
 
784
            return;
 
785
        }
 
786
    }
 
787
 
 
788
    sub domain_close_done_cb {
 
789
        my $self = shift;
 
790
 
 
791
        $$self->{keepon} = 0;
 
792
    }
 
793
 
 
794
    sub close {
 
795
        my $self = shift;
 
796
        my $domain = shift;
 
797
 
 
798
        if (defined $$self->{domain_id}) {
 
799
            my $v = CloseDomain::new($self);
 
800
            $$self->{domain_id}->to_domain($v);
 
801
        } else {
 
802
            $$self->{keepon} = 0;
 
803
        }
 
804
    }
 
805
 
 
806
}
 
807
 
 
808
package main;
 
809
 
 
810
$lanserv = Lanserv->new();
 
811
if (! $lanserv) {
 
812
    main::reg_err("Unable to start lanserv");
 
813
    exit(1);
 
814
}
 
815
 
 
816
# Add a BMC
 
817
$lanserv->cmd("mc_add 20 0 1 23 9 8 1f 1291 f02");
 
818
$lanserv->cmd("mc_setbmc 20");
 
819
$lanserv->cmd("mc_enable 20");
 
820
 
 
821
sleep 1;
 
822
 
 
823
#OpenIPMI::enable_debug_msg();
 
824
OpenIPMI::enable_debug_malloc();
 
825
 
 
826
# Now start OpenIPMI
 
827
OpenIPMI::init();
 
828
 
 
829
$h = Handlers::new();
 
830
 
 
831
OpenIPMI::set_log_handler($h);
 
832
 
 
833
@args = ( "-noseteventrcvr",
 
834
          "lan", "-p", "9000", "-U", "minyard", "-P", "test", "localhost");
 
835
$$h->{domain_id} = OpenIPMI::open_domain2("test", \@args, $h, \undef);
 
836
if (! $$h->{domain_id}) {
 
837
    $lanserv->close();
 
838
    print "IPMI open failed\n";
 
839
    exit 1;
 
840
}
 
841
 
 
842
while ($$h->{keepon}) {
 
843
    OpenIPMI::wait_io(1000);
 
844
}
 
845
 
 
846
$lanserv->close();
 
847
OpenIPMI::shutdown_everything();
 
848
exit main::get_errcount();