trema 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -1
- data/Doxyfile +1 -1
- data/Gemfile +18 -6
- data/README.md +112 -5
- data/Rakefile +3 -1
- data/Rantfile +88 -1
- data/bin/trema +248 -0
- data/bin/trema-config +59 -0
- data/cruise.rb +1 -1
- data/features/example.dumper.feature +45 -65
- data/features/example.hello_trema.feature +21 -0
- data/features/example.learning_switch.feature +26 -28
- data/features/example.list_switches.feature +19 -33
- data/features/example.message.echo_reply.feature +10 -10
- data/features/example.message.echo_request.feature +2 -2
- data/features/example.message.features_request.feature +6 -5
- data/features/example.message.hello.feature +47 -13
- data/features/example.message.set_config.feature +4 -4
- data/features/example.message.vendor-action.feature +23 -0
- data/features/example.multi_learning_switch.feature +14 -42
- data/features/example.packet_in.feature +31 -0
- data/features/example.packetin_filter_config.feature +11 -7
- data/features/example.patch_panel.feature +29 -0
- data/features/example.repeater_hub.feature +43 -40
- data/features/example.switch_info.feature +51 -0
- data/features/example.switch_monitor.feature +24 -42
- data/features/packetin_filter.feature +28 -22
- data/features/step_definitions/misc_steps.rb +19 -8
- data/features/step_definitions/send_packets_steps.rb +1 -10
- data/features/step_definitions/stats_steps.rb +4 -4
- data/features/support/env.rb +2 -1
- data/features/support/hooks.rb +35 -2
- data/features/switch_manager.feature +18 -12
- data/features/trema-config.feature +26 -39
- data/features/trema.dump_flows.feature +26 -12
- data/features/trema.help.feature +26 -0
- data/features/trema.kill.feature +39 -41
- data/features/trema.killall.feature +23 -23
- data/features/trema.reset_stats.feature +50 -10
- data/features/trema.run.feature +28 -39
- data/features/trema.send_packets.feature +29 -40
- data/features/trema.show_stats.feature +30 -33
- data/features/trema.up.feature +33 -0
- data/features/trema.version.feature +9 -0
- data/ruby/extconf.rb +7 -0
- data/ruby/trema/aggregate-stats-reply.rb +3 -3
- data/ruby/trema/app.rb +5 -1
- data/ruby/trema/barrier-request.c +55 -30
- data/ruby/trema/cli.rb +8 -8
- data/ruby/trema/command.rb +1 -3
- data/ruby/trema/command/dump_flows.rb +5 -24
- data/ruby/trema/command/kill.rb +31 -36
- data/ruby/trema/command/killall.rb +1 -19
- data/{features/step_definitions/kill_steps.rb → ruby/trema/command/netns.rb} +13 -5
- data/ruby/trema/command/reset_stats.rb +3 -23
- data/ruby/trema/command/ruby.rb +2 -19
- data/ruby/trema/command/run.rb +6 -27
- data/ruby/trema/command/send_packets.rb +6 -90
- data/ruby/trema/command/show_stats.rb +21 -40
- data/ruby/trema/command/up.rb +5 -26
- data/ruby/trema/command/version.rb +1 -5
- data/ruby/trema/controller.c +14 -16
- data/ruby/trema/custom-switch.rb +56 -0
- data/ruby/trema/desc-stats-reply.rb +5 -5
- data/ruby/trema/dsl/configuration.rb +4 -0
- data/{features/step_definitions/up_steps.rb → ruby/trema/dsl/custom-switch.rb} +18 -4
- data/ruby/trema/dsl/netns.rb +78 -0
- data/ruby/trema/dsl/parser.rb +2 -0
- data/ruby/trema/dsl/runner.rb +8 -0
- data/ruby/trema/dsl/syntax.rb +18 -0
- data/ruby/trema/echo-reply.h +2 -2
- data/ruby/trema/echo-request.c +3 -5
- data/ruby/trema/enqueue.rb +2 -2
- data/ruby/trema/error.c +3 -3
- data/ruby/trema/executables.rb +26 -2
- data/ruby/trema/features-request.c +3 -5
- data/ruby/trema/flow-removed.c +6 -6
- data/ruby/trema/flow-stats-reply.rb +6 -8
- data/ruby/trema/flow.rb +12 -1
- data/ruby/trema/get-config-request.c +55 -28
- data/ruby/trema/hello.c +3 -5
- data/ruby/trema/host.rb +8 -0
- data/ruby/trema/list-switches-reply.c +1 -1
- data/ruby/trema/mac.rb +1 -1
- data/ruby/trema/match.c +15 -14
- data/ruby/trema/monkey-patch/module/deprecation.rb +0 -2
- data/ruby/trema/netns.rb +127 -0
- data/ruby/trema/ordered-hash.rb +5 -4
- data/ruby/trema/packet-in.c +136 -113
- data/ruby/trema/packet-queue.rb +9 -9
- data/ruby/trema/packetin-filter.rb +1 -1
- data/ruby/trema/phost.rb +16 -7
- data/ruby/trema/port-mod.c +6 -5
- data/ruby/trema/port-stats-reply.rb +2 -2
- data/ruby/trema/process.rb +29 -0
- data/ruby/trema/queue-stats-reply.rb +2 -4
- data/ruby/trema/send-out-port.rb +5 -3
- data/ruby/trema/set-eth-addr.rb +4 -0
- data/ruby/trema/set-ip-addr.rb +4 -2
- data/ruby/trema/set-ip-dst-addr.rb +2 -1
- data/ruby/trema/set-ip-src-addr.rb +2 -1
- data/ruby/trema/set-ip-tos.rb +3 -2
- data/ruby/trema/set-transport-port.rb +3 -2
- data/ruby/trema/set-vlan-priority.rb +3 -2
- data/ruby/trema/set-vlan-vid.rb +5 -4
- data/ruby/trema/shell/reset_stats.rb +2 -1
- data/ruby/trema/shell/run.rb +1 -1
- data/ruby/trema/shell/send_packets.rb +1 -1
- data/ruby/trema/shell/show_stats.rb +1 -1
- data/ruby/trema/stats-helper.rb +3 -3
- data/ruby/trema/stats-reply.c +26 -17
- data/ruby/trema/stats-request.c +39 -41
- data/ruby/trema/switch-daemon.rb +36 -31
- data/ruby/trema/switch.c +1 -1
- data/ruby/trema/table-stats-reply.rb +1 -1
- data/ruby/trema/timers.rb +13 -13
- data/ruby/trema/trema.c +3 -3
- data/ruby/trema/tremashark.rb +9 -2
- data/ruby/trema/util.rb +39 -15
- data/ruby/trema/vendor-action.rb +8 -3
- data/ruby/trema/vendor-stats-reply.rb +4 -6
- data/ruby/trema/vendor.c +1 -1
- data/ruby/trema/version.rb +1 -1
- data/spec/trema/barrier-request_spec.rb +47 -37
- data/spec/trema/controller_spec.rb +1 -0
- data/spec/trema/dsl/runner_spec.rb +8 -3
- data/spec/trema/dsl/vhost_spec.rb +8 -8
- data/spec/trema/echo-request_spec.rb +1 -0
- data/spec/trema/features-request_spec.rb +1 -0
- data/spec/trema/flow-removed_spec.rb +9 -9
- data/spec/trema/get-config-request_spec.rb +51 -39
- data/spec/trema/match_spec.rb +1 -1
- data/spec/trema/openflow-error_spec.rb +11 -11
- data/spec/trema/packet-out_spec.rb +5 -5
- data/spec/trema/queue-get-config-reply_spec.rb +1 -1
- data/spec/trema/queue-get-config-request_spec.rb +1 -1
- data/spec/trema/set-eth-dst-addr_spec.rb +1 -1
- data/spec/trema/set-eth-src-addr_spec.rb +1 -1
- data/spec/trema/set-ip-dst-addr_spec.rb +1 -0
- data/spec/trema/set-ip-src-addr_spec.rb +1 -0
- data/spec/trema/set-ip-tos_spec.rb +1 -0
- data/spec/trema/set-transport-dst-port_spec.rb +1 -0
- data/spec/trema/set-transport-src-port_spec.rb +1 -0
- data/spec/trema/set-vlan-priority_spec.rb +1 -0
- data/spec/trema/set-vlan-vid_spec.rb +2 -1
- data/spec/trema/stats-reply_spec.rb +38 -36
- data/spec/trema/stats-request_spec.rb +6 -6
- data/spec/trema/strip-vlan-header_spec.rb +1 -0
- data/spec/trema/util_spec.rb +3 -2
- data/spec/trema/vendor-action_spec.rb +9 -8
- data/src/examples/dumper/dumper.c +8 -6
- data/src/examples/dumper/dumper.rb +1 -1
- data/{features/step_definitions/killall_steps.rb → src/examples/hello_trema/hello-trema.rb} +6 -5
- data/src/examples/hello_trema/hello_trema.c +4 -4
- data/src/examples/learning_switch/learning_switch.c +1 -1
- data/src/examples/list_switches/list_switches.c +2 -2
- data/src/examples/match_compare/match-compare.rb +2 -2
- data/src/examples/multi_learning_switch/multi-learning-switch.rb +1 -1
- data/src/examples/multi_learning_switch/multi_learning_switch.c +3 -3
- data/src/examples/openflow_message/README +1 -1
- data/src/examples/openflow_message/echo-request.rb +1 -1
- data/src/examples/openflow_message/features_request.c +21 -21
- data/src/examples/openflow_message/hello.c +1 -3
- data/src/examples/openflow_message/hello.rb +9 -24
- data/src/examples/{hello_trema/hello_trema.rb → openflow_message/vendor-action.rb} +17 -7
- data/src/examples/openflow_message/vendor_action.c +105 -0
- data/src/examples/openflow_switch/hello_switch.c +81 -0
- data/src/examples/packet_in/packet-in.rb +9 -13
- data/src/examples/packetin_filter_config/packetin_filter_config.c +2 -2
- data/src/examples/patch_panel/network.conf +14 -0
- data/src/examples/patch_panel/patch-panel.conf +1 -0
- data/{features/step_definitions/show_stats_steps.rb → src/examples/patch_panel/patch-panel.rb} +29 -13
- data/src/examples/switch_info/{switch_info.rb → switch-info.rb} +2 -2
- data/src/examples/switch_info/switch_info.c +4 -4
- data/src/examples/switch_monitor/switch_monitor.c +3 -3
- data/src/examples/traffic_monitor/counter.c +9 -9
- data/src/examples/traffic_monitor/fdb.c +9 -9
- data/src/lib/arp.h +1 -1
- data/src/lib/buffer.c +4 -3
- data/src/lib/byteorder.c +31 -5
- data/src/lib/byteorder.h +2 -2
- data/src/lib/chibach.c +8 -6
- data/src/lib/daemon.c +29 -3
- data/src/lib/doubly_linked_list.c +6 -1
- data/src/lib/ether.c +1 -1
- data/src/lib/ether.h +1 -1
- data/src/lib/event_handler.c +3 -3
- data/src/lib/hash_table.c +1 -1
- data/src/lib/linked_list.c +50 -2
- data/src/lib/linked_list.h +2 -2
- data/src/lib/log.c +122 -22
- data/src/lib/log.h +13 -9
- data/src/lib/management_interface.c +361 -0
- data/src/lib/management_interface.h +42 -0
- data/src/lib/management_service_interface.c +104 -0
- data/src/lib/management_service_interface.h +136 -0
- data/src/lib/match_table.c +5 -5
- data/src/lib/message_queue.c +5 -3
- data/src/lib/message_queue.h +1 -1
- data/src/lib/messenger.c +73 -39
- data/src/lib/messenger.h +3 -2
- data/src/lib/openflow_application_interface.c +17 -17
- data/src/lib/openflow_message.c +175 -23
- data/src/lib/openflow_message.h +2 -1
- data/src/lib/openflow_switch_interface.c +12 -12
- data/src/lib/packet_parser.c +11 -32
- data/src/lib/packetin_filter_interface.c +5 -5
- data/src/lib/persistent_storage.c +7 -7
- data/src/lib/secure_channel.c +6 -6
- data/src/lib/secure_channel.h +1 -1
- data/src/lib/stat.c +54 -17
- data/src/lib/stat.h +9 -0
- data/src/lib/timer.c +11 -10
- data/src/lib/trema.c +38 -9
- data/src/lib/trema.h +1 -0
- data/src/lib/trema_private.h +6 -0
- data/src/lib/trema_wrapper.c +4 -4
- data/src/lib/trema_wrapper.h +10 -10
- data/src/lib/utility.c +6 -6
- data/src/management/application.c +224 -0
- data/src/management/echo.c +185 -0
- data/src/management/set_logging_level.c +153 -0
- data/src/management/show_stats.c +150 -0
- data/src/management/trema_manager +184 -0
- data/src/packetin_filter/packetin_filter.c +31 -29
- data/src/switch_manager/cookie_table.c +7 -7
- data/src/switch_manager/dpid_table.c +3 -3
- data/src/switch_manager/dpid_table.h +0 -1
- data/src/switch_manager/management_interface.h +0 -1
- data/src/switch_manager/ofpmsg_recv.c +3 -3
- data/src/switch_manager/ofpmsg_recv.h +0 -1
- data/src/switch_manager/ofpmsg_send.c +2 -2
- data/src/switch_manager/ofpmsg_send.h +0 -1
- data/src/switch_manager/secure_channel_listener.c +2 -2
- data/src/switch_manager/secure_channel_receiver.c +2 -2
- data/src/switch_manager/secure_channel_receiver.h +0 -1
- data/src/switch_manager/secure_channel_sender.c +8 -1
- data/src/switch_manager/service_interface.c +5 -4
- data/src/switch_manager/switch.c +79 -53
- data/src/switch_manager/switch_manager.c +24 -22
- data/src/switch_manager/xid_table.c +6 -6
- data/src/switch_manager/xid_table.h +0 -1
- data/src/tremashark/README +4 -3
- data/src/tremashark/packet_capture.c +11 -9
- data/src/tremashark/pcap_queue.c +2 -2
- data/src/tremashark/pcap_queue.h +2 -2
- data/src/tremashark/plugin/packet-trema/Makefile +1 -1
- data/src/tremashark/plugin/packet-trema/Makefile.common +1 -1
- data/src/tremashark/plugin/packet-trema/packet-trema.c +50 -37
- data/src/tremashark/queue.c +5 -4
- data/src/tremashark/queue.h +1 -1
- data/src/tremashark/stdin_relay.c +10 -8
- data/src/tremashark/syslog_relay.c +14 -12
- data/src/tremashark/tremashark.c +15 -18
- data/trema +2 -96
- data/trema-config +2 -52
- data/trema.gemspec +12 -1
- data/unittests/cmockery_trema.h +14 -13
- data/unittests/lib/buffer_test.c +1 -1
- data/unittests/lib/byteorder_test.c +108 -25
- data/unittests/lib/daemon_test.c +141 -5
- data/unittests/lib/doubly_linked_list_test.c +5 -1
- data/unittests/lib/ether_test.c +4 -4
- data/unittests/lib/hash_table_test.c +5 -3
- data/unittests/lib/linked_list_test.c +82 -4
- data/unittests/lib/log_test.c +96 -5
- data/unittests/lib/management_interface_test.c +240 -0
- data/unittests/lib/management_service_interface_test.c +319 -0
- data/unittests/lib/message_queue_test.c +6 -2
- data/unittests/lib/messenger_test.c +167 -2
- data/unittests/lib/openflow_application_interface_test.c +16 -22
- data/unittests/lib/openflow_message_test.c +721 -24
- data/unittests/lib/packet_info_test.c +2 -2
- data/unittests/lib/packet_parser_test.c +15 -16
- data/unittests/lib/packetin_filter_interface_test.c +6 -6
- data/unittests/lib/persistent_storage_test.c +11 -11
- data/unittests/lib/stat_test.c +151 -7
- data/unittests/lib/timer_test.c +1 -1
- data/unittests/lib/trema_private_test.c +2 -2
- data/unittests/lib/trema_test.c +40 -12
- data/unittests/lib/utility_test.c +3 -3
- data/unittests/lib/wrapper_test.c +3 -3
- data/unittests/packetin_filter/packetin_filter_test.c +12 -11
- data/unittests/switch_manager/switch_manager_test.c +29 -22
- metadata +99 -20
- data/features/step_definitions/log_steps.rb +0 -90
- data/features/step_definitions/run_steps.rb +0 -91
- data/features/trema.feature +0 -27
- data/features/tutorial.hello_trema.feature +0 -27
- data/features/tutorial.packet_in.feature +0 -47
- data/features/tutorial.switch_info.feature +0 -55
- data/ruby/trema/command/usage.rb +0 -63
data/src/tremashark/queue.h
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* stdin_relay: An application that relays text string from stdin to tremashark
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Author: Yasunobu Chiba
|
|
5
5
|
*
|
|
6
6
|
* Copyright (C) 2008-2012 NEC Corporation
|
|
@@ -155,10 +155,12 @@ usage( void ) {
|
|
|
155
155
|
printf(
|
|
156
156
|
"Usage: stdin_relay [OPTION]...\n"
|
|
157
157
|
"\n"
|
|
158
|
-
" -s DUMP_SERVICE_NAME
|
|
159
|
-
" -n, --name=SERVICE_NAME
|
|
160
|
-
" -l, --logging_level=LEVEL
|
|
161
|
-
" -
|
|
158
|
+
" -s DUMP_SERVICE_NAME dump service name\n"
|
|
159
|
+
" -n, --name=SERVICE_NAME service name\n"
|
|
160
|
+
" -l, --logging_level=LEVEL set logging level\n"
|
|
161
|
+
" -g, --syslog output log messages to syslog\n"
|
|
162
|
+
" -f, --logging_facility=FACILITY set syslog facility\n"
|
|
163
|
+
" -h, --help display this help and exit\n"
|
|
162
164
|
);
|
|
163
165
|
}
|
|
164
166
|
|
|
@@ -174,14 +176,14 @@ static void
|
|
|
174
176
|
parse_options( int *argc, char **argv[] ) {
|
|
175
177
|
int opt;
|
|
176
178
|
|
|
177
|
-
while( 1 ) {
|
|
179
|
+
while ( 1 ) {
|
|
178
180
|
opt = getopt( *argc, *argv, "s:" );
|
|
179
181
|
|
|
180
|
-
if( opt < 0 ){
|
|
182
|
+
if ( opt < 0 ) {
|
|
181
183
|
break;
|
|
182
184
|
}
|
|
183
185
|
|
|
184
|
-
switch ( opt ){
|
|
186
|
+
switch ( opt ) {
|
|
185
187
|
case 's':
|
|
186
188
|
if ( optarg && dump_service_name == NULL ) {
|
|
187
189
|
dump_service_name = xstrdup( optarg );
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* syslog_relay: An application that relays syslog messages to tremashark
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Author: Yasunobu Chiba
|
|
5
5
|
*
|
|
6
6
|
* Copyright (C) 2008-2012 NEC Corporation
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
#include <getopt.h>
|
|
25
25
|
#include <inttypes.h>
|
|
26
26
|
#include <string.h>
|
|
27
|
-
#include <sys/types.h>
|
|
28
27
|
#include <sys/socket.h>
|
|
28
|
+
#include <sys/types.h>
|
|
29
29
|
#include <unistd.h>
|
|
30
30
|
#include "trema.h"
|
|
31
31
|
|
|
@@ -112,12 +112,14 @@ usage( void ) {
|
|
|
112
112
|
printf(
|
|
113
113
|
"Usage: syslog_relay [OPTION]...\n"
|
|
114
114
|
"\n"
|
|
115
|
-
" -p LISTEN_PORT
|
|
116
|
-
" -s DUMP_SERVICE_NAME
|
|
117
|
-
" -n, --name=SERVICE_NAME
|
|
118
|
-
" -d, --daemonize
|
|
119
|
-
" -l, --logging_level=LEVEL
|
|
120
|
-
" -
|
|
115
|
+
" -p LISTEN_PORT listen port for receiving syslog messages\n"
|
|
116
|
+
" -s DUMP_SERVICE_NAME dump service name\n"
|
|
117
|
+
" -n, --name=SERVICE_NAME service name\n"
|
|
118
|
+
" -d, --daemonize run in the background\n"
|
|
119
|
+
" -l, --logging_level=LEVEL set logging level\n"
|
|
120
|
+
" -g, --syslog output log messages to syslog\n"
|
|
121
|
+
" -f, --logging_facility=FACILITY set syslog facility\n"
|
|
122
|
+
" -h, --help display this help and exit\n"
|
|
121
123
|
);
|
|
122
124
|
}
|
|
123
125
|
|
|
@@ -133,14 +135,14 @@ static void
|
|
|
133
135
|
parse_options( int *argc, char **argv[] ) {
|
|
134
136
|
int opt;
|
|
135
137
|
|
|
136
|
-
while( 1 ) {
|
|
138
|
+
while ( 1 ) {
|
|
137
139
|
opt = getopt( *argc, *argv, "p:s:" );
|
|
138
140
|
|
|
139
|
-
if( opt < 0 ){
|
|
141
|
+
if ( opt < 0 ) {
|
|
140
142
|
break;
|
|
141
143
|
}
|
|
142
144
|
|
|
143
|
-
switch ( opt ){
|
|
145
|
+
switch ( opt ) {
|
|
144
146
|
case 'p':
|
|
145
147
|
if ( ( optarg != NULL ) && ( atoi( optarg ) <= UINT16_MAX ) && ( atoi ( optarg ) >= 0 ) ) {
|
|
146
148
|
listen_port = ( uint16_t ) atoi( optarg );
|
|
@@ -178,7 +180,7 @@ init_syslog_relay( int *argc, char **argv[] ) {
|
|
|
178
180
|
close( syslog_fd );
|
|
179
181
|
syslog_fd = -1;
|
|
180
182
|
}
|
|
181
|
-
|
|
183
|
+
|
|
182
184
|
syslog_fd = socket( PF_INET, SOCK_DGRAM, 0 );
|
|
183
185
|
if ( syslog_fd < 0 ) {
|
|
184
186
|
error( "Failed to create socket ( errno = %s [%d] ).", strerror( errno ), errno );
|
data/src/tremashark/tremashark.c
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* tremashark: A bridge for printing various events on Wireshark
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Author: Yasunobu Chiba, Yasunori Nakazawa
|
|
5
5
|
*
|
|
6
6
|
* Copyright (C) 2008-2012 NEC Corporation
|
|
@@ -97,7 +97,7 @@ write_to_file( buffer *packet ) {
|
|
|
97
97
|
if ( err == EAGAIN || err == EWOULDBLOCK ) {
|
|
98
98
|
return WRITE_BUSY;
|
|
99
99
|
}
|
|
100
|
-
error( "write error ( errno = %s [%d] ).", strerror( err), err );
|
|
100
|
+
error( "write error ( errno = %s [%d] ).", strerror( err ), err );
|
|
101
101
|
return WRITE_ERROR;
|
|
102
102
|
}
|
|
103
103
|
|
|
@@ -219,7 +219,7 @@ write_pcap_packet( void *user_data ) {
|
|
|
219
219
|
|
|
220
220
|
timersub( &now, &buffer_length, &threshold );
|
|
221
221
|
|
|
222
|
-
for (
|
|
222
|
+
for ( ;; ) {
|
|
223
223
|
buffer *packet;
|
|
224
224
|
queue_status status = peek_pcap_packet( &packet );
|
|
225
225
|
if ( status == QUEUE_EMPTY ) {
|
|
@@ -251,8 +251,6 @@ write_pcap_packet( void *user_data ) {
|
|
|
251
251
|
}
|
|
252
252
|
|
|
253
253
|
fsync( outfile_fd );
|
|
254
|
-
|
|
255
|
-
return;
|
|
256
254
|
}
|
|
257
255
|
|
|
258
256
|
|
|
@@ -274,7 +272,6 @@ set_timer_event() {
|
|
|
274
272
|
critical( "failed in set timer event" );
|
|
275
273
|
abort();
|
|
276
274
|
}
|
|
277
|
-
return;
|
|
278
275
|
}
|
|
279
276
|
|
|
280
277
|
|
|
@@ -350,8 +347,6 @@ write_circular_buffer( void ) {
|
|
|
350
347
|
foreach_pcap_queue( ( void * ) write_to_file );
|
|
351
348
|
|
|
352
349
|
finalize_pcap();
|
|
353
|
-
|
|
354
|
-
return;
|
|
355
350
|
}
|
|
356
351
|
|
|
357
352
|
|
|
@@ -403,16 +398,18 @@ usage( void ) {
|
|
|
403
398
|
printf(
|
|
404
399
|
"Usage: tremashark [OPTION]...\n"
|
|
405
400
|
"\n"
|
|
406
|
-
" -t
|
|
407
|
-
" -w FILE_TO_SAVE
|
|
408
|
-
" -p
|
|
409
|
-
" -r
|
|
410
|
-
" -c NUMBER_OF_MESSAGES
|
|
411
|
-
" -s DUMP_SERVICE_NAME
|
|
412
|
-
" -n, --name=SERVICE_NAME
|
|
413
|
-
" -d, --daemonize
|
|
414
|
-
" -l, --logging_level=LEVEL
|
|
415
|
-
" -
|
|
401
|
+
" -t launch tshark instead of wireshark\n"
|
|
402
|
+
" -w FILE_TO_SAVE save messages to pcap file\n"
|
|
403
|
+
" -p do not launch wireshark nor tshark\n"
|
|
404
|
+
" -r do not trust remote clock\n"
|
|
405
|
+
" -c NUMBER_OF_MESSAGES save messages to circular buffer\n"
|
|
406
|
+
" -s DUMP_SERVICE_NAME dump service name\n"
|
|
407
|
+
" -n, --name=SERVICE_NAME service name\n"
|
|
408
|
+
" -d, --daemonize run in the background\n"
|
|
409
|
+
" -l, --logging_level=LEVEL set logging level\n"
|
|
410
|
+
" -g, --syslog output log messages to syslog\n"
|
|
411
|
+
" -f, --logging_facility=FACILITY set syslog facility\n"
|
|
412
|
+
" -h, --help display this help and exit\n"
|
|
416
413
|
);
|
|
417
414
|
}
|
|
418
415
|
|
data/trema
CHANGED
|
@@ -1,101 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
#
|
|
3
|
-
# Trema command-line tool.
|
|
4
|
-
#
|
|
5
|
-
# Author: Yasuhito Takamiya <yasuhito@gmail.com>
|
|
6
|
-
#
|
|
7
|
-
# Copyright (C) 2008-2012 NEC Corporation
|
|
8
|
-
#
|
|
9
|
-
# This program is free software; you can redistribute it and/or modify
|
|
10
|
-
# it under the terms of the GNU General Public License, version 2, as
|
|
11
|
-
# published by the Free Software Foundation.
|
|
12
|
-
#
|
|
13
|
-
# This program is distributed in the hope that it will be useful,
|
|
14
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
-
# GNU General Public License for more details.
|
|
17
|
-
#
|
|
18
|
-
# You should have received a copy of the GNU General Public License along
|
|
19
|
-
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
20
|
-
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
21
|
-
#
|
|
1
|
+
#!/usr/bin/env ruby
|
|
22
2
|
|
|
23
3
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
require "English"
|
|
28
|
-
require "fileutils"
|
|
29
|
-
require "trema/command"
|
|
30
|
-
require "trema/path"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
def setup_tmp
|
|
34
|
-
if FileTest.exist?( Trema.tmp ) and not FileTest.writable?( Trema.tmp )
|
|
35
|
-
# Trema is system widely installed with gem command
|
|
36
|
-
sh "sudo chmod o+w -R #{ Trema.tmp }"
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
FileUtils.mkdir_p Trema.log
|
|
40
|
-
FileUtils.mkdir_p Trema.pid
|
|
41
|
-
FileUtils.mkdir_p Trema.sock
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
def method_for command
|
|
46
|
-
case command
|
|
47
|
-
when "version", "-V", "--version"
|
|
48
|
-
return :show_version
|
|
49
|
-
when "ruby"
|
|
50
|
-
return :ruby
|
|
51
|
-
when "help", "-h", "--help", "/?", "-?"
|
|
52
|
-
return :usage
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
setup_tmp
|
|
56
|
-
|
|
57
|
-
case command
|
|
58
|
-
when "run", "start"
|
|
59
|
-
return :run
|
|
60
|
-
when "up"
|
|
61
|
-
return :up
|
|
62
|
-
when "kill", "stop", "off", "down"
|
|
63
|
-
return :kill
|
|
64
|
-
when "killall"
|
|
65
|
-
return :killall
|
|
66
|
-
when "send_packets", "send_packet"
|
|
67
|
-
return :send_packets
|
|
68
|
-
when "show_stats"
|
|
69
|
-
return :show_stats
|
|
70
|
-
when "reset_stats"
|
|
71
|
-
return :reset_stats
|
|
72
|
-
when "dump_flows", "dump_flow"
|
|
73
|
-
return :dump_flows
|
|
74
|
-
when "shell", NilClass
|
|
75
|
-
return :shell
|
|
76
|
-
else
|
|
77
|
-
return nil
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
command = ARGV.shift
|
|
83
|
-
if method_for( command )
|
|
84
|
-
begin
|
|
85
|
-
include Trema::Command
|
|
86
|
-
__send__ method_for( command )
|
|
87
|
-
rescue
|
|
88
|
-
$stderr.puts $ERROR_INFO.message
|
|
89
|
-
$ERROR_INFO.backtrace.each do | each |
|
|
90
|
-
$stderr.puts each if $verbose
|
|
91
|
-
end
|
|
92
|
-
exit false
|
|
93
|
-
end
|
|
94
|
-
else
|
|
95
|
-
$stderr.puts "Unknown command: '#{ command }'"
|
|
96
|
-
$stderr.puts "Type '#{ $0 } --help' for usage."
|
|
97
|
-
exit false
|
|
98
|
-
end
|
|
4
|
+
exec File.join( File.dirname( __FILE__ ), "./bin/trema" ), *ARGV
|
|
99
5
|
|
|
100
6
|
|
|
101
7
|
### Local variables:
|
data/trema-config
CHANGED
|
@@ -1,57 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
#
|
|
3
|
-
# Trema compile helper.
|
|
4
|
-
#
|
|
5
|
-
# Author: Yasuhito Takamiya <yasuhito@gmail.com>
|
|
6
|
-
#
|
|
7
|
-
# Copyright (C) 2008-2012 NEC Corporation
|
|
8
|
-
#
|
|
9
|
-
# This program is free software; you can redistribute it and/or modify
|
|
10
|
-
# it under the terms of the GNU General Public License, version 2, as
|
|
11
|
-
# published by the Free Software Foundation.
|
|
12
|
-
#
|
|
13
|
-
# This program is distributed in the hope that it will be useful,
|
|
14
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
-
# GNU General Public License for more details.
|
|
17
|
-
#
|
|
18
|
-
# You should have received a copy of the GNU General Public License along
|
|
19
|
-
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
20
|
-
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
21
|
-
#
|
|
1
|
+
#!/usr/bin/env ruby
|
|
22
2
|
|
|
23
3
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
require "fileutils"
|
|
28
|
-
require "optparse"
|
|
29
|
-
require "trema/path"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
$opts = OptionParser.new
|
|
33
|
-
|
|
34
|
-
FileUtils.cd Trema.home do
|
|
35
|
-
$opts.banner = "Usage: #{ $0 } [OPTIONS ...]"
|
|
36
|
-
|
|
37
|
-
$opts.on( "-c", "--cflags" ) do
|
|
38
|
-
$cflags = true
|
|
39
|
-
end
|
|
40
|
-
$opts.on( "-l", "--libs" ) do
|
|
41
|
-
$libs = true
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
$opts.parse! ARGV
|
|
45
|
-
|
|
46
|
-
output = []
|
|
47
|
-
if $cflags
|
|
48
|
-
output << "-I#{ Trema.home }/src/lib -I#{ Trema.openflow }"
|
|
49
|
-
end
|
|
50
|
-
if $libs
|
|
51
|
-
output << "-L#{ Trema.objects }/lib -ltrema -lrt -lpthread -lsqlite3 -ldl"
|
|
52
|
-
end
|
|
53
|
-
print output.join( " " )
|
|
54
|
-
end
|
|
4
|
+
exec File.join( File.dirname( __FILE__ ), "./bin/trema-config" ), *ARGV
|
|
55
5
|
|
|
56
6
|
|
|
57
7
|
### Local variables:
|
data/trema.gemspec
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
1
|
$:.push File.expand_path( "../ruby", __FILE__ )
|
|
3
2
|
require "trema/version"
|
|
4
3
|
|
|
@@ -23,4 +22,16 @@ Gem::Specification.new do | s |
|
|
|
23
22
|
# specify any dependencies here; for example:
|
|
24
23
|
# s.add_development_dependency "rspec"
|
|
25
24
|
s.add_runtime_dependency "rake"
|
|
25
|
+
s.add_runtime_dependency "gli", "~> 2.5.2"
|
|
26
|
+
|
|
27
|
+
s.add_development_dependency "rake"
|
|
28
|
+
s.add_development_dependency "rdoc"
|
|
29
|
+
s.add_development_dependency "aruba"
|
|
26
30
|
end
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Local variables:
|
|
34
|
+
### mode: Ruby
|
|
35
|
+
### coding: utf-8-unix
|
|
36
|
+
### indent-tabs-mode: nil
|
|
37
|
+
### End:
|
data/unittests/cmockery_trema.h
CHANGED
|
@@ -55,26 +55,27 @@ void unstub_logger( void );
|
|
|
55
55
|
#ifdef expect_string_count
|
|
56
56
|
#undef expect_string_count
|
|
57
57
|
#endif
|
|
58
|
-
#define expect_string_count( function, parameter, string, count )
|
|
58
|
+
#define expect_string_count( function, parameter, string, count ) \
|
|
59
59
|
_expect_string( #function, #parameter, __FILE__, __LINE__, string, count )
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
#ifdef expect_assert_failure
|
|
63
63
|
#undef expect_assert_failure
|
|
64
64
|
#endif
|
|
65
|
-
#define expect_assert_failure( function_call )
|
|
66
|
-
{
|
|
65
|
+
#define expect_assert_failure( function_call ) \
|
|
66
|
+
{ \
|
|
67
67
|
const char *expression = ( const char * ) ( uintptr_t ) setjmp( global_expect_assert_env ); \
|
|
68
|
-
global_expecting_assert = 1;
|
|
69
|
-
if ( expression ) {
|
|
70
|
-
print_message( "Expected assertion %s occurred\n", expression );
|
|
71
|
-
global_expecting_assert = 0;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
68
|
+
global_expecting_assert = 1; \
|
|
69
|
+
if ( expression ) { \
|
|
70
|
+
print_message( "Expected assertion %s occurred\n", expression ); \
|
|
71
|
+
global_expecting_assert = 0; \
|
|
72
|
+
} \
|
|
73
|
+
else { \
|
|
74
|
+
function_call; \
|
|
75
|
+
global_expecting_assert = 0; \
|
|
76
|
+
print_error( "Expected assert in %s\n", #function_call ); \
|
|
77
|
+
_fail( __FILE__, __LINE__ ); \
|
|
78
|
+
} \
|
|
78
79
|
}
|
|
79
80
|
|
|
80
81
|
|
data/unittests/lib/buffer_test.c
CHANGED
|
@@ -267,7 +267,7 @@ test_duplicate_buffer_succeeds() {
|
|
|
267
267
|
unsigned char *data = append_back_buffer( buf, 1024 );
|
|
268
268
|
int i;
|
|
269
269
|
for ( i = 0; i < 1024; i++ ) {
|
|
270
|
-
data[ i ] = ( unsigned char ) ( i % 0xff )
|
|
270
|
+
data[ i ] = ( unsigned char ) ( i % 0xff );
|
|
271
271
|
}
|
|
272
272
|
|
|
273
273
|
buffer *duplicate = duplicate_buffer( buf );
|
|
@@ -184,14 +184,22 @@ create_action_enqueue() {
|
|
|
184
184
|
|
|
185
185
|
|
|
186
186
|
static struct ofp_action_vendor_header *
|
|
187
|
-
create_action_vendor() {
|
|
188
|
-
|
|
189
|
-
|
|
187
|
+
create_action_vendor( size_t body_length ) {
|
|
188
|
+
size_t length = sizeof( struct ofp_action_vendor_header ) + body_length;
|
|
189
|
+
struct ofp_action_vendor_header *action = xmalloc( length );
|
|
190
|
+
memset( action, 0, length );
|
|
190
191
|
|
|
191
192
|
action->type = htons( OFPAT_VENDOR );
|
|
192
|
-
action->len = htons(
|
|
193
|
+
action->len = htons( ( uint16_t ) length );
|
|
193
194
|
action->vendor = htonl( 2048 );
|
|
194
195
|
|
|
196
|
+
if ( body_length > 0 ) {
|
|
197
|
+
uint8_t *body = ( uint8_t * ) action + sizeof( struct ofp_action_vendor_header );
|
|
198
|
+
for ( size_t i = 0; i < body_length; i++ ) {
|
|
199
|
+
body[ i ] = ( uint8_t ) rand();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
195
203
|
return action;
|
|
196
204
|
}
|
|
197
205
|
|
|
@@ -469,7 +477,7 @@ test_ntoh_action_enqueue() {
|
|
|
469
477
|
|
|
470
478
|
assert_int_equal( htons( dst.type ), src->type );
|
|
471
479
|
assert_int_equal( htons( dst.len ), src->len );
|
|
472
|
-
assert_int_equal( htons( dst.port)
|
|
480
|
+
assert_int_equal( htons( dst.port ), src->port );
|
|
473
481
|
assert_int_equal( ( int ) htonl( dst.queue_id ), ( int ) src->queue_id );
|
|
474
482
|
|
|
475
483
|
xfree( src );
|
|
@@ -482,19 +490,91 @@ test_ntoh_action_enqueue() {
|
|
|
482
490
|
|
|
483
491
|
void
|
|
484
492
|
test_ntoh_action_vendor() {
|
|
485
|
-
struct ofp_action_vendor_header
|
|
493
|
+
struct ofp_action_vendor_header *src = create_action_vendor( 0 );
|
|
486
494
|
|
|
487
|
-
|
|
495
|
+
size_t length = sizeof( struct ofp_action_vendor_header );
|
|
496
|
+
struct ofp_action_vendor_header *dst = xmalloc( length );
|
|
497
|
+
memset( dst, 0, length );
|
|
488
498
|
|
|
489
|
-
|
|
499
|
+
ntoh_action_vendor( dst, src );
|
|
490
500
|
|
|
491
|
-
|
|
501
|
+
assert_int_equal( htons( dst->type ), src->type );
|
|
502
|
+
assert_int_equal( htons( dst->len ), src->len );
|
|
503
|
+
assert_int_equal( ( int ) htonl( dst->vendor ), ( int ) src->vendor );
|
|
492
504
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
505
|
+
xfree( src );
|
|
506
|
+
xfree( dst );
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
void
|
|
511
|
+
test_ntoh_action_vendor_with_body() {
|
|
512
|
+
const size_t body_length = 128;
|
|
513
|
+
struct ofp_action_vendor_header *src = create_action_vendor( body_length );
|
|
514
|
+
|
|
515
|
+
size_t length = sizeof( struct ofp_action_vendor_header ) + body_length;
|
|
516
|
+
struct ofp_action_vendor_header *dst = xmalloc( length );
|
|
517
|
+
memset( dst, 0, length );
|
|
518
|
+
|
|
519
|
+
ntoh_action_vendor( dst, src );
|
|
520
|
+
|
|
521
|
+
assert_int_equal( htons( dst->type ), src->type );
|
|
522
|
+
assert_int_equal( htons( dst->len ), src->len );
|
|
523
|
+
assert_int_equal( ( int ) htonl( dst->vendor ), ( int ) src->vendor );
|
|
524
|
+
void *src_body = ( char * ) src + sizeof( struct ofp_action_header );
|
|
525
|
+
void *dst_body = ( char * ) dst + sizeof( struct ofp_action_header );
|
|
526
|
+
assert_memory_equal( dst_body, src_body, body_length );
|
|
496
527
|
|
|
497
528
|
xfree( src );
|
|
529
|
+
xfree( dst );
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
|
|
533
|
+
/********************************************************************************
|
|
534
|
+
* hton_action_vendor() test.
|
|
535
|
+
********************************************************************************/
|
|
536
|
+
|
|
537
|
+
void
|
|
538
|
+
test_hton_action_vendor() {
|
|
539
|
+
struct ofp_action_vendor_header *src = create_action_vendor( 0 );
|
|
540
|
+
hton_action_vendor( src, src );
|
|
541
|
+
|
|
542
|
+
size_t length = sizeof( struct ofp_action_vendor_header );
|
|
543
|
+
struct ofp_action_vendor_header *dst = xmalloc( length );
|
|
544
|
+
memset( dst, 0, length );
|
|
545
|
+
|
|
546
|
+
hton_action_vendor( dst, src );
|
|
547
|
+
|
|
548
|
+
assert_int_equal( ntohs( dst->type ), src->type );
|
|
549
|
+
assert_int_equal( ntohs( dst->len ), src->len );
|
|
550
|
+
assert_int_equal( ( int ) ntohl( dst->vendor ), ( int ) src->vendor );
|
|
551
|
+
|
|
552
|
+
xfree( src );
|
|
553
|
+
xfree( dst );
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
void
|
|
558
|
+
test_hton_action_vendor_with_body() {
|
|
559
|
+
const size_t body_length = 128;
|
|
560
|
+
struct ofp_action_vendor_header *src = create_action_vendor( body_length );
|
|
561
|
+
hton_action_vendor( src, src );
|
|
562
|
+
|
|
563
|
+
size_t length = sizeof( struct ofp_action_vendor_header ) + body_length;
|
|
564
|
+
struct ofp_action_vendor_header *dst = xmalloc( length );
|
|
565
|
+
memset( dst, 0, length );
|
|
566
|
+
|
|
567
|
+
hton_action_vendor( dst, src );
|
|
568
|
+
|
|
569
|
+
assert_int_equal( ntohs( dst->type ), src->type );
|
|
570
|
+
assert_int_equal( ntohs( dst->len ), src->len );
|
|
571
|
+
assert_int_equal( ( int ) ntohl( dst->vendor ), ( int ) src->vendor );
|
|
572
|
+
void *src_body = ( char * ) src + sizeof( struct ofp_action_header );
|
|
573
|
+
void *dst_body = ( char * ) dst + sizeof( struct ofp_action_header );
|
|
574
|
+
assert_memory_equal( dst_body, src_body, body_length );
|
|
575
|
+
|
|
576
|
+
xfree( src );
|
|
577
|
+
xfree( dst );
|
|
498
578
|
}
|
|
499
579
|
|
|
500
580
|
|
|
@@ -643,7 +723,7 @@ test_ntoh_action() {
|
|
|
643
723
|
|
|
644
724
|
assert_int_equal( htons( dst.type ), src->type );
|
|
645
725
|
assert_int_equal( htons( dst.len ), src->len );
|
|
646
|
-
assert_int_equal( htons( dst.port)
|
|
726
|
+
assert_int_equal( htons( dst.port ), src->port );
|
|
647
727
|
assert_int_equal( ( int ) htonl( dst.queue_id ), ( int ) src->queue_id );
|
|
648
728
|
|
|
649
729
|
xfree( src );
|
|
@@ -654,7 +734,7 @@ test_ntoh_action() {
|
|
|
654
734
|
|
|
655
735
|
memset( &dst, 0, sizeof( struct ofp_action_vendor_header ) );
|
|
656
736
|
|
|
657
|
-
struct ofp_action_vendor_header *src = create_action_vendor();
|
|
737
|
+
struct ofp_action_vendor_header *src = create_action_vendor( 0 );
|
|
658
738
|
|
|
659
739
|
ntoh_action( ( struct ofp_action_header * ) &dst, ( struct ofp_action_header * ) src );
|
|
660
740
|
|
|
@@ -676,7 +756,7 @@ test_ntoh_action_with_undefined_action_type() {
|
|
|
676
756
|
struct ofp_action_output *src = create_action_output();
|
|
677
757
|
|
|
678
758
|
src->type = htons( OFPAT_ENQUEUE + 1 );
|
|
679
|
-
|
|
759
|
+
|
|
680
760
|
expect_assert_failure( ntoh_action( ( struct ofp_action_header * ) &dst, ( struct ofp_action_header * ) src ) );
|
|
681
761
|
|
|
682
762
|
xfree( src );
|
|
@@ -837,7 +917,7 @@ test_hton_action() {
|
|
|
837
917
|
|
|
838
918
|
assert_int_equal( htons( dst.type ), src->type );
|
|
839
919
|
assert_int_equal( htons( dst.len ), src->len );
|
|
840
|
-
assert_int_equal( htons( dst.port)
|
|
920
|
+
assert_int_equal( htons( dst.port ), src->port );
|
|
841
921
|
assert_int_equal( ( int ) htonl( dst.queue_id ), ( int ) src->queue_id );
|
|
842
922
|
|
|
843
923
|
xfree( src );
|
|
@@ -848,7 +928,7 @@ test_hton_action() {
|
|
|
848
928
|
|
|
849
929
|
memset( &dst, 0, sizeof( struct ofp_action_vendor_header ) );
|
|
850
930
|
|
|
851
|
-
struct ofp_action_vendor_header *src = create_action_vendor();
|
|
931
|
+
struct ofp_action_vendor_header *src = create_action_vendor( 0 );
|
|
852
932
|
ntoh_action_vendor( src, src );
|
|
853
933
|
|
|
854
934
|
hton_action( ( struct ofp_action_header * ) &dst, ( struct ofp_action_header * ) src );
|
|
@@ -872,7 +952,7 @@ test_hton_action_with_undefined_action_type() {
|
|
|
872
952
|
ntoh_action_output( src, src );
|
|
873
953
|
|
|
874
954
|
src->type = OFPAT_ENQUEUE + 1;
|
|
875
|
-
|
|
955
|
+
|
|
876
956
|
expect_assert_failure( hton_action( ( struct ofp_action_header * ) &dst, ( struct ofp_action_header * ) src ) );
|
|
877
957
|
|
|
878
958
|
xfree( src );
|
|
@@ -903,7 +983,7 @@ test_ntoh_flow_stats_without_action() {
|
|
|
903
983
|
src->hard_timeout = htons( 300 );
|
|
904
984
|
src->cookie = htonll( COOKIE );
|
|
905
985
|
src->packet_count = htonll( PACKET_COUNT );
|
|
906
|
-
src->byte_count= htonll( BYTE_COUNT );
|
|
986
|
+
src->byte_count = htonll( BYTE_COUNT );
|
|
907
987
|
|
|
908
988
|
ntoh_flow_stats( dst, src );
|
|
909
989
|
|
|
@@ -944,7 +1024,7 @@ test_ntoh_flow_stats_with_single_output_action() {
|
|
|
944
1024
|
src->hard_timeout = htons( 300 );
|
|
945
1025
|
src->cookie = htonll( COOKIE );
|
|
946
1026
|
src->packet_count = htonll( PACKET_COUNT );
|
|
947
|
-
src->byte_count= htonll( BYTE_COUNT );
|
|
1027
|
+
src->byte_count = htonll( BYTE_COUNT );
|
|
948
1028
|
struct ofp_action_output *act_src = ( struct ofp_action_output * ) src->actions;
|
|
949
1029
|
act_src->type = htons( OFPAT_OUTPUT );
|
|
950
1030
|
act_src->len = htons( 8 );
|
|
@@ -996,7 +1076,7 @@ test_ntoh_flow_stats_with_two_output_actions() {
|
|
|
996
1076
|
src->hard_timeout = htons( 300 );
|
|
997
1077
|
src->cookie = htonll( COOKIE );
|
|
998
1078
|
src->packet_count = htonll( PACKET_COUNT );
|
|
999
|
-
src->byte_count= htonll( BYTE_COUNT );
|
|
1079
|
+
src->byte_count = htonll( BYTE_COUNT );
|
|
1000
1080
|
struct ofp_action_output *act_src[ 2 ];
|
|
1001
1081
|
act_src[ 0 ] = ( struct ofp_action_output * ) src->actions;
|
|
1002
1082
|
act_src[ 0 ]->type = htons( OFPAT_OUTPUT );
|
|
@@ -1064,7 +1144,7 @@ test_hton_flow_stats_without_action() {
|
|
|
1064
1144
|
src->hard_timeout = 300;
|
|
1065
1145
|
src->cookie = COOKIE;
|
|
1066
1146
|
src->packet_count = PACKET_COUNT;
|
|
1067
|
-
src->byte_count= BYTE_COUNT;
|
|
1147
|
+
src->byte_count = BYTE_COUNT;
|
|
1068
1148
|
|
|
1069
1149
|
hton_flow_stats( dst, src );
|
|
1070
1150
|
|
|
@@ -1103,13 +1183,13 @@ test_hton_flow_stats_with_single_output_action() {
|
|
|
1103
1183
|
src->table_id = 1;
|
|
1104
1184
|
src->match = MATCH;
|
|
1105
1185
|
src->duration_sec = 60;
|
|
1106
|
-
src->duration_nsec = 5000
|
|
1186
|
+
src->duration_nsec = 5000;
|
|
1107
1187
|
src->priority = UINT16_MAX;
|
|
1108
1188
|
src->idle_timeout = 60;
|
|
1109
1189
|
src->hard_timeout = 300;
|
|
1110
1190
|
src->cookie = COOKIE;
|
|
1111
1191
|
src->packet_count = PACKET_COUNT;
|
|
1112
|
-
src->byte_count= BYTE_COUNT;
|
|
1192
|
+
src->byte_count = BYTE_COUNT;
|
|
1113
1193
|
struct ofp_action_output *act_src = ( struct ofp_action_output * ) src->actions;
|
|
1114
1194
|
act_src->type = OFPAT_OUTPUT;
|
|
1115
1195
|
act_src->len = 8;
|
|
@@ -1165,7 +1245,7 @@ test_hton_flow_stats_with_two_output_actions() {
|
|
|
1165
1245
|
src->hard_timeout = 300;
|
|
1166
1246
|
src->cookie = COOKIE;
|
|
1167
1247
|
src->packet_count = PACKET_COUNT;
|
|
1168
|
-
src->byte_count= BYTE_COUNT;
|
|
1248
|
+
src->byte_count = BYTE_COUNT;
|
|
1169
1249
|
struct ofp_action_output *act_src[ 2 ];
|
|
1170
1250
|
act_src[ 0 ] = ( struct ofp_action_output * ) src->actions;
|
|
1171
1251
|
act_src[ 0 ]->type = OFPAT_OUTPUT;
|
|
@@ -1680,6 +1760,9 @@ main() {
|
|
|
1680
1760
|
unit_test( test_ntoh_action_tp_port ),
|
|
1681
1761
|
unit_test( test_ntoh_action_enqueue ),
|
|
1682
1762
|
unit_test( test_ntoh_action_vendor ),
|
|
1763
|
+
unit_test( test_ntoh_action_vendor_with_body ),
|
|
1764
|
+
unit_test( test_hton_action_vendor ),
|
|
1765
|
+
unit_test( test_hton_action_vendor_with_body ),
|
|
1683
1766
|
unit_test( test_ntoh_action ),
|
|
1684
1767
|
unit_test( test_ntoh_action_with_undefined_action_type ),
|
|
1685
1768
|
unit_test( test_hton_action ),
|