trema 0.4.7 → 0.4.8
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.
- checksums.yaml +4 -4
- data/.gitignore +33 -54
- data/.hound.yml +3 -0
- data/.rspec +3 -0
- data/.rubocop.yml +17 -1
- data/.travis.yml +14 -18
- data/CHANGELOG.md +10 -0
- data/Gemfile +1 -26
- data/README.md +25 -241
- data/Rakefile +4 -1056
- data/bin/.gitignore +3 -0
- data/bin/trema +163 -237
- data/features/cleanup_on_failure.feature +118 -0
- data/features/logging.feature +73 -0
- data/features/open_flow13.feature +21 -0
- data/features/step_definitions/.gitignore +35 -0
- data/features/step_definitions/.rubocop.yml +5 -0
- data/features/step_definitions/.travis.yml +19 -0
- data/features/step_definitions/Gemfile +9 -0
- data/features/step_definitions/Guardfile +4 -0
- data/features/step_definitions/LICENSE +675 -0
- data/features/step_definitions/README.md +7 -0
- data/features/step_definitions/Rakefile +10 -0
- data/features/step_definitions/show_stats_steps.rb +56 -0
- data/features/step_definitions/virtual_link_steps.rb +8 -0
- data/features/support/env.rb +0 -73
- data/features/support/hooks.rb +6 -50
- data/features/trema_delete_link.feature +30 -0
- data/features/trema_killall.feature +56 -0
- data/features/trema_run.feature +47 -0
- data/features/trema_start.feature +73 -0
- data/features/trema_stop.feature +50 -0
- data/lib/trema.rb +4 -0
- data/lib/trema/command.rb +184 -0
- data/lib/trema/controller.rb +289 -0
- data/lib/trema/dirs.rb +14 -0
- data/lib/trema/drb.rb +32 -0
- data/lib/trema/logger.rb +63 -0
- data/lib/trema/monkey_patch/integer.rb +8 -0
- data/lib/trema/monkey_patch/integer/base_conversions.rb +12 -0
- data/lib/trema/monkey_patch/integer/durations.rb +12 -0
- data/lib/trema/switch.rb +83 -0
- data/lib/trema/version.rb +5 -0
- data/spec/spec_helper.rb +9 -178
- data/spec/trema/controller_spec.rb +4 -53
- data/tasks/.gitignore +34 -0
- data/tasks/LICENSE +675 -0
- data/tasks/README.md +6 -0
- data/tasks/cucumber.rake +14 -0
- data/tasks/flay.rake +15 -0
- data/tasks/flog.rake +25 -0
- data/tasks/gem.rake +15 -0
- data/tasks/reek.rake +11 -0
- data/tasks/relish.rake +8 -0
- data/tasks/rspec.rake +8 -0
- data/tasks/rubocop.rake +2 -16
- data/tasks/yard.rake +11 -0
- data/trema.gemspec +24 -23
- metadata +180 -720
- data/.yardopts +0 -4
- data/Doxyfile +0 -1679
- data/Guardfile +0 -14
- data/bin/quality +0 -31
- data/bin/trema-config +0 -59
- data/build.rb +0 -32
- data/cruise.rb +0 -409
- data/features/.nav +0 -50
- data/features/README.md +0 -7
- data/features/core/get_pid_by_trema_name.feature +0 -137
- data/features/core/packetin_filter.feature +0 -55
- data/features/core/switch_manager.feature +0 -41
- data/features/core/trema-config.feature +0 -55
- data/features/dsl/switch_port_specifier.feature +0 -15
- data/features/examples/dumper.feature +0 -35
- data/features/examples/hello_trema.feature +0 -23
- data/features/examples/learning_switch.feature +0 -37
- data/features/examples/list_switches.feature +0 -24
- data/features/examples/message.set_config.feature +0 -27
- data/features/examples/message.vendor-action.feature +0 -25
- data/features/examples/message.vendor-stats-request.feature +0 -20
- data/features/examples/multi_learning_switch.feature +0 -107
- data/features/examples/openflow_message.echo.feature +0 -59
- data/features/examples/openflow_message.features_request.feature +0 -35
- data/features/examples/openflow_message.hello.feature +0 -59
- data/features/examples/packet_in.feature +0 -33
- data/features/examples/packetin_filter_config.feature +0 -95
- data/features/examples/patch_panel.feature +0 -29
- data/features/examples/repeater_hub.feature +0 -52
- data/features/examples/switch_info.feature +0 -51
- data/features/examples/switch_monitor.feature +0 -35
- data/features/examples/transparent_firewall.feature +0 -73
- data/features/handlers/switch_ready.feature +0 -40
- data/features/step_definitions/misc_steps.rb +0 -85
- data/features/step_definitions/send_packets_steps.rb +0 -33
- data/features/step_definitions/stats_steps.rb +0 -39
- data/features/switch_event/C-add_forward_entry.feature +0 -114
- data/features/switch_event/C-delete_forward_entry.feature +0 -85
- data/features/switch_event/C-dump_forward_entries.feature +0 -72
- data/features/switch_event/C-set_forward_entries.feature +0 -77
- data/features/switch_event/README.md +0 -40
- data/features/switch_event/add_forward_entry.feature +0 -160
- data/features/switch_event/delete_forward_entry.feature +0 -160
- data/features/switch_event/dump_forward_entries.feature +0 -103
- data/features/switch_event/set_forward_entries.feature +0 -102
- data/features/trema_commands/README.md +0 -8
- data/features/trema_commands/dump_flows.feature +0 -41
- data/features/trema_commands/help.feature +0 -27
- data/features/trema_commands/help_option.feature +0 -20
- data/features/trema_commands/kill.feature +0 -56
- data/features/trema_commands/killall.feature +0 -32
- data/features/trema_commands/port_down.feature +0 -71
- data/features/trema_commands/port_up.feature +0 -75
- data/features/trema_commands/reset_stats.feature +0 -56
- data/features/trema_commands/run.feature +0 -56
- data/features/trema_commands/send_packets.feature +0 -46
- data/features/trema_commands/show_stats.feature +0 -66
- data/features/trema_commands/up.feature +0 -34
- data/features/trema_commands/version.feature +0 -10
- data/features/trema_commands/version_option.feature +0 -8
- data/rubocop-todo.yml +0 -159
- data/ruby/.gitignore +0 -4
- data/ruby/blocker.rb +0 -74
- data/ruby/extconf.rb +0 -80
- data/ruby/sub-process.rb +0 -289
- data/ruby/trema/action-common.c +0 -46
- data/ruby/trema/action-common.h +0 -38
- data/ruby/trema/action.rb +0 -33
- data/ruby/trema/aggregate-stats-reply.rb +0 -68
- data/ruby/trema/app.rb +0 -114
- data/ruby/trema/barrier-reply.c +0 -98
- data/ruby/trema/barrier-reply.h +0 -44
- data/ruby/trema/barrier-request.c +0 -135
- data/ruby/trema/barrier-request.h +0 -42
- data/ruby/trema/cli.rb +0 -267
- data/ruby/trema/command.rb +0 -41
- data/ruby/trema/command/dump_flows.rb +0 -43
- data/ruby/trema/command/kill.rb +0 -75
- data/ruby/trema/command/killall.rb +0 -38
- data/ruby/trema/command/netns.rb +0 -38
- data/ruby/trema/command/port_down.rb +0 -43
- data/ruby/trema/command/port_up.rb +0 -43
- data/ruby/trema/command/reset_stats.rb +0 -41
- data/ruby/trema/command/ruby.rb +0 -38
- data/ruby/trema/command/run.rb +0 -110
- data/ruby/trema/command/send_packets.rb +0 -46
- data/ruby/trema/command/shell.rb +0 -57
- data/ruby/trema/command/show_stats.rb +0 -65
- data/ruby/trema/command/up.rb +0 -44
- data/ruby/trema/command/version.rb +0 -35
- data/ruby/trema/compat.h +0 -36
- data/ruby/trema/controller.c +0 -691
- data/ruby/trema/controller.h +0 -42
- data/ruby/trema/controller.rb +0 -255
- data/ruby/trema/custom-switch.rb +0 -56
- data/ruby/trema/daemon.rb +0 -184
- data/ruby/trema/default-logger.c +0 -161
- data/ruby/trema/default-logger.h +0 -42
- data/ruby/trema/default-logger.rb +0 -29
- data/ruby/trema/default_openflow_channel_port.rb +0 -26
- data/ruby/trema/desc-stats-reply.rb +0 -75
- data/ruby/trema/dsl.rb +0 -32
- data/ruby/trema/dsl/configuration.rb +0 -145
- data/ruby/trema/dsl/context.rb +0 -69
- data/ruby/trema/dsl/custom-switch.rb +0 -44
- data/ruby/trema/dsl/link.rb +0 -39
- data/ruby/trema/dsl/netns.rb +0 -78
- data/ruby/trema/dsl/parser.rb +0 -70
- data/ruby/trema/dsl/rswitch.rb +0 -47
- data/ruby/trema/dsl/run.rb +0 -47
- data/ruby/trema/dsl/runner.rb +0 -178
- data/ruby/trema/dsl/stanza.rb +0 -51
- data/ruby/trema/dsl/switch.rb +0 -76
- data/ruby/trema/dsl/syntax-error.rb +0 -31
- data/ruby/trema/dsl/syntax.rb +0 -128
- data/ruby/trema/dsl/vhost.rb +0 -106
- data/ruby/trema/dsl/vswitch.rb +0 -45
- data/ruby/trema/echo-reply.c +0 -122
- data/ruby/trema/echo-reply.h +0 -40
- data/ruby/trema/echo-request.c +0 -117
- data/ruby/trema/echo-request.h +0 -40
- data/ruby/trema/echo.c +0 -99
- data/ruby/trema/echo.h +0 -39
- data/ruby/trema/enqueue.rb +0 -87
- data/ruby/trema/error.c +0 -262
- data/ruby/trema/error.h +0 -42
- data/ruby/trema/exact-match.rb +0 -34
- data/ruby/trema/executables.rb +0 -99
- data/ruby/trema/features-reply.c +0 -330
- data/ruby/trema/features-reply.h +0 -54
- data/ruby/trema/features-request.c +0 -134
- data/ruby/trema/features-request.h +0 -42
- data/ruby/trema/flow-mod.c +0 -150
- data/ruby/trema/flow-mod.h +0 -42
- data/ruby/trema/flow-removed.c +0 -280
- data/ruby/trema/flow-removed.h +0 -44
- data/ruby/trema/flow-stats-reply.rb +0 -107
- data/ruby/trema/flow.rb +0 -65
- data/ruby/trema/get-config-reply.c +0 -158
- data/ruby/trema/get-config-reply.h +0 -50
- data/ruby/trema/get-config-request.c +0 -136
- data/ruby/trema/get-config-request.h +0 -42
- data/ruby/trema/hardware-switch.rb +0 -86
- data/ruby/trema/hello.c +0 -133
- data/ruby/trema/hello.h +0 -42
- data/ruby/trema/host.rb +0 -263
- data/ruby/trema/link.rb +0 -177
- data/ruby/trema/list-switches-reply.c +0 -44
- data/ruby/trema/list-switches-reply.h +0 -38
- data/ruby/trema/mac.rb +0 -29
- data/ruby/trema/match.c +0 -621
- data/ruby/trema/match.h +0 -34
- data/ruby/trema/monkey-patch/integer.rb +0 -35
- data/ruby/trema/monkey-patch/integer/base-conversions.rb +0 -34
- data/ruby/trema/monkey-patch/integer/ranges.rb +0 -49
- data/ruby/trema/monkey-patch/integer/validators.rb +0 -36
- data/ruby/trema/monkey-patch/module.rb +0 -33
- data/ruby/trema/monkey-patch/module/class-method.rb +0 -38
- data/ruby/trema/monkey-patch/module/deprecation.rb +0 -39
- data/ruby/trema/monkey-patch/string.rb +0 -31
- data/ruby/trema/monkey-patch/string/inflectors.rb +0 -52
- data/ruby/trema/netns.rb +0 -127
- data/ruby/trema/network-component.rb +0 -151
- data/ruby/trema/ofctl.rb +0 -70
- data/ruby/trema/open-vswitch.rb +0 -160
- data/ruby/trema/openflow-error.c +0 -193
- data/ruby/trema/openflow-error.h +0 -51
- data/ruby/trema/openflow-switch.rb +0 -35
- data/ruby/trema/ordered-hash.rb +0 -75
- data/ruby/trema/packet-in.c +0 -1365
- data/ruby/trema/packet-in.h +0 -44
- data/ruby/trema/packet-queue.rb +0 -181
- data/ruby/trema/packetin-filter.rb +0 -124
- data/ruby/trema/path.rb +0 -85
- data/ruby/trema/phost.rb +0 -76
- data/ruby/trema/port-mod.c +0 -232
- data/ruby/trema/port-mod.h +0 -34
- data/ruby/trema/port-stats-reply.rb +0 -109
- data/ruby/trema/port-status-add.rb +0 -60
- data/ruby/trema/port-status-delete.rb +0 -60
- data/ruby/trema/port-status-modify.rb +0 -60
- data/ruby/trema/port-status.c +0 -192
- data/ruby/trema/port-status.h +0 -41
- data/ruby/trema/port.c +0 -398
- data/ruby/trema/port.h +0 -45
- data/ruby/trema/process.rb +0 -103
- data/ruby/trema/queue-get-config-reply.c +0 -205
- data/ruby/trema/queue-get-config-reply.h +0 -45
- data/ruby/trema/queue-get-config-request.c +0 -141
- data/ruby/trema/queue-get-config-request.h +0 -42
- data/ruby/trema/queue-stats-reply.rb +0 -76
- data/ruby/trema/ruby-switch.rb +0 -62
- data/ruby/trema/send-out-port.rb +0 -113
- data/ruby/trema/set-config.c +0 -174
- data/ruby/trema/set-config.h +0 -42
- data/ruby/trema/set-eth-addr.rb +0 -54
- data/ruby/trema/set-eth-dst-addr.rb +0 -52
- data/ruby/trema/set-eth-src-addr.rb +0 -53
- data/ruby/trema/set-ip-addr.rb +0 -54
- data/ruby/trema/set-ip-dst-addr.rb +0 -53
- data/ruby/trema/set-ip-src-addr.rb +0 -52
- data/ruby/trema/set-ip-tos.rb +0 -64
- data/ruby/trema/set-transport-dst-port.rb +0 -53
- data/ruby/trema/set-transport-port.rb +0 -53
- data/ruby/trema/set-transport-src-port.rb +0 -54
- data/ruby/trema/set-vlan-priority.rb +0 -66
- data/ruby/trema/set-vlan-vid.rb +0 -65
- data/ruby/trema/shell.rb +0 -37
- data/ruby/trema/shell/down.rb +0 -37
- data/ruby/trema/shell/killall.rb +0 -38
- data/ruby/trema/shell/link.rb +0 -59
- data/ruby/trema/shell/reset_stats.rb +0 -49
- data/ruby/trema/shell/run.rb +0 -67
- data/ruby/trema/shell/send_packets.rb +0 -40
- data/ruby/trema/shell/show_stats.rb +0 -47
- data/ruby/trema/shell/up.rb +0 -41
- data/ruby/trema/shell/vhost.rb +0 -42
- data/ruby/trema/shell/vswitch.rb +0 -47
- data/ruby/trema/stats-helper.rb +0 -63
- data/ruby/trema/stats-reply.c +0 -540
- data/ruby/trema/stats-reply.h +0 -51
- data/ruby/trema/stats-request.c +0 -715
- data/ruby/trema/stats-request.h +0 -40
- data/ruby/trema/strip-vlan-header.rb +0 -41
- data/ruby/trema/switch-daemon.rb +0 -90
- data/ruby/trema/switch-disconnected.c +0 -38
- data/ruby/trema/switch-disconnected.h +0 -36
- data/ruby/trema/switch-event.c +0 -648
- data/ruby/trema/switch-event.h +0 -27
- data/ruby/trema/switch-manager.rb +0 -119
- data/ruby/trema/switch.c +0 -197
- data/ruby/trema/switch.h +0 -40
- data/ruby/trema/switch.rb +0 -56
- data/ruby/trema/table-stats-reply.rb +0 -85
- data/ruby/trema/timers.rb +0 -95
- data/ruby/trema/trema-ruby-utils.c +0 -66
- data/ruby/trema/trema-ruby-utils.h +0 -42
- data/ruby/trema/trema.c +0 -126
- data/ruby/trema/tremashark.rb +0 -46
- data/ruby/trema/util.rb +0 -116
- data/ruby/trema/vendor-action.rb +0 -82
- data/ruby/trema/vendor-stats-reply.rb +0 -64
- data/ruby/trema/vendor.c +0 -230
- data/ruby/trema/vendor.h +0 -48
- data/ruby/trema/version.rb +0 -28
- data/spec/support/action.rb +0 -49
- data/spec/support/mandatory-option.rb +0 -53
- data/spec/support/matchers/constant.rb +0 -25
- data/spec/support/openflow-message.rb +0 -173
- data/spec/support/port-status.rb +0 -35
- data/spec/trema/app_spec.rb +0 -88
- data/spec/trema/barrier-reply_spec.rb +0 -43
- data/spec/trema/barrier-request_spec.rb +0 -92
- data/spec/trema/cli_spec.rb +0 -156
- data/spec/trema/default-logger_spec.rb +0 -46
- data/spec/trema/dsl/configuration_spec.rb +0 -120
- data/spec/trema/dsl/link_spec.rb +0 -50
- data/spec/trema/dsl/run_spec.rb +0 -72
- data/spec/trema/dsl/runner_spec.rb +0 -247
- data/spec/trema/dsl/switch_spec.rb +0 -69
- data/spec/trema/dsl/syntax_spec.rb +0 -110
- data/spec/trema/dsl/vhost_spec.rb +0 -144
- data/spec/trema/dsl/vswitch_spec.rb +0 -80
- data/spec/trema/echo-reply_spec.rb +0 -84
- data/spec/trema/echo-request_spec.rb +0 -128
- data/spec/trema/enqueue_spec.rb +0 -76
- data/spec/trema/error_spec.rb +0 -81
- data/spec/trema/executables_spec.rb +0 -54
- data/spec/trema/features-reply_spec.rb +0 -91
- data/spec/trema/features-request_spec.rb +0 -93
- data/spec/trema/flow-mod_spec.rb +0 -99
- data/spec/trema/flow-removed_spec.rb +0 -144
- data/spec/trema/get-config-reply_spec.rb +0 -43
- data/spec/trema/get-config-request_spec.rb +0 -92
- data/spec/trema/hardware-switch_spec.rb +0 -54
- data/spec/trema/hello_spec.rb +0 -63
- data/spec/trema/host_spec.rb +0 -191
- data/spec/trema/link_spec.rb +0 -62
- data/spec/trema/list-switches-reply_spec.rb +0 -46
- data/spec/trema/match_spec.rb +0 -111
- data/spec/trema/open-vswitch_spec.rb +0 -121
- data/spec/trema/openflow-error_spec.rb +0 -141
- data/spec/trema/packet-in_spec.rb +0 -717
- data/spec/trema/packet-out_spec.rb +0 -125
- data/spec/trema/packetin-filter_spec.rb +0 -39
- data/spec/trema/port-mod_spec.rb +0 -98
- data/spec/trema/port-status-add_spec.rb +0 -32
- data/spec/trema/port-status-delete_spec.rb +0 -32
- data/spec/trema/port-status-modify_spec.rb +0 -71
- data/spec/trema/port-status_spec.rb +0 -38
- data/spec/trema/port_spec.rb +0 -59
- data/spec/trema/process_spec.rb +0 -69
- data/spec/trema/queue-get-config-reply_spec.rb +0 -65
- data/spec/trema/queue-get-config-request_spec.rb +0 -67
- data/spec/trema/send-out-port_spec.rb +0 -106
- data/spec/trema/set-config_spec.rb +0 -78
- data/spec/trema/set-eth-addr_spec.rb +0 -62
- data/spec/trema/set-ip-addr_spec.rb +0 -81
- data/spec/trema/set-ip-tos_spec.rb +0 -70
- data/spec/trema/set-transport-dst-port_spec.rb +0 -65
- data/spec/trema/set-transport-src-port_spec.rb +0 -65
- data/spec/trema/set-vlan-priority_spec.rb +0 -65
- data/spec/trema/set-vlan-vid_spec.rb +0 -65
- data/spec/trema/shell/vhost_spec.rb +0 -58
- data/spec/trema/shell/vswitch_spec.rb +0 -87
- data/spec/trema/stats-reply_spec.rb +0 -363
- data/spec/trema/stats-request_spec.rb +0 -166
- data/spec/trema/strip-vlan-header_spec.rb +0 -44
- data/spec/trema/switch-daemon_spec.rb +0 -81
- data/spec/trema/switch-disconnected_spec.rb +0 -56
- data/spec/trema/switch-manager_spec.rb +0 -41
- data/spec/trema/tremashark_spec.rb +0 -39
- data/spec/trema/util_spec.rb +0 -88
- data/spec/trema/vendor-action_spec.rb +0 -75
- data/spec/trema/vendor_spec.rb +0 -76
- data/spec/trema_spec.rb +0 -94
- data/src/examples/cbench_switch/README +0 -21
- data/src/examples/cbench_switch/cbench-switch.rb +0 -38
- data/src/examples/cbench_switch/cbench_switch.c +0 -66
- data/src/examples/dumper/dumper.c +0 -362
- data/src/examples/dumper/dumper.conf +0 -7
- data/src/examples/dumper/dumper.rb +0 -195
- data/src/examples/hello_trema/.gitignore +0 -2
- data/src/examples/hello_trema/README.md +0 -2
- data/src/examples/hello_trema/hello-trema.rb +0 -30
- data/src/examples/hello_trema/hello_trema.c +0 -48
- data/src/examples/hello_trema/sample.conf +0 -1
- data/src/examples/learning_switch/README +0 -15
- data/src/examples/learning_switch/fdb.rb +0 -110
- data/src/examples/learning_switch/learning-switch.rb +0 -90
- data/src/examples/learning_switch/learning_switch.c +0 -217
- data/src/examples/learning_switch/learning_switch.conf +0 -18
- data/src/examples/list_switches/README +0 -19
- data/src/examples/list_switches/list-switches.rb +0 -43
- data/src/examples/list_switches/list_switches.c +0 -79
- data/src/examples/list_switches/list_switches.conf +0 -15
- data/src/examples/match_compare/match-compare.conf +0 -30
- data/src/examples/match_compare/match-compare.rb +0 -97
- data/src/examples/multi_learning_switch/README +0 -14
- data/src/examples/multi_learning_switch/multi-learning-switch.rb +0 -94
- data/src/examples/multi_learning_switch/multi_learning_switch.c +0 -294
- data/src/examples/multi_learning_switch/multi_learning_switch.conf +0 -17
- data/src/examples/openflow_message/README +0 -11
- data/src/examples/openflow_message/echo.c +0 -80
- data/src/examples/openflow_message/echo.rb +0 -56
- data/src/examples/openflow_message/example.rb +0 -60
- data/src/examples/openflow_message/features-request.rb +0 -96
- data/src/examples/openflow_message/features_request.c +0 -167
- data/src/examples/openflow_message/hello.c +0 -68
- data/src/examples/openflow_message/hello.rb +0 -43
- data/src/examples/openflow_message/set-config.rb +0 -57
- data/src/examples/openflow_message/set_config.c +0 -68
- data/src/examples/openflow_message/vendor-action.rb +0 -43
- data/src/examples/openflow_message/vendor-stats-request.rb +0 -66
- data/src/examples/openflow_message/vendor_action.c +0 -103
- data/src/examples/openflow_switch/echo_switch.c +0 -89
- data/src/examples/openflow_switch/hello_switch.c +0 -85
- data/src/examples/packet_in/README +0 -15
- data/src/examples/packet_in/packet-in.rb +0 -37
- data/src/examples/packet_in/packet_in.c +0 -53
- data/src/examples/packet_in/packet_in.conf +0 -15
- data/src/examples/packetin_filter_config/README +0 -12
- data/src/examples/packetin_filter_config/add_filter.c +0 -71
- data/src/examples/packetin_filter_config/delete_filter.c +0 -63
- data/src/examples/packetin_filter_config/delete_filter_strict.c +0 -73
- data/src/examples/packetin_filter_config/dump_filter.c +0 -63
- data/src/examples/packetin_filter_config/dump_filter_strict.c +0 -73
- data/src/examples/packetin_filter_config/packetin_filter_config.c +0 -132
- data/src/examples/packetin_filter_config/packetin_filter_config.conf +0 -7
- data/src/examples/packetin_filter_config/utils.c +0 -100
- data/src/examples/packetin_filter_config/utils.h +0 -40
- data/src/examples/patch_panel/network.conf +0 -14
- data/src/examples/patch_panel/patch-panel.conf +0 -1
- data/src/examples/patch_panel/patch-panel.rb +0 -59
- data/src/examples/repeater_hub/README +0 -8
- data/src/examples/repeater_hub/repeater-hub.rb +0 -41
- data/src/examples/repeater_hub/repeater-hub_spec.rb +0 -154
- data/src/examples/repeater_hub/repeater_hub.c +0 -81
- data/src/examples/repeater_hub/repeater_hub.conf +0 -28
- data/src/examples/simple_router/README +0 -18
- data/src/examples/simple_router/arp-table.rb +0 -81
- data/src/examples/simple_router/interface.rb +0 -90
- data/src/examples/simple_router/routing-table.rb +0 -60
- data/src/examples/simple_router/simple-router.rb +0 -191
- data/src/examples/simple_router/simple_router.conf +0 -24
- data/src/examples/simple_router/simple_router_netns.conf +0 -15
- data/src/examples/simple_router/simple_router_network.conf +0 -6
- data/src/examples/switch_event_config/.gitignore +0 -6
- data/src/examples/switch_event_config/add_forward_entry.c +0 -227
- data/src/examples/switch_event_config/delete_forward_entry.c +0 -226
- data/src/examples/switch_event_config/dump_forward_entries.c +0 -190
- data/src/examples/switch_event_config/network.conf +0 -2
- data/src/examples/switch_event_config/set_forward_entries.c +0 -210
- data/src/examples/switch_info/README +0 -13
- data/src/examples/switch_info/switch-info.rb +0 -44
- data/src/examples/switch_info/switch_info.c +0 -78
- data/src/examples/switch_info/switch_info.conf +0 -3
- data/src/examples/switch_monitor/switch-monitor.conf +0 -3
- data/src/examples/switch_monitor/switch-monitor.rb +0 -56
- data/src/examples/switch_monitor/switch_monitor.c +0 -152
- data/src/examples/traffic_monitor/counter.c +0 -72
- data/src/examples/traffic_monitor/counter.h +0 -46
- data/src/examples/traffic_monitor/counter.rb +0 -44
- data/src/examples/traffic_monitor/fdb.c +0 -74
- data/src/examples/traffic_monitor/fdb.h +0 -48
- data/src/examples/traffic_monitor/fdb.rb +0 -42
- data/src/examples/traffic_monitor/traffic-monitor.rb +0 -98
- data/src/examples/traffic_monitor/traffic_monitor.c +0 -161
- data/src/examples/traffic_monitor/traffic_monitor.conf +0 -16
- data/src/examples/transparent_firewall/README.md +0 -61
- data/src/examples/transparent_firewall/aggregated-delegated-afrinic.txt +0 -713
- data/src/examples/transparent_firewall/aggregated-delegated-apnic.txt +0 -3440
- data/src/examples/transparent_firewall/aggregated-delegated-arin.txt +0 -11342
- data/src/examples/transparent_firewall/aggregated-delegated-lacnic.txt +0 -1937
- data/src/examples/transparent_firewall/aggregated-delegated-ripencc.txt +0 -7329
- data/src/examples/transparent_firewall/block-rfc1918.rb +0 -86
- data/src/examples/transparent_firewall/pass-delegated.rb +0 -178
- data/src/examples/transparent_firewall/regen_aggregated.sh +0 -53
- data/src/examples/transparent_firewall/stats-to-cidrs.rb +0 -59
- data/src/lib/arp.h +0 -64
- data/src/lib/bool.h +0 -47
- data/src/lib/buffer.c +0 -304
- data/src/lib/buffer.h +0 -54
- data/src/lib/byteorder.c +0 -571
- data/src/lib/byteorder.h +0 -108
- data/src/lib/checks.h +0 -40
- data/src/lib/chibach.c +0 -392
- data/src/lib/chibach.h +0 -69
- data/src/lib/chibach_private.c +0 -168
- data/src/lib/chibach_private.h +0 -50
- data/src/lib/daemon.c +0 -429
- data/src/lib/daemon.h +0 -40
- data/src/lib/doubly_linked_list.c +0 -284
- data/src/lib/doubly_linked_list.h +0 -86
- data/src/lib/ether.c +0 -47
- data/src/lib/ether.h +0 -92
- data/src/lib/etherip.h +0 -44
- data/src/lib/event_forward_interface.c +0 -788
- data/src/lib/event_forward_interface.h +0 -138
- data/src/lib/event_handler.c +0 -419
- data/src/lib/event_handler.h +0 -57
- data/src/lib/external_callback.c +0 -126
- data/src/lib/external_callback.h +0 -46
- data/src/lib/hash_table.c +0 -415
- data/src/lib/hash_table.h +0 -136
- data/src/lib/icmp.h +0 -72
- data/src/lib/igmp.h +0 -48
- data/src/lib/ipv4.h +0 -64
- data/src/lib/ipv6.h +0 -46
- data/src/lib/linked_list.c +0 -244
- data/src/lib/linked_list.h +0 -84
- data/src/lib/log.c +0 -636
- data/src/lib/log.h +0 -77
- data/src/lib/management_interface.c +0 -359
- data/src/lib/management_interface.h +0 -40
- data/src/lib/management_service_interface.c +0 -102
- data/src/lib/management_service_interface.h +0 -134
- data/src/lib/match.h +0 -82
- data/src/lib/match_table.c +0 -606
- data/src/lib/match_table.h +0 -49
- data/src/lib/message_queue.c +0 -143
- data/src/lib/message_queue.h +0 -59
- data/src/lib/messenger.c +0 -1821
- data/src/lib/messenger.h +0 -145
- data/src/lib/openflow_application_interface.c +0 -1800
- data/src/lib/openflow_application_interface.h +0 -359
- data/src/lib/openflow_message.c +0 -4240
- data/src/lib/openflow_message.h +0 -291
- data/src/lib/openflow_service_interface.h +0 -58
- data/src/lib/openflow_switch_interface.c +0 -1378
- data/src/lib/openflow_switch_interface.h +0 -262
- data/src/lib/packet_info.c +0 -336
- data/src/lib/packet_info.h +0 -233
- data/src/lib/packet_parser.c +0 -522
- data/src/lib/packetin_filter_interface.c +0 -292
- data/src/lib/packetin_filter_interface.h +0 -125
- data/src/lib/persistent_storage.c +0 -478
- data/src/lib/persistent_storage.h +0 -44
- data/src/lib/secure_channel.c +0 -496
- data/src/lib/secure_channel.h +0 -43
- data/src/lib/stat.c +0 -248
- data/src/lib/stat.h +0 -51
- data/src/lib/tcp.h +0 -62
- data/src/lib/timer.c +0 -349
- data/src/lib/timer.h +0 -51
- data/src/lib/trema.c +0 -776
- data/src/lib/trema.h +0 -80
- data/src/lib/trema.hpp +0 -49
- data/src/lib/trema_private.c +0 -175
- data/src/lib/trema_private.h +0 -64
- data/src/lib/trema_wrapper.c +0 -59
- data/src/lib/trema_wrapper.h +0 -66
- data/src/lib/udp.h +0 -41
- data/src/lib/utility.c +0 -625
- data/src/lib/utility.h +0 -84
- data/src/lib/wrapper.c +0 -121
- data/src/lib/wrapper.h +0 -76
- data/src/management/application.c +0 -222
- data/src/management/echo.c +0 -183
- data/src/management/set_logging_level.c +0 -151
- data/src/management/show_stats.c +0 -148
- data/src/management/trema_manager +0 -184
- data/src/packetin_filter/README +0 -17
- data/src/packetin_filter/packetin_filter.c +0 -575
- data/src/switch_manager/README +0 -20
- data/src/switch_manager/cookie_table.c +0 -290
- data/src/switch_manager/cookie_table.h +0 -70
- data/src/switch_manager/dpid_table.c +0 -108
- data/src/switch_manager/dpid_table.h +0 -43
- data/src/switch_manager/event_forward_entry_manipulation.c +0 -120
- data/src/switch_manager/event_forward_entry_manipulation.h +0 -31
- data/src/switch_manager/ofpmsg_recv.c +0 -497
- data/src/switch_manager/ofpmsg_recv.h +0 -39
- data/src/switch_manager/ofpmsg_send.c +0 -274
- data/src/switch_manager/ofpmsg_send.h +0 -51
- data/src/switch_manager/secure_channel_listener.c +0 -296
- data/src/switch_manager/secure_channel_listener.h +0 -40
- data/src/switch_manager/secure_channel_receiver.c +0 -129
- data/src/switch_manager/secure_channel_receiver.h +0 -40
- data/src/switch_manager/secure_channel_sender.c +0 -131
- data/src/switch_manager/secure_channel_sender.h +0 -41
- data/src/switch_manager/service_interface.c +0 -180
- data/src/switch_manager/service_interface.h +0 -44
- data/src/switch_manager/switch.c +0 -988
- data/src/switch_manager/switch.h +0 -50
- data/src/switch_manager/switch_manager.c +0 -643
- data/src/switch_manager/switch_manager.h +0 -65
- data/src/switch_manager/switch_option.c +0 -30
- data/src/switch_manager/switch_option.h +0 -41
- data/src/switch_manager/switchinfo.h +0 -81
- data/src/switch_manager/xid_table.c +0 -182
- data/src/switch_manager/xid_table.h +0 -53
- data/src/tremashark/README +0 -79
- data/src/tremashark/packet_capture.c +0 -358
- data/src/tremashark/pcap_private.h +0 -45
- data/src/tremashark/pcap_queue.c +0 -195
- data/src/tremashark/pcap_queue.h +0 -56
- data/src/tremashark/plugin/.gitignore +0 -6
- data/src/tremashark/plugin/packet-trema/.gitignore +0 -5
- data/src/tremashark/plugin/packet-trema/Makefile +0 -77
- data/src/tremashark/plugin/packet-trema/Makefile.am +0 -110
- data/src/tremashark/plugin/packet-trema/Makefile.common +0 -29
- data/src/tremashark/plugin/packet-trema/moduleinfo.h +0 -39
- data/src/tremashark/plugin/packet-trema/packet-trema.c +0 -1671
- data/src/tremashark/plugin/packet-trema/plugin.c +0 -31
- data/src/tremashark/plugin/user_dlts +0 -2
- data/src/tremashark/queue.c +0 -167
- data/src/tremashark/queue.h +0 -58
- data/src/tremashark/stdin_relay.c +0 -257
- data/src/tremashark/syslog_relay.c +0 -247
- data/src/tremashark/tremashark.c +0 -554
- data/trema +0 -11
- data/trema-config +0 -11
- data/unittests/buffer_stubs.c +0 -72
- data/unittests/cmockery_trema.c +0 -121
- data/unittests/cmockery_trema.h +0 -95
- data/unittests/lib/buffer_test.c +0 -368
- data/unittests/lib/byteorder_test.c +0 -1798
- data/unittests/lib/daemon_test.c +0 -804
- data/unittests/lib/doubly_linked_list_test.c +0 -348
- data/unittests/lib/ether_test.c +0 -125
- data/unittests/lib/event_forward_interface_test.c +0 -1676
- data/unittests/lib/external_callback_test.c +0 -282
- data/unittests/lib/hash_table_test.c +0 -278
- data/unittests/lib/linked_list_test.c +0 -434
- data/unittests/lib/log_test.c +0 -672
- data/unittests/lib/management_interface_test.c +0 -238
- data/unittests/lib/management_service_interface_test.c +0 -317
- data/unittests/lib/match_table_test.c +0 -1507
- data/unittests/lib/message_queue_test.c +0 -381
- data/unittests/lib/messenger_test.c +0 -623
- data/unittests/lib/openflow_application_interface_test.c +0 -3713
- data/unittests/lib/openflow_message_test.c +0 -8047
- data/unittests/lib/packet_info_test.c +0 -558
- data/unittests/lib/packet_parser_test.c +0 -784
- data/unittests/lib/packetin_filter_interface_test.c +0 -721
- data/unittests/lib/persistent_storage_test.c +0 -800
- data/unittests/lib/stat_test.c +0 -433
- data/unittests/lib/test_packets/arp_rep.cap +0 -0
- data/unittests/lib/test_packets/arp_req.cap +0 -0
- data/unittests/lib/test_packets/icmp6_echo_rep.cap +0 -0
- data/unittests/lib/test_packets/icmp6_echo_req.cap +0 -0
- data/unittests/lib/test_packets/icmp_echo_rep.cap +0 -0
- data/unittests/lib/test_packets/icmp_echo_req.cap +0 -0
- data/unittests/lib/test_packets/igmp_query_v2.cap +0 -0
- data/unittests/lib/test_packets/ipx.cap +0 -0
- data/unittests/lib/test_packets/lldp.cap +0 -0
- data/unittests/lib/test_packets/lldp_over_ip.cap +0 -0
- data/unittests/lib/test_packets/rarp_req.cap +0 -0
- data/unittests/lib/test_packets/tcp.cap +0 -0
- data/unittests/lib/test_packets/tcp_syn.cap +0 -0
- data/unittests/lib/test_packets/udp.cap +0 -0
- data/unittests/lib/test_packets/udp_frag_head.cap +0 -0
- data/unittests/lib/test_packets/udp_frag_next.cap +0 -0
- data/unittests/lib/test_packets/vtag_icmp_echo_rep.cap +0 -0
- data/unittests/lib/test_packets/vtag_icmp_echo_req.cap +0 -0
- data/unittests/lib/timer_test.c +0 -246
- data/unittests/lib/trema_private_test.c +0 -321
- data/unittests/lib/trema_test.c +0 -1030
- data/unittests/lib/utility_test.c +0 -711
- data/unittests/lib/wrapper_test.c +0 -228
- data/unittests/packetin_filter/packetin_filter_test.c +0 -476
- data/unittests/switch_manager/switch_manager_test.c +0 -1183
- data/unittests/wrapper_stubs.c +0 -37
- data/vendor/.gitignore +0 -6
- data/vendor/README.md +0 -29
- data/vendor/cmockery-20110428.tar.gz +0 -0
- data/vendor/oflops-0.03.trema1.tar.gz +0 -0
- data/vendor/oflops_no_snmp+1.0.0.diff +0 -340
- data/vendor/openflow-1.0.0.tar.gz +0 -0
- data/vendor/openflow.git.tar.gz +0 -0
- data/vendor/openvswitch-1.2.2.trema1.tar.gz +0 -0
- data/vendor/openvswitch-1.2.2_librt-check.diff +0 -21
- data/vendor/packet-openflow.diff +0 -13
- data/vendor/ruby-ifconfig-1.2/COPYING +0 -340
- data/vendor/ruby-ifconfig-1.2/Changelog +0 -16
- data/vendor/ruby-ifconfig-1.2/INSTALL +0 -239
- data/vendor/ruby-ifconfig-1.2/README +0 -38
- data/vendor/ruby-ifconfig-1.2/Rakefile +0 -14
- data/vendor/ruby-ifconfig-1.2/TODO +0 -8
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/darwin.txt +0 -17
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/dragonflybsd.txt +0 -10
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/dragonflybsd_netstat.txt +0 -14
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/freebsd.txt +0 -17
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/freebsd_netstat.txt +0 -24
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/linux.txt +0 -60
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/linux_ethernet.txt +0 -20
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/netbsd.txt +0 -10
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/openbsd.txt +0 -36
- data/vendor/ruby-ifconfig-1.2/ifconfig_examples/sunos.txt +0 -10
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig.rb +0 -71
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/bsd/ifconfig.rb +0 -72
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/bsd/interface_types.rb +0 -69
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/bsd/network_types.rb +0 -3
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/common/ifconfig.rb +0 -84
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/common/interface_types.rb +0 -130
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/common/network_types.rb +0 -49
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/linux/ifconfig.rb +0 -43
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/linux/interface_types.rb +0 -112
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/linux/network_types.rb +0 -55
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/sunos/ifconfig.rb +0 -38
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/sunos/interface_types.rb +0 -77
- data/vendor/ruby-ifconfig-1.2/lib/ifconfig/sunos/network_types.rb +0 -4
- data/vendor/ruby-ifconfig-1.2/setup.rb +0 -1306
- data/vendor/ruby-ifconfig-1.2/test/test_bsd.rb +0 -35
- data/vendor/ruby-ifconfig-1.2/test/test_darwin.rb +0 -33
- data/vendor/ruby-ifconfig-1.2/test/test_dragonflybsd.rb +0 -35
- data/vendor/ruby-ifconfig-1.2/test/test_helper.rb +0 -4
- data/vendor/ruby-ifconfig-1.2/test/test_linux.rb +0 -31
- data/vendor/ruby-ifconfig-1.2/test/test_netbsd.rb +0 -33
- data/vendor/ruby-ifconfig-1.2/test/test_openbsd.rb +0 -33
- data/vendor/ruby-ifconfig-1.2/test/test_sunos.rb +0 -35
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_darwin.rb +0 -40
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_dragonflybsd.rb +0 -39
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_freebsd.rb +0 -40
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_linux.rb +0 -49
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_netbsd.rb +0 -39
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_openbsd.rb +0 -39
- data/vendor/ruby-ifconfig-1.2/test/unit/tc_sunos.rb +0 -44
data/src/lib/chibach.h
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Chibach common functions.
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2008-2013 NEC Corporation
|
|
5
|
-
*
|
|
6
|
-
* This program is free software; you can redistribute it and/or modify
|
|
7
|
-
* it under the terms of the GNU General Public License, version 2, as
|
|
8
|
-
* published by the Free Software Foundation.
|
|
9
|
-
*
|
|
10
|
-
* This program is distributed in the hope that it will be useful,
|
|
11
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
-
* GNU General Public License for more details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU General Public License along
|
|
16
|
-
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
17
|
-
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
#ifndef CHIBACH_H
|
|
22
|
-
#define CHIBACH_H
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
#include "bool.h"
|
|
26
|
-
#include "buffer.h"
|
|
27
|
-
#include "byteorder.h"
|
|
28
|
-
#include "checks.h"
|
|
29
|
-
#include "doubly_linked_list.h"
|
|
30
|
-
#include "ether.h"
|
|
31
|
-
#include "event_handler.h"
|
|
32
|
-
#include "hash_table.h"
|
|
33
|
-
#include "linked_list.h"
|
|
34
|
-
#include "log.h"
|
|
35
|
-
#include "match.h"
|
|
36
|
-
#include "match_table.h"
|
|
37
|
-
#include "message_queue.h"
|
|
38
|
-
#include "messenger.h"
|
|
39
|
-
#include "openflow_service_interface.h"
|
|
40
|
-
#include "openflow_switch_interface.h"
|
|
41
|
-
#include "openflow_message.h"
|
|
42
|
-
#include "packet_info.h"
|
|
43
|
-
#include "stat.h"
|
|
44
|
-
#include "timer.h"
|
|
45
|
-
#include "utility.h"
|
|
46
|
-
#include "wrapper.h"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
void init_chibach( int *argc, char ***argv );
|
|
50
|
-
void start_chibach( void );
|
|
51
|
-
void stop_chibach( void );
|
|
52
|
-
void flush( void );
|
|
53
|
-
const char *get_chibach_home( void );
|
|
54
|
-
const char *get_chibach_tmp( void );
|
|
55
|
-
const char *get_chibach_name( void );
|
|
56
|
-
void set_chibach_name( const char *name );
|
|
57
|
-
__attribute__( ( weak ) ) void usage( void );
|
|
58
|
-
uint64_t get_datapath_id( void );
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
#endif // CHIBACH_H
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
/*
|
|
65
|
-
* Local variables:
|
|
66
|
-
* c-basic-offset: 2
|
|
67
|
-
* indent-tabs-mode: nil
|
|
68
|
-
* End:
|
|
69
|
-
*/
|
data/src/lib/chibach_private.c
DELETED
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2008-2013 NEC Corporation
|
|
3
|
-
*
|
|
4
|
-
* This program is free software; you can redistribute it and/or modify
|
|
5
|
-
* it under the terms of the GNU General Public License, version 2, as
|
|
6
|
-
* published by the Free Software Foundation.
|
|
7
|
-
*
|
|
8
|
-
* This program is distributed in the hope that it will be useful,
|
|
9
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
-
* GNU General Public License for more details.
|
|
12
|
-
*
|
|
13
|
-
* You should have received a copy of the GNU General Public License along
|
|
14
|
-
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
15
|
-
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
#include <assert.h>
|
|
20
|
-
#include <errno.h>
|
|
21
|
-
#include <limits.h>
|
|
22
|
-
#include <stdint.h>
|
|
23
|
-
#include <stdio.h>
|
|
24
|
-
#include <stdlib.h>
|
|
25
|
-
#include <string.h>
|
|
26
|
-
#include "bool.h"
|
|
27
|
-
#include "chibach_private.h"
|
|
28
|
-
#include "log.h"
|
|
29
|
-
#include "trema_wrapper.h"
|
|
30
|
-
#include "wrapper.h"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
static const char CHIBACH_HOME[] = "CHIBACH_HOME";
|
|
34
|
-
static const char CHIBACH_TMP[] = "CHIBACH_TMP";
|
|
35
|
-
static char *chibach_home = NULL;
|
|
36
|
-
static char *chibach_tmp = NULL;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
static bool
|
|
40
|
-
expand( const char *path, char *absolute_path ) {
|
|
41
|
-
assert( path != NULL );
|
|
42
|
-
assert( absolute_path != NULL );
|
|
43
|
-
|
|
44
|
-
char buf[ 256 ];
|
|
45
|
-
char *result = realpath( path, absolute_path );
|
|
46
|
-
if ( result == NULL ) {
|
|
47
|
-
trema_fprintf( stderr, "Could not get the absolute path of %s: %s.\n", path, strerror_r( errno, buf, sizeof( buf ) ) );
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return true;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Sets chibach home directory for your chibach session.
|
|
57
|
-
*/
|
|
58
|
-
void
|
|
59
|
-
set_chibach_home( void ) {
|
|
60
|
-
if ( getenv( CHIBACH_HOME ) == NULL ) {
|
|
61
|
-
setenv( CHIBACH_HOME, "/", 1 );
|
|
62
|
-
chibach_home = xstrdup( "/" );
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
char absolute_path[ PATH_MAX ];
|
|
66
|
-
if ( !expand( getenv( CHIBACH_HOME ), absolute_path ) ) {
|
|
67
|
-
trema_fprintf( stderr, "Falling back CHIBACH_HOME to \"/\".\n" );
|
|
68
|
-
strncpy( absolute_path, "/", 2 );
|
|
69
|
-
}
|
|
70
|
-
setenv( CHIBACH_HOME, absolute_path, 1 );
|
|
71
|
-
chibach_home = xstrdup( absolute_path );
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Returns chibach home directory used in your chibach session.
|
|
78
|
-
*/
|
|
79
|
-
const char *
|
|
80
|
-
get_chibach_home( void ) {
|
|
81
|
-
if ( chibach_home == NULL ) {
|
|
82
|
-
set_chibach_home();
|
|
83
|
-
}
|
|
84
|
-
return chibach_home;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Unsets chibach home directory used in your chibach session.
|
|
90
|
-
*/
|
|
91
|
-
void unset_chibach_home( void ) {
|
|
92
|
-
if ( chibach_home != NULL ) {
|
|
93
|
-
xfree( chibach_home );
|
|
94
|
-
chibach_home = NULL;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Sets temporary directory for your Chibach session.
|
|
101
|
-
*/
|
|
102
|
-
void
|
|
103
|
-
set_chibach_tmp( void ) {
|
|
104
|
-
char path[ PATH_MAX ];
|
|
105
|
-
|
|
106
|
-
if ( getenv( CHIBACH_TMP ) == NULL ) {
|
|
107
|
-
const char *chibach_home = get_chibach_home();
|
|
108
|
-
if ( chibach_home[ strlen( chibach_home ) - 1 ] == '/' ) {
|
|
109
|
-
snprintf( path, PATH_MAX, "%stmp", chibach_home );
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
snprintf( path, PATH_MAX, "%s/tmp", chibach_home );
|
|
113
|
-
}
|
|
114
|
-
path[ PATH_MAX - 1 ] = '\0';
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
if ( !expand( getenv( CHIBACH_TMP ), path ) ) {
|
|
118
|
-
trema_fprintf( stderr, "Falling back CHIBACH_TMP to \"/tmp\".\n" );
|
|
119
|
-
strncpy( path, "/tmp", 5 );
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
chibach_tmp = xstrdup( path );
|
|
124
|
-
setenv( CHIBACH_TMP, chibach_tmp, 1 );
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Returns temporary directory used in your Chibach session.
|
|
130
|
-
*/
|
|
131
|
-
const char *
|
|
132
|
-
get_chibach_tmp( void ) {
|
|
133
|
-
if ( chibach_tmp == NULL ) {
|
|
134
|
-
set_chibach_tmp();
|
|
135
|
-
}
|
|
136
|
-
return chibach_tmp;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Unsets temporary directory used in your Chibach session.
|
|
142
|
-
*/
|
|
143
|
-
void unset_chibach_tmp( void ) {
|
|
144
|
-
if ( chibach_tmp != NULL ) {
|
|
145
|
-
xfree( chibach_tmp );
|
|
146
|
-
chibach_tmp = NULL;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const char *
|
|
152
|
-
_get_chibach_home( void ) {
|
|
153
|
-
return chibach_home;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
const char *
|
|
158
|
-
_get_chibach_tmp( void ) {
|
|
159
|
-
return chibach_tmp;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
/*
|
|
164
|
-
* Local variables:
|
|
165
|
-
* c-basic-offset: 2
|
|
166
|
-
* indent-tabs-mode: nil
|
|
167
|
-
* End:
|
|
168
|
-
*/
|
data/src/lib/chibach_private.h
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Private functions that are only called from [chibach]/src/lib.
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2008-2013 NEC Corporation
|
|
5
|
-
*
|
|
6
|
-
* This program is free software; you can redistribute it and/or modify
|
|
7
|
-
* it under the terms of the GNU General Public License, version 2, as
|
|
8
|
-
* published by the Free Software Foundation.
|
|
9
|
-
*
|
|
10
|
-
* This program is distributed in the hope that it will be useful,
|
|
11
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
-
* GNU General Public License for more details.
|
|
14
|
-
*
|
|
15
|
-
* You should have received a copy of the GNU General Public License along
|
|
16
|
-
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
17
|
-
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
#ifndef CHIBACH_PRIVATE_H
|
|
22
|
-
#define CHIBACH_PRIVATE_H
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
#include "bool.h"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
void set_chibach_home( void );
|
|
29
|
-
const char *get_chibach_home( void );
|
|
30
|
-
void unset_chibach_home( void );
|
|
31
|
-
|
|
32
|
-
void set_chibach_tmp( void );
|
|
33
|
-
const char *get_chibach_tmp( void );
|
|
34
|
-
void unset_chibach_tmp( void );
|
|
35
|
-
|
|
36
|
-
const char *get_chibach_name( void );
|
|
37
|
-
|
|
38
|
-
const char *_get_chibach_home( void );
|
|
39
|
-
const char *_get_chibach_tmp( void );
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
#endif // CHIBACH_PRIVATE_H
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
/*
|
|
46
|
-
* Local variables:
|
|
47
|
-
* c-basic-offset: 2
|
|
48
|
-
* indent-tabs-mode: nil
|
|
49
|
-
* End:
|
|
50
|
-
*/
|
data/src/lib/daemon.c
DELETED
|
@@ -1,429 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2008-2013 NEC Corporation
|
|
3
|
-
*
|
|
4
|
-
* This program is free software; you can redistribute it and/or modify
|
|
5
|
-
* it under the terms of the GNU General Public License, version 2, as
|
|
6
|
-
* published by the Free Software Foundation.
|
|
7
|
-
*
|
|
8
|
-
* This program is distributed in the hope that it will be useful,
|
|
9
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
-
* GNU General Public License for more details.
|
|
12
|
-
*
|
|
13
|
-
* You should have received a copy of the GNU General Public License along
|
|
14
|
-
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
15
|
-
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
#include <assert.h>
|
|
20
|
-
#include <errno.h>
|
|
21
|
-
#include <fcntl.h>
|
|
22
|
-
#include <limits.h>
|
|
23
|
-
#include <signal.h>
|
|
24
|
-
#include <stdio.h>
|
|
25
|
-
#include <stdlib.h>
|
|
26
|
-
#include <string.h>
|
|
27
|
-
#include <sys/stat.h>
|
|
28
|
-
#include <unistd.h>
|
|
29
|
-
#include <getopt.h>
|
|
30
|
-
#include "checks.h"
|
|
31
|
-
#include "log.h"
|
|
32
|
-
#include "wrapper.h"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
#ifdef UNIT_TESTING
|
|
36
|
-
|
|
37
|
-
#define static
|
|
38
|
-
|
|
39
|
-
#ifdef die
|
|
40
|
-
#undef die
|
|
41
|
-
#endif
|
|
42
|
-
#define die mock_die
|
|
43
|
-
void mock_die( const char *format, ... );
|
|
44
|
-
|
|
45
|
-
#ifdef chdir
|
|
46
|
-
#undef chdir
|
|
47
|
-
#endif // chdir
|
|
48
|
-
#define chdir mock_chdir
|
|
49
|
-
extern int mock_chdir( const char *path );
|
|
50
|
-
|
|
51
|
-
#ifdef fork
|
|
52
|
-
#undef fork
|
|
53
|
-
#endif // fork
|
|
54
|
-
#define fork mock_fork
|
|
55
|
-
extern pid_t mock_fork( void );
|
|
56
|
-
|
|
57
|
-
#ifdef exit
|
|
58
|
-
#undef exit
|
|
59
|
-
#endif // exit
|
|
60
|
-
#define exit mock_exit
|
|
61
|
-
extern void mock_exit( int status );
|
|
62
|
-
|
|
63
|
-
#ifdef setsid
|
|
64
|
-
#undef setsid
|
|
65
|
-
#endif // setsid
|
|
66
|
-
#define setsid mock_setsid
|
|
67
|
-
extern pid_t mock_setsid( void );
|
|
68
|
-
|
|
69
|
-
#ifdef umask
|
|
70
|
-
#undef umask
|
|
71
|
-
#endif // umask
|
|
72
|
-
#define umask mock_umask
|
|
73
|
-
extern mode_t mock_umask( mode_t mask );
|
|
74
|
-
|
|
75
|
-
#ifdef open
|
|
76
|
-
#undef open
|
|
77
|
-
#endif // open
|
|
78
|
-
#define open mock_open
|
|
79
|
-
extern int mock_open( const char *pathname, int flags, mode_t mode );
|
|
80
|
-
|
|
81
|
-
#ifdef close
|
|
82
|
-
#undef close
|
|
83
|
-
#endif // close
|
|
84
|
-
#define close mock_close
|
|
85
|
-
extern int mock_close( int fd );
|
|
86
|
-
|
|
87
|
-
#ifdef lockf
|
|
88
|
-
#undef lockf
|
|
89
|
-
#endif // lockf
|
|
90
|
-
#define lockf mock_lockf
|
|
91
|
-
extern int mock_lockf( int fd, int cmd, off_t len );
|
|
92
|
-
|
|
93
|
-
#ifdef getpid
|
|
94
|
-
#undef getpid
|
|
95
|
-
#endif // getpid
|
|
96
|
-
#define getpid mock_getpid
|
|
97
|
-
extern pid_t mock_getpid( void );
|
|
98
|
-
|
|
99
|
-
#ifdef write
|
|
100
|
-
#undef write
|
|
101
|
-
#endif // write
|
|
102
|
-
#define write mock_write
|
|
103
|
-
extern ssize_t mock_write( int fd, const void *buf, size_t count );
|
|
104
|
-
|
|
105
|
-
#ifdef unlink
|
|
106
|
-
#undef unlink
|
|
107
|
-
#endif // unlink
|
|
108
|
-
#define unlink mock_unlink
|
|
109
|
-
extern int mock_unlink( const char *pathname );
|
|
110
|
-
|
|
111
|
-
#ifdef access
|
|
112
|
-
#undef access
|
|
113
|
-
#endif // access
|
|
114
|
-
#define access mock_access
|
|
115
|
-
extern int mock_access( const char *pathname, int mode );
|
|
116
|
-
|
|
117
|
-
#ifdef read
|
|
118
|
-
#undef read
|
|
119
|
-
#endif // read
|
|
120
|
-
#define read mock_read
|
|
121
|
-
extern ssize_t mock_read( int fd, void *buf, size_t count );
|
|
122
|
-
|
|
123
|
-
#ifdef kill
|
|
124
|
-
#undef kill
|
|
125
|
-
#endif // kill
|
|
126
|
-
#define kill mock_kill
|
|
127
|
-
extern int mock_kill( pid_t pid, int sig );
|
|
128
|
-
|
|
129
|
-
#ifdef readlink
|
|
130
|
-
#undef readlink
|
|
131
|
-
#endif // readlink
|
|
132
|
-
#define readlink mock_readlink
|
|
133
|
-
extern ssize_t mock_readlink( const char *path, char *buf, size_t bufsiz );
|
|
134
|
-
|
|
135
|
-
#ifdef basename
|
|
136
|
-
#undef basename
|
|
137
|
-
#endif // basename
|
|
138
|
-
#define basename mock_basename
|
|
139
|
-
extern char *mock_basename( char *path );
|
|
140
|
-
|
|
141
|
-
#ifdef warn
|
|
142
|
-
#undef warn
|
|
143
|
-
#endif // warn
|
|
144
|
-
#define warn mock_warn
|
|
145
|
-
extern void mock_warn( const char *format, ... );
|
|
146
|
-
|
|
147
|
-
#endif // UNIT_TESTING
|
|
148
|
-
|
|
149
|
-
static const char SWITCH_DAEMON[] = "switch.";
|
|
150
|
-
static const char SWITCH_DAEMON_EXE_NAME[] = "switch";
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
void
|
|
154
|
-
daemonize( const char *home ) {
|
|
155
|
-
assert( home != NULL );
|
|
156
|
-
|
|
157
|
-
char buf[ 256 ];
|
|
158
|
-
|
|
159
|
-
if ( chdir( home ) < 0 ) {
|
|
160
|
-
die( "Could not cd to %s: %s.", home, strerror_r( errno, buf, sizeof( buf ) ) );
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
pid_t pid = fork();
|
|
164
|
-
if ( pid < 0 ) {
|
|
165
|
-
die( "fork() failed: %s.", strerror_r( errno, buf, sizeof( buf ) ) );
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
if ( pid > 0 ) {
|
|
169
|
-
exit( EXIT_SUCCESS );
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
pid_t sid = setsid();
|
|
173
|
-
if ( sid < 0 ) {
|
|
174
|
-
die( "setsid() failed: %s.", strerror_r( errno, buf, sizeof( buf ) ) );
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
umask( 0 );
|
|
178
|
-
|
|
179
|
-
close( STDIN_FILENO );
|
|
180
|
-
close( STDOUT_FILENO );
|
|
181
|
-
close( STDERR_FILENO );
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
static const int PID_STRING_LENGTH = 10;
|
|
186
|
-
|
|
187
|
-
static int locked_fd = -1;
|
|
188
|
-
|
|
189
|
-
void
|
|
190
|
-
write_pid( const char *directory, const char *name ) {
|
|
191
|
-
assert( directory != NULL );
|
|
192
|
-
assert( name != NULL );
|
|
193
|
-
|
|
194
|
-
char path[ PATH_MAX ];
|
|
195
|
-
snprintf( path, PATH_MAX, "%s/%s.pid", directory, name );
|
|
196
|
-
path[ PATH_MAX - 1 ] = '\0';
|
|
197
|
-
|
|
198
|
-
if ( locked_fd > -1 ) {
|
|
199
|
-
close(locked_fd);
|
|
200
|
-
locked_fd = -1;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
locked_fd = open( path, O_RDWR | O_CREAT, 0600 );
|
|
204
|
-
if ( locked_fd == -1 ) {
|
|
205
|
-
die( "Could not create a PID file: %s", path );
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
if ( lockf( locked_fd, F_TLOCK, 0 ) == -1 ) {
|
|
209
|
-
die( "Could not acquire a lock on a PID file: %s", path );
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
char str[ PID_STRING_LENGTH ];
|
|
213
|
-
snprintf( str, sizeof( str ), "%d\n", getpid() );
|
|
214
|
-
str[ sizeof( str ) - 1 ] = '\0';
|
|
215
|
-
ssize_t ret = write( locked_fd, str, strlen( str ) );
|
|
216
|
-
if ( ret == -1 ) {
|
|
217
|
-
die( "Could not write a PID file: %s", path );
|
|
218
|
-
}
|
|
219
|
-
debug( "Write pid file ( file = %s, pid = %d )", path, getpid() );
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
void
|
|
224
|
-
unlink_pid( const char *directory, const char *name ) {
|
|
225
|
-
assert( directory != NULL );
|
|
226
|
-
assert( name != NULL );
|
|
227
|
-
|
|
228
|
-
char path[ PATH_MAX ];
|
|
229
|
-
snprintf( path, PATH_MAX, "%s/%s.pid", directory, name );
|
|
230
|
-
path[ PATH_MAX - 1 ] = '\0';
|
|
231
|
-
|
|
232
|
-
int fd = open( path, O_RDWR, 0 );
|
|
233
|
-
if ( fd < 0 ) {
|
|
234
|
-
debug( "Failed to open %s ( %s [%d] ).", path, strerror( errno ), errno );
|
|
235
|
-
return;
|
|
236
|
-
}
|
|
237
|
-
if ( lockf( fd, F_TLOCK, 0 ) == -1 ) {
|
|
238
|
-
warn( "PID file is locked by another process ( %s ).", path );
|
|
239
|
-
close( fd );
|
|
240
|
-
return;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
int ret = unlink( path );
|
|
244
|
-
if ( ret < 0 ) {
|
|
245
|
-
if ( errno == ENOENT ) {
|
|
246
|
-
warn( "PID file %s does not exist", path );
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
die( "Could not remove a PID file: %s", path );
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
debug( "Unlink pid file ( file = %s, pid = %d )", path, getpid() );
|
|
253
|
-
close( fd );
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
pid_t
|
|
258
|
-
read_pid( const char *directory, const char *name ) {
|
|
259
|
-
assert( directory != NULL );
|
|
260
|
-
assert( name != NULL );
|
|
261
|
-
|
|
262
|
-
char path[ PATH_MAX ];
|
|
263
|
-
snprintf( path, PATH_MAX, "%s/%s.pid", directory, name );
|
|
264
|
-
path[ PATH_MAX - 1 ] = '\0';
|
|
265
|
-
|
|
266
|
-
if ( access( path, R_OK ) < 0 ) {
|
|
267
|
-
return -1;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
int fd = open( path, O_RDONLY, 0 );
|
|
271
|
-
if ( fd < 0 ) {
|
|
272
|
-
warn( "Failed to open %s ( %s [%d] ).", path, strerror( errno ), errno );
|
|
273
|
-
return -1;
|
|
274
|
-
}
|
|
275
|
-
char str[ PID_STRING_LENGTH ];
|
|
276
|
-
ssize_t length = read( fd, str, sizeof( str ) - 1 );
|
|
277
|
-
if ( length < 0 ) {
|
|
278
|
-
warn( "Failed to read pid from %s ( %s [%d] ).", path, strerror( errno ), errno );
|
|
279
|
-
close( fd );
|
|
280
|
-
return -1;
|
|
281
|
-
}
|
|
282
|
-
str[ length ] = '\0';
|
|
283
|
-
if ( str[ length - 1 ] == '\n' ) {
|
|
284
|
-
str[ length - 1 ] = '\0';
|
|
285
|
-
}
|
|
286
|
-
close( fd );
|
|
287
|
-
|
|
288
|
-
char *endp = NULL;
|
|
289
|
-
pid_t pid = ( pid_t ) strtol( str, &endp, 0 );
|
|
290
|
-
if ( *endp != '\0' ) {
|
|
291
|
-
warn( "Invalid pid `%s'.", str );
|
|
292
|
-
return -1;
|
|
293
|
-
}
|
|
294
|
-
if ( pid <= 0 ) {
|
|
295
|
-
warn( "Invalid pid %d.", pid );
|
|
296
|
-
return -1;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
int ret = kill( pid, 0 );
|
|
300
|
-
if ( ret < 0 ) {
|
|
301
|
-
warn( "Failed to check process id %d ( %s [%d] ).", pid, strerror( errno ), errno );
|
|
302
|
-
if ( errno == ESRCH ) {
|
|
303
|
-
unlink( path );
|
|
304
|
-
}
|
|
305
|
-
return -1;
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
char proc_path[ 32 ];
|
|
309
|
-
char exe_path[ PATH_MAX ];
|
|
310
|
-
sprintf( proc_path, "/proc/%d/exe", pid );
|
|
311
|
-
ssize_t readsiz = readlink( proc_path, exe_path, sizeof( exe_path ) - 1 );
|
|
312
|
-
if ( readsiz == -1 ) {
|
|
313
|
-
warn( "Failed to check process id %d ( %s [%d] ).", pid, strerror( errno ), errno );
|
|
314
|
-
return -1;
|
|
315
|
-
}
|
|
316
|
-
exe_path[ readsiz ] = '\0';
|
|
317
|
-
|
|
318
|
-
char *exe_name = basename( exe_path );
|
|
319
|
-
if ( strcmp( name, exe_name ) == 0 ) {
|
|
320
|
-
return pid;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
if ( strncmp( name, SWITCH_DAEMON, strlen( SWITCH_DAEMON ) ) == 0 &&
|
|
324
|
-
strcmp( exe_name, SWITCH_DAEMON_EXE_NAME ) == 0 ) {
|
|
325
|
-
return pid;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
// check if -n (service_name) option is used
|
|
329
|
-
sprintf( proc_path, "/proc/%d/cmdline", pid );
|
|
330
|
-
fd = open( proc_path, O_RDONLY, 0 );
|
|
331
|
-
if ( fd < 0 ) {
|
|
332
|
-
warn( "Failed to open %s ( %s [%d] ).", proc_path, strerror( errno ), errno );
|
|
333
|
-
return -1;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
char *buffer = xcalloc( PATH_MAX + 2, sizeof( char ) );
|
|
337
|
-
char *write_head = buffer;
|
|
338
|
-
size_t buffer_left = PATH_MAX;
|
|
339
|
-
size_t read_byte = 0;
|
|
340
|
-
while ( ( readsiz = read( fd, write_head, buffer_left ) ) > 0 ) {
|
|
341
|
-
read_byte += ( size_t ) readsiz;
|
|
342
|
-
write_head += readsiz;
|
|
343
|
-
buffer_left = PATH_MAX - read_byte;
|
|
344
|
-
}
|
|
345
|
-
close( fd );
|
|
346
|
-
|
|
347
|
-
// convert cmdline to argv format
|
|
348
|
-
size_t argc = 0;
|
|
349
|
-
char **argv = xcalloc( 1, sizeof( char * ) );
|
|
350
|
-
|
|
351
|
-
char *token = buffer;
|
|
352
|
-
const char *buffer_end = buffer + read_byte;
|
|
353
|
-
while ( token <= buffer_end ) {
|
|
354
|
-
size_t token_len = strlen( token );
|
|
355
|
-
if ( token_len > 0 ) {
|
|
356
|
-
++argc;
|
|
357
|
-
char **new_argv = xmalloc( ( argc + 1 ) * sizeof( char * ) );
|
|
358
|
-
for ( size_t i = 0; i < argc - 1; ++i ) {
|
|
359
|
-
new_argv[ i ] = argv[ i ];
|
|
360
|
-
}
|
|
361
|
-
xfree( argv );
|
|
362
|
-
argv = new_argv;
|
|
363
|
-
argv[ argc - 1 ] = token;
|
|
364
|
-
argv[ argc ] = NULL;
|
|
365
|
-
}
|
|
366
|
-
else {
|
|
367
|
-
if ( *( token + 1 ) == '\0' ) {
|
|
368
|
-
// "\0\0", end of cmdline
|
|
369
|
-
break;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
token += token_len + 1;
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
const struct option long_options[] = {
|
|
376
|
-
{ "name", 1, NULL, 'n' },
|
|
377
|
-
{ NULL, 0, NULL, 0 },
|
|
378
|
-
};
|
|
379
|
-
const char short_options[] = "n:";
|
|
380
|
-
int c;
|
|
381
|
-
optind = 0;
|
|
382
|
-
opterr = 0;
|
|
383
|
-
const char *service_name = basename( argv[ 0 ] );
|
|
384
|
-
while ( ( c = getopt_long( ( int )argc, argv, short_options, long_options, NULL ) ) != -1 ){
|
|
385
|
-
switch ( c ) {
|
|
386
|
-
case 'n':
|
|
387
|
-
service_name = optarg;
|
|
388
|
-
break;
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
if ( strcmp( name, service_name ) == 0 ) {
|
|
393
|
-
xfree( argv );
|
|
394
|
-
xfree( buffer );
|
|
395
|
-
return pid;
|
|
396
|
-
}
|
|
397
|
-
else {
|
|
398
|
-
warn( "Failed to check process name %s.", name );
|
|
399
|
-
xfree( argv );
|
|
400
|
-
xfree( buffer );
|
|
401
|
-
return -1;
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
void
|
|
407
|
-
rename_pid( const char *directory, const char *old, const char *new ) {
|
|
408
|
-
assert( directory != NULL );
|
|
409
|
-
assert( old != NULL );
|
|
410
|
-
assert( new != NULL );
|
|
411
|
-
|
|
412
|
-
assert( locked_fd > -1 );
|
|
413
|
-
|
|
414
|
-
int old_locked_fd = locked_fd;
|
|
415
|
-
locked_fd = -1;
|
|
416
|
-
write_pid( directory, new );
|
|
417
|
-
unlink_pid( directory, old );
|
|
418
|
-
close( old_locked_fd );
|
|
419
|
-
|
|
420
|
-
debug( "Rename pid file ( old name = %s, new name = %s, pid = %d )", old, new, getpid() );
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
/*
|
|
425
|
-
* Local variables:
|
|
426
|
-
* c-basic-offset: 2
|
|
427
|
-
* indent-tabs-mode: nil
|
|
428
|
-
* End:
|
|
429
|
-
*/
|