#!/usr/bin/tclsh
+# core packet generator for vinegar-ip
+#
+# This file is part of vinegar-ip, tools for IP transparency testing.
+# vinegar-ip is Copyright (C) 2002 Ian Jackson
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# $Id$
proc debug {level str} {
global debug_level
return $ah
}
+proc udp-rport {} {
+ get-for udp
+ get port enum-rand 0 0xffff
+ return $port
+}
define ip-proto 17 udp {mtu} {
# RFC768
} else {
set def_port x
}
- if {"$style" != "servers"} {
- get port enum-rand 0 0xffff
- set rand_port $port
- }
switch -exact $style {
- random { set source_port $rand_port; set dest_port $rand_port }
- request { set source_port $rand_port; set dest_port $def_port }
- reply { set source_port $def_port; set dest_port $rand_port }
- servers { set source_port $def_port; set dest_port $def_port }
+ random { set source_port [udp-rport]; set dest_port [udp-rport] }
+ request { set source_port [udp-rport]; set dest_port $def_port }
+ reply { set source_port $def_port; set dest_port [udp-rport] }
+ servers { set source_port $def_port; set dest_port $def_port }
}
if {"$style" != "random"} {
get urg hex 0 0xffff
set options {}
- get optmode choice-mult badopt 0.3 opt 0.6 noopt
+ get optmode choice-mult badopt 0.3 opt 0.3 noopt
switch -exact $optmode {
noopt { }
badopt {
get options rand 1 60 1
}
opt {
- while {[choice-prob tcp-opts-more 0.4]} {
+ set nooi 1
+ while {$nooi || [choice-prob tcp-opts-more 0.4]} {
+ set nooi 0
get opt enum 1 255 0.5
if {$opt == 1} {
assemble option {