");
vCapture($IF);
$test_result = 'PASS';
#### subtest No.1
$subtest_no = 1;
$subtest_title[$subtest_no] = "option bit 000: option data is immutable";
vLogHTML("Subtest No.$subtest_no: $subtest_title[$subtest_no]
");
$ret = ping_host1_to_nut_normal(echo_request_from_host1_hbhopt_ah);
if ($ret eq 'PASS') {
$ret = ping_host1_to_nut_ignored(echo_request_from_host1_ah_dm_hbhh_000optdata);
}
vLogHTML("Subtest No.$subtest_no $ret
");
$subtest_results[$subtest_no] = $ret;
#### subtest No.2
$subtest_no = 2;
$subtest_title[$subtest_no] = "option bit 001: option data is mutable";
vLogHTML("Subtest No.$subtest_no: $subtest_title[$subtest_no]
");
$ret = ping_host1_to_nut_normal(echo_request_from_host1_ah_dm_hbhh_001optdata);
vLogHTML("Subtest No.$subtest_no $ret
");
$subtest_results[$subtest_no] = $ret;
### resluts table
vLogHTML("Subtest Results
");
for($i=1; $i < @subtest_title; $i++) {
vLogHTML("|$i| $subtest_title[$i] | $subtest_results[$i] |
");
$test_results = 'FAIL' if $subtest_results[$i] eq 'FAIL';
}
if ($test_results eq 'FAIL') {
ipsecExitFail();
}else{
ipsecExitPass();
}
#----------------------------------------------------------------------
sub ping_host1_to_nut_normal(;$) {
my($echo_request) = @_;
my($stat, %ret);
$echo_request = 'echo_request_from_host1_ah' unless defined $echo_request;
($stat, %ret) = ipsecPing2NUT($IF, $echo_request, 'echo_reply_to_host1');
if ($stat ne 'GOT_REPLY') {
vLogHTML("TN received no echo reply from NUT to HOST1.
");
return 'FAIL';
}
vLogHTML("TN received echo reply from NUT to HOST1.
");
return 'PASS';
}
sub ping_host1_to_nut_ignored($) {
my($echo_request) = @_;
my($stat, %ret);
($stat, %ret) = ipsecPing2NUT($IF, $echo_request, 'echo_reply_to_host1');
if ($stat ne 'NO_REPLY') {
vLogHTML("TN received something reply packet from NUT to HOST1.
");
vLogHTML("TN did not ignore the modified echo request packet.
");
return 'FAIL';
}
vLogHTML("TN received no echo reply from NUT to HOST1.
");
vLogHTML("TN ignored the modified echo request packet.
");
return 'PASS';
}
######################################################################
__END__
=head1 NAME
HTR_A_In_DM_HBHH_optdata - Host Transport Mode AH Inbound, Detect modification of HBHOpt header option data with AH
=head1 TARGET
Host
=head1 SYNOPSIS
=begin html
HTR_A_In_DM_HBHH_optdata.seq [-tooloption ...] -pkt HTR_A_DM_HBHH_optdata.def
-tooloption : v6eval tool option
See also HTR_A_common.def and HTR_common.def
=end html
=head1 INITIALIZATION
=begin html
For details of Network Topology, see 00README
Set NUT's SAD and SPD as following:
NET5 NET3
HOST1_NET5 -- Router -- NUT
-----transport----->
Security Association Database (SAD)
| source address |
HOST1_NET5 |
| destination address |
NUT_NET3 |
| SPI |
0x1000 |
| mode |
transport |
| protocol |
AH |
| AH algorithm |
HMAC-MD5 |
| AH algorithm key |
TAHITEST89ABCDEF |
Security Policy Database (SPD)
| source address |
HOST1_NET5 |
| destination address |
NUT_NET3 |
| upper spec |
any |
| direction |
in |
| protocol |
AH |
| mode |
transport |
=end html
=head1 TEST PROCEDURE
=begin html
Tester Target
| |
Subtest No.1 "option bit 000: option data is immutable"
| |
|-------------------------->|
| ICMP Echo Request |
| with [HBHH][AH] |
| |
|<--------------------------|
| ICMP Echo Reply |
| Judgement #1 |
| |
|-------------------------->|
| ICMP Echo Request |
| with [HBHH][AH] |
| (option data of HBHH is modified)
| |
| (<----------------------) |
| No ICMP Echo Reply |
| Judgement #2 |
v v
Subtest No.2 "option bit 001: option data is mutable";
| |
|-------------------------->|
| ICMP Echo Request |
| with [HBHH][AH] |
| (option data of HBHH is modified)
| |
|<--------------------------|
| ICMP Echo Reply |
| Judgement #3 |
| |
v v
ICMP Echo Request with [HBHH][AH]
| IP Header |
Source Address |
HOST1_NET5 |
|
Destination Address |
NUT_NET3 |
| HopByHop Options Header |
Type |
0x02 |
|
Data Length |
4 |
|
Data |
0x0f0f0000 |
| AH |
SPI |
0x1000 |
|
Sequence Number |
1 |
|
Algorithm |
HMAC-MD5 |
|
Key |
TAHITEST89ABCDEF |
| ICMP |
Type |
128 (Echo Request) |
ICMP Echo Reply
| IP Header |
Source Address |
NUT_NET3 |
|
Destination Address |
HOST1_NET5 |
| ICMP |
Type |
129 (Echo Reply) |
ICMP Echo Request with [HBHH][AH] (option data of HBHH is modified)
| IP Header |
Source Address |
HOST1_NET5 |
|
Destination Address |
NUT_NET3 |
| HopByHop Options Header |
Type |
0x02 |
|
Data Length |
4 |
|
Data |
0x00000000 (0x0f0f0000 is original) |
| AH |
SPI |
0x1000 |
|
Sequence Number |
1 |
|
Algorithm |
HMAC-MD5 |
|
Key |
TAHITEST89ABCDEF |
| ICMP |
Type |
128 (Echo Request) |
ICMP Echo Request with [HBHH][AH] (option data of HBHH is modified)
| IP Header |
Source Address |
HOST1_NET5 |
|
Destination Address |
NUT_NET3 |
| HopByHop Options Header |
Type |
0x22 |
|
Data Length |
4 |
|
Data |
0x1f1f0000 (0x0f0f0000 is original) |
| AH |
SPI |
0x1000 |
|
Sequence Number |
1 |
|
Algorithm |
HMAC-MD5 |
|
Key |
TAHITEST89ABCDEF |
| ICMP |
Type |
128 (Echo Request) |
=end html
=head1 JUDGMENT
Judgement #1:
Receive ICMP Echo Reply (MUST)
Judgement #2:
Receive nothing (MUST)
Judgement #3:
Receive ICMP Echo Reply (MUST)
=head1 SEE ALSO
perldoc V6evalTool
=begin html
IPSEC.html IPsec Test Common Utility
=cut