trema 0.2.5 → 0.2.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
* Unit tests for trema_private.[ch]
|
3
|
-
*
|
3
|
+
*
|
4
4
|
* Author: Yasuhito Takamiya <yasuhito@gmail.com>
|
5
5
|
*
|
6
6
|
* Copyright (C) 2008-2012 NEC Corporation
|
@@ -303,7 +303,7 @@ main() {
|
|
303
303
|
unit_test_setup_teardown( test_set_trema_tmp_when_TREMA_TMP_is_NOT_set_and_TREMA_HOME_is_NOT_ROOT, reset, reset ),
|
304
304
|
unit_test_setup_teardown( test_set_trema_tmp_falls_back_to_default_if_TREMA_TMP_is_invalid, reset, reset ),
|
305
305
|
unit_test_setup_teardown( test_set_trema_tmp_when_TREMA_HOME_and_TREMA_TMP_are_set, reset, reset ),
|
306
|
-
|
306
|
+
|
307
307
|
// get_trema_tmp() tests.
|
308
308
|
unit_test_setup_teardown( test_get_trema_tmp, reset, reset ),
|
309
309
|
unit_test_setup_teardown( test_get_trema_tmp_if_not_initialized, reset, reset ),
|
data/unittests/lib/trema_test.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
* Unit tests for trema.[ch]
|
3
|
-
*
|
3
|
+
*
|
4
4
|
* Author: Yasuhito Takamiya <yasuhito@gmail.com>
|
5
5
|
*
|
6
6
|
* Copyright (C) 2008-2012 NEC Corporation
|
@@ -66,6 +66,7 @@ static bool messenger_started;
|
|
66
66
|
static bool messenger_flushed;
|
67
67
|
static bool messenger_dump_started;
|
68
68
|
static bool stat_initialized;
|
69
|
+
static bool management_interface_initialized;
|
69
70
|
|
70
71
|
|
71
72
|
bool
|
@@ -329,7 +330,7 @@ mock_clock_gettime( clockid_t clk_id, struct timespec *tp ) {
|
|
329
330
|
|
330
331
|
|
331
332
|
bool
|
332
|
-
mock_set_external_callback( void ( *callback )
|
333
|
+
mock_set_external_callback( void ( *callback )( void ) ) {
|
333
334
|
UNUSED( callback );
|
334
335
|
return true;
|
335
336
|
}
|
@@ -362,6 +363,27 @@ mock_finalize_packetin_filter_interface() {
|
|
362
363
|
}
|
363
364
|
|
364
365
|
|
366
|
+
bool
|
367
|
+
mock_init_management_interface() {
|
368
|
+
assert_false( management_interface_initialized );
|
369
|
+
|
370
|
+
management_interface_initialized = true;
|
371
|
+
|
372
|
+
return true;
|
373
|
+
}
|
374
|
+
|
375
|
+
|
376
|
+
bool
|
377
|
+
mock_finalize_management_interface() {
|
378
|
+
assert_true( management_interface_initialized );
|
379
|
+
|
380
|
+
management_interface_initialized = false;
|
381
|
+
|
382
|
+
return true;
|
383
|
+
}
|
384
|
+
|
385
|
+
|
386
|
+
|
365
387
|
/********************************************************************************
|
366
388
|
* Setup and teardown.
|
367
389
|
********************************************************************************/
|
@@ -390,6 +412,8 @@ reset_trema() {
|
|
390
412
|
|
391
413
|
stat_initialized = false;
|
392
414
|
|
415
|
+
management_interface_initialized = false;
|
416
|
+
|
393
417
|
errno = 0;
|
394
418
|
}
|
395
419
|
|
@@ -408,6 +432,7 @@ test_init_trema_initializes_submodules_in_right_order() {
|
|
408
432
|
assert_true( messenger_initialized );
|
409
433
|
assert_true( initialized );
|
410
434
|
assert_true( stat_initialized );
|
435
|
+
assert_true( management_interface_initialized );
|
411
436
|
assert_string_equal( _get_trema_home(), "/" );
|
412
437
|
assert_string_equal( _get_trema_tmp(), "/tmp" );
|
413
438
|
|
@@ -531,6 +556,7 @@ test_finalize_trema_finalizes_submodules_in_right_order() {
|
|
531
556
|
assert_false( messenger_initialized );
|
532
557
|
assert_false( initialized );
|
533
558
|
assert_false( stat_initialized );
|
559
|
+
assert_false( management_interface_initialized );
|
534
560
|
assert_true( _get_trema_home() == NULL );
|
535
561
|
assert_true( _get_trema_tmp() == NULL );
|
536
562
|
}
|
@@ -716,11 +742,12 @@ test_parse_help_option() {
|
|
716
742
|
format,
|
717
743
|
"Usage: %s [OPTION]...\n"
|
718
744
|
"\n"
|
719
|
-
" -n, --name=SERVICE_NAME
|
720
|
-
" -d, --daemonize
|
721
|
-
" -l, --logging_level=LEVEL
|
722
|
-
" -g, --syslog
|
723
|
-
" -
|
745
|
+
" -n, --name=SERVICE_NAME service name\n"
|
746
|
+
" -d, --daemonize run in the background\n"
|
747
|
+
" -l, --logging_level=LEVEL set logging level\n"
|
748
|
+
" -g, --syslog output log messages to syslog\n"
|
749
|
+
" -f, --logging_facility=FACILITY set syslog facility\n"
|
750
|
+
" -h, --help display this help and exit\n"
|
724
751
|
);
|
725
752
|
expect_value( mock_exit, status, EXIT_SUCCESS );
|
726
753
|
|
@@ -740,11 +767,12 @@ test_parse_h_option() {
|
|
740
767
|
format,
|
741
768
|
"Usage: %s [OPTION]...\n"
|
742
769
|
"\n"
|
743
|
-
" -n, --name=SERVICE_NAME
|
744
|
-
" -d, --daemonize
|
745
|
-
" -l, --logging_level=LEVEL
|
746
|
-
" -g, --syslog
|
747
|
-
" -
|
770
|
+
" -n, --name=SERVICE_NAME service name\n"
|
771
|
+
" -d, --daemonize run in the background\n"
|
772
|
+
" -l, --logging_level=LEVEL set logging level\n"
|
773
|
+
" -g, --syslog output log messages to syslog\n"
|
774
|
+
" -f, --logging_facility=FACILITY set syslog facility\n"
|
775
|
+
" -h, --help display this help and exit\n"
|
748
776
|
);
|
749
777
|
expect_value( mock_exit, status, EXIT_SUCCESS );
|
750
778
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
* Unit tests for utility functions.
|
3
|
-
*
|
3
|
+
*
|
4
4
|
* Author: Yasuhito Takamiya <yasuhito@gmail.com>
|
5
5
|
*
|
6
6
|
* Copyright (C) 2008-2012 NEC Corporation
|
@@ -20,6 +20,7 @@
|
|
20
20
|
*/
|
21
21
|
|
22
22
|
|
23
|
+
#include <arpa/inet.h>
|
23
24
|
#include <setjmp.h>
|
24
25
|
#include <stdarg.h>
|
25
26
|
#include <stddef.h>
|
@@ -27,7 +28,6 @@
|
|
27
28
|
#include <stdio.h>
|
28
29
|
#include <stdlib.h>
|
29
30
|
#include <string.h>
|
30
|
-
#include <arpa/inet.h>
|
31
31
|
#include "cmockery_trema.h"
|
32
32
|
#include "log.h"
|
33
33
|
#include "ipv4.h"
|
@@ -258,7 +258,7 @@ test_wildcards_to_string_fails_with_insufficient_buffer() {
|
|
258
258
|
static void
|
259
259
|
test_match_to_string() {
|
260
260
|
char match_str[ 256 ];
|
261
|
-
char expected_match_str[] = "wildcards = 0(none), in_port = 1, dl_src = 01:02:03:04:05:07, dl_dst = 08:09:0a:0b:0c:0d, dl_vlan =
|
261
|
+
char expected_match_str[] = "wildcards = 0(none), in_port = 1, dl_src = 01:02:03:04:05:07, dl_dst = 08:09:0a:0b:0c:0d, dl_vlan = 0x1, dl_vlan_pcp = 0x1, dl_type = 0x800, nw_tos = 1, nw_proto = 6, nw_src = 10.9.8.7/32, nw_dst = 6.5.4.3/32, tp_src = 1024, tp_dst = 2048";
|
262
262
|
struct ofp_match match = { 0, 1,
|
263
263
|
{ 0x01, 0x02, 0x03, 0x04, 0x05, 0x07 },
|
264
264
|
{ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d },
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
* Unit tests for x-wrappers.
|
3
|
-
*
|
3
|
+
*
|
4
4
|
* Author: Yasuhito Takamiya <yasuhito@gmail.com>
|
5
5
|
*
|
6
6
|
* Copyright (C) 2008-2012 NEC Corporation
|
@@ -157,9 +157,9 @@ test_xstrdup_fail() {
|
|
157
157
|
static char *
|
158
158
|
test_xvasprintf_helper( const char *fmt, ... ) {
|
159
159
|
va_list ap;
|
160
|
-
va_start(ap, fmt);
|
160
|
+
va_start(ap, fmt );
|
161
161
|
char *str = xvasprintf( fmt, ap );
|
162
|
-
va_end(ap);
|
162
|
+
va_end( ap );
|
163
163
|
return str;
|
164
164
|
}
|
165
165
|
|
@@ -27,6 +27,7 @@
|
|
27
27
|
#include "trema.h"
|
28
28
|
#include "match_table.h"
|
29
29
|
|
30
|
+
|
30
31
|
void usage();
|
31
32
|
void handle_packet_in( uint64_t datapath_id, uint32_t transaction_id,
|
32
33
|
uint32_t buffer_id, uint16_t total_len,
|
@@ -40,7 +41,7 @@ int packetin_filter_main( int argc, char *argv[] );
|
|
40
41
|
|
41
42
|
|
42
43
|
/*************************************************************************
|
43
|
-
* Setup and teardown function.
|
44
|
+
* Setup and teardown function.
|
44
45
|
*************************************************************************/
|
45
46
|
|
46
47
|
|
@@ -80,7 +81,7 @@ mock_error( const char *format, ... ) {
|
|
80
81
|
va_list args;
|
81
82
|
va_start( args, format );
|
82
83
|
vsnprintf( buffer, sizeof( buffer ) - 1, format, args );
|
83
|
-
va_end( args );
|
84
|
+
va_end( args );
|
84
85
|
|
85
86
|
check_expected( buffer );
|
86
87
|
( void ) mock();
|
@@ -231,8 +232,8 @@ test_handle_packet_in_successed() {
|
|
231
232
|
will_return_void( mock_set_match_from_packet );
|
232
233
|
|
233
234
|
memset( &match_entry, 0, sizeof( match_entry ) );
|
234
|
-
match_entry.service_name = ( char * )( uintptr_t )( "service_name" );
|
235
|
-
match_entry.entry_name = ( char * )( uintptr_t )( "entry_name" );
|
235
|
+
match_entry.service_name = ( char * ) ( uintptr_t ) ( "service_name" );
|
236
|
+
match_entry.entry_name = ( char * ) ( uintptr_t ) ( "entry_name" );
|
236
237
|
expect_not_value( mock_lookup_match_entry, match, NULL );
|
237
238
|
will_return( mock_lookup_match_entry, &match_entry );
|
238
239
|
|
@@ -317,8 +318,8 @@ test_handle_packet_in_send_failed() {
|
|
317
318
|
will_return_void( mock_set_match_from_packet );
|
318
319
|
|
319
320
|
memset( &match_entry, 0, sizeof( match_entry ) );
|
320
|
-
match_entry.service_name = ( char * )( uintptr_t )( "service_name" );
|
321
|
-
match_entry.entry_name = ( char * )( uintptr_t )( "entry_name" );
|
321
|
+
match_entry.service_name = ( char * ) ( uintptr_t ) ( "service_name" );
|
322
|
+
match_entry.entry_name = ( char * ) ( uintptr_t ) ( "entry_name" );
|
322
323
|
expect_not_value( mock_lookup_match_entry, match, NULL );
|
323
324
|
will_return( mock_lookup_match_entry, &match_entry );
|
324
325
|
|
@@ -391,9 +392,9 @@ test_packetin_filter_main_successed() {
|
|
391
392
|
setup();
|
392
393
|
|
393
394
|
char *argv[] = {
|
394
|
-
( char * )( uintptr_t )"packetin_filter",
|
395
|
-
( char * )( uintptr_t )"lldp::topo",
|
396
|
-
( char * )( uintptr_t )"packet_in::hub",
|
395
|
+
( char * ) ( uintptr_t ) "packetin_filter",
|
396
|
+
( char * ) ( uintptr_t ) "lldp::topo",
|
397
|
+
( char * ) ( uintptr_t ) "packet_in::hub",
|
397
398
|
NULL,
|
398
399
|
};
|
399
400
|
int argc = ARRAY_SIZE( argv ) - 1;
|
@@ -429,8 +430,8 @@ test_packetin_filter_main_invalid_match_type() {
|
|
429
430
|
setup();
|
430
431
|
|
431
432
|
char *argv[] = {
|
432
|
-
( char * )( uintptr_t )"packetin_filter",
|
433
|
-
( char * )( uintptr_t )"INVALID_MATCH_TYPE::dummy_service_name",
|
433
|
+
( char * ) ( uintptr_t ) "packetin_filter",
|
434
|
+
( char * ) ( uintptr_t ) "INVALID_MATCH_TYPE::dummy_service_name",
|
434
435
|
NULL,
|
435
436
|
};
|
436
437
|
int argc = ARRAY_SIZE( argv ) - 1;
|
@@ -20,13 +20,13 @@
|
|
20
20
|
*/
|
21
21
|
|
22
22
|
|
23
|
+
#include <errno.h>
|
23
24
|
#include <fcntl.h>
|
25
|
+
#include <netinet/tcp.h>
|
24
26
|
#include <stdio.h>
|
25
27
|
#include <stdlib.h>
|
26
28
|
#include <string.h>
|
27
|
-
#include <errno.h>
|
28
29
|
#include <sys/wait.h>
|
29
|
-
#include <netinet/tcp.h>
|
30
30
|
#include "unittest.h"
|
31
31
|
#include "trema.h"
|
32
32
|
#include "switch_manager.h"
|
@@ -44,7 +44,7 @@ void wait_child( void );
|
|
44
44
|
|
45
45
|
|
46
46
|
/*************************************************************************
|
47
|
-
* Setup and teardown function.
|
47
|
+
* Setup and teardown function.
|
48
48
|
*************************************************************************/
|
49
49
|
|
50
50
|
static void
|
@@ -59,7 +59,7 @@ teardown() {
|
|
59
59
|
|
60
60
|
|
61
61
|
/******************************************************************************
|
62
|
-
* Mock
|
62
|
+
* Mock
|
63
63
|
******************************************************************************/
|
64
64
|
|
65
65
|
void
|
@@ -101,19 +101,22 @@ mock_secure_channel_accept( struct listener_info *listener_info ) {
|
|
101
101
|
( void ) mock();
|
102
102
|
}
|
103
103
|
|
104
|
+
|
104
105
|
int
|
105
|
-
mock_access( const char *pathname, int mode) {
|
106
|
+
mock_access( const char *pathname, int mode ) {
|
106
107
|
UNUSED( pathname );
|
107
108
|
UNUSED( mode );
|
108
109
|
|
109
110
|
return ( int ) mock();
|
110
111
|
}
|
111
112
|
|
113
|
+
|
112
114
|
char *
|
113
115
|
mock_get_current_dir_name( void ) {
|
114
116
|
return ( char * ) mock();
|
115
117
|
}
|
116
118
|
|
119
|
+
|
117
120
|
void
|
118
121
|
mock_init_trema( int *argc, char ***argv ) {
|
119
122
|
UNUSED( argc );
|
@@ -122,6 +125,7 @@ mock_init_trema( int *argc, char ***argv ) {
|
|
122
125
|
( void ) mock();
|
123
126
|
}
|
124
127
|
|
128
|
+
|
125
129
|
void
|
126
130
|
mock_set_fd_set_callback( void ( *callback )( fd_set *read_set, fd_set *write_set ) ) {
|
127
131
|
UNUSED( callback );
|
@@ -129,6 +133,7 @@ mock_set_fd_set_callback( void ( *callback )( fd_set *read_set, fd_set *write_se
|
|
129
133
|
( void ) mock();
|
130
134
|
}
|
131
135
|
|
136
|
+
|
132
137
|
void
|
133
138
|
mock_set_check_fd_isset_callback( void ( *callback )( fd_set *read_set, fd_set *write_set ) ) {
|
134
139
|
UNUSED( callback );
|
@@ -136,6 +141,7 @@ mock_set_check_fd_isset_callback( void ( *callback )( fd_set *read_set, fd_set *
|
|
136
141
|
( void ) mock();
|
137
142
|
}
|
138
143
|
|
144
|
+
|
139
145
|
bool
|
140
146
|
mock_secure_channel_listen_start( struct listener_info *listener_info ) {
|
141
147
|
UNUSED( listener_info );
|
@@ -143,6 +149,7 @@ mock_secure_channel_listen_start( struct listener_info *listener_info ) {
|
|
143
149
|
return ( bool ) mock();
|
144
150
|
}
|
145
151
|
|
152
|
+
|
146
153
|
char *
|
147
154
|
mock_get_trema_home( void ) {
|
148
155
|
return ( char * ) mock();
|
@@ -162,7 +169,7 @@ mock_get_executable_name( void ) {
|
|
162
169
|
|
163
170
|
|
164
171
|
void
|
165
|
-
mock_set_external_callback( void ( *callback )
|
172
|
+
mock_set_external_callback( void ( *callback )( void ) ) {
|
166
173
|
check_expected( callback );
|
167
174
|
}
|
168
175
|
|
@@ -375,7 +382,7 @@ test_wait_child_wait3_zero_return() {
|
|
375
382
|
static void
|
376
383
|
test_wait_child_wait3_exit() {
|
377
384
|
setup();
|
378
|
-
|
385
|
+
|
379
386
|
expect_not_value( mock_wait3, status, NULL );
|
380
387
|
expect_value( mock_wait3, options, WNOHANG );
|
381
388
|
expect_value( mock_wait3, rusage, NULL );
|
@@ -587,8 +594,8 @@ test_switch_manager_main_succeeded() {
|
|
587
594
|
setup();
|
588
595
|
|
589
596
|
char *argv[] = {
|
590
|
-
( char * )( uintptr_t )"switch_manager",
|
591
|
-
( char * )( uintptr_t )"--switch_manager=switch_manager",
|
597
|
+
( char * ) ( uintptr_t ) "switch_manager",
|
598
|
+
( char * ) ( uintptr_t ) "--switch_manager=switch_manager",
|
592
599
|
NULL,
|
593
600
|
};
|
594
601
|
int argc = ARRAY_SIZE( argv ) - 1;
|
@@ -619,8 +626,8 @@ test_switch_manager_main_and_port_option_succeeded() {
|
|
619
626
|
setup();
|
620
627
|
|
621
628
|
char *argv[] = {
|
622
|
-
( char * )( uintptr_t )"switch_manager",
|
623
|
-
( char * )( uintptr_t )"--port=6633",
|
629
|
+
( char * ) ( uintptr_t ) "switch_manager",
|
630
|
+
( char * ) ( uintptr_t ) "--port=6633",
|
624
631
|
NULL,
|
625
632
|
};
|
626
633
|
int argc = ARRAY_SIZE( argv ) - 1;
|
@@ -651,8 +658,8 @@ test_switch_manager_main_and_port_option_failed() {
|
|
651
658
|
setup();
|
652
659
|
|
653
660
|
char *argv[] = {
|
654
|
-
( char * )( uintptr_t )"switch_manager",
|
655
|
-
( char * )( uintptr_t )"--port=0",
|
661
|
+
( char * ) ( uintptr_t ) "switch_manager",
|
662
|
+
( char * ) ( uintptr_t ) "--port=0",
|
656
663
|
NULL,
|
657
664
|
};
|
658
665
|
int argc = ARRAY_SIZE( argv ) - 1;
|
@@ -676,8 +683,8 @@ test_switch_manager_main_help_and_exit() {
|
|
676
683
|
setup();
|
677
684
|
|
678
685
|
char *argv[] = {
|
679
|
-
( char * )( uintptr_t )"switch_manager",
|
680
|
-
( char * )( uintptr_t )"-x",
|
686
|
+
( char * ) ( uintptr_t ) "switch_manager",
|
687
|
+
( char * ) ( uintptr_t ) "-x",
|
681
688
|
NULL,
|
682
689
|
};
|
683
690
|
int argc = ARRAY_SIZE( argv ) - 1;
|
@@ -704,7 +711,7 @@ test_switch_manager_main_get_current_dir_name_failed() {
|
|
704
711
|
setup();
|
705
712
|
|
706
713
|
char *argv[] = {
|
707
|
-
( char * )( uintptr_t )"switch_manager",
|
714
|
+
( char * ) ( uintptr_t ) "switch_manager",
|
708
715
|
NULL,
|
709
716
|
};
|
710
717
|
int argc = ARRAY_SIZE( argv ) - 1;
|
@@ -726,7 +733,7 @@ test_switch_manager_main_secure_channel_listen_start_failed() {
|
|
726
733
|
setup();
|
727
734
|
|
728
735
|
char *argv[] = {
|
729
|
-
( char * )( uintptr_t )"switch_manager",
|
736
|
+
( char * ) ( uintptr_t ) "switch_manager",
|
730
737
|
NULL,
|
731
738
|
};
|
732
739
|
int argc = ARRAY_SIZE( argv ) - 1;
|
@@ -924,7 +931,7 @@ test_secure_channel_accept_parent_succeeded() {
|
|
924
931
|
|
925
932
|
int listen_fd = 0;
|
926
933
|
int accept_fd = 1;
|
927
|
-
int pid = 1;
|
934
|
+
int pid = 1; /* parent */
|
928
935
|
|
929
936
|
listener_info.listen_fd = listen_fd;
|
930
937
|
|
@@ -993,7 +1000,7 @@ test_secure_channel_accept_child_succeeded() {
|
|
993
1000
|
|
994
1001
|
int listen_fd = 0;
|
995
1002
|
int accept_fd = 3;
|
996
|
-
int pid = 0;
|
1003
|
+
int pid = 0; /* child */
|
997
1004
|
|
998
1005
|
listener_info.switch_manager = "switch_manager";
|
999
1006
|
listener_info.switch_manager_argc = 0;
|
@@ -1058,15 +1065,15 @@ test_secure_channel_accept_child_succeeded() {
|
|
1058
1065
|
static void
|
1059
1066
|
test_secure_channel_accept_child_and_args_succeeded() {
|
1060
1067
|
setup();
|
1061
|
-
|
1068
|
+
|
1062
1069
|
int listen_fd = 0;
|
1063
1070
|
int accept_fd = 3;
|
1064
|
-
int pid = 0;
|
1071
|
+
int pid = 0; /* child */
|
1065
1072
|
static char const *argv[] = { "a", "b" };
|
1066
1073
|
|
1067
1074
|
listener_info.switch_manager = "switch_manager";
|
1068
1075
|
listener_info.switch_manager_argc = 2;
|
1069
|
-
listener_info.switch_manager_argv = ( char ** )( uintptr_t )argv;
|
1076
|
+
listener_info.switch_manager_argv = ( char ** ) ( uintptr_t ) argv;
|
1070
1077
|
listener_info.listen_fd = listen_fd;
|
1071
1078
|
|
1072
1079
|
expect_value( mock_accept, sockfd, listen_fd );
|