trema 0.2.2.1 → 0.2.3
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/.gitmodules +3 -0
- data/.travis.yml +13 -0
- data/.yardopts +4 -0
- data/Gemfile +2 -3
- data/README.md +43 -97
- data/Rakefile +60 -4
- data/Rantfile +11 -10
- data/cruise.rb +4 -6
- data/features/example.packetin_filter_config.feature +10 -10
- data/features/example.switch_monitor.feature +14 -2
- data/features/step_definitions/kill_steps.rb +2 -2
- data/features/step_definitions/{off_steps.rb → killall_steps.rb} +2 -2
- data/features/step_definitions/misc_steps.rb +1 -1
- data/features/step_definitions/up_steps.rb +30 -0
- data/features/trema.feature +1 -0
- data/features/trema.run.feature +1 -0
- data/locale/README.ja.md +19 -0
- data/locale/ja/yard.po +3762 -0
- data/locale/yard.pot +3740 -0
- data/ruby/extconf.rb +4 -1
- data/ruby/trema/action-common.c +3 -17
- data/ruby/trema/action-common.h +3 -7
- data/ruby/trema/action.rb +33 -0
- data/ruby/trema/app.rb +1 -1
- data/ruby/trema/barrier-request.c +1 -0
- data/ruby/trema/command/run.rb +13 -9
- data/ruby/trema/command/usage.rb +1 -0
- data/ruby/trema/command/version.rb +1 -1
- data/ruby/trema/controller.c +133 -50
- data/ruby/trema/controller.rb +2 -2
- data/ruby/trema/desc-stats-reply.rb +77 -0
- data/ruby/trema/dsl/configuration.rb +3 -14
- data/ruby/trema/dsl/rswitch.rb +47 -0
- data/ruby/trema/dsl/runner.rb +4 -1
- data/ruby/trema/dsl/syntax.rb +11 -8
- data/ruby/trema/echo-reply.c +59 -45
- data/ruby/trema/echo-reply.h +1 -3
- data/ruby/trema/echo-request.c +49 -71
- data/ruby/trema/echo-request.h +0 -2
- data/ruby/trema/echo.c +99 -0
- data/ruby/trema/{action-enqueue.h → echo.h} +6 -7
- data/ruby/trema/enqueue.rb +87 -0
- data/ruby/trema/error.c +109 -104
- data/ruby/trema/error.h +0 -2
- data/ruby/trema/features-reply.c +89 -35
- data/ruby/trema/features-reply.h +0 -6
- data/ruby/trema/features-request.c +63 -37
- data/ruby/trema/features-request.h +0 -2
- data/ruby/trema/flow-mod.c +149 -0
- data/ruby/trema/{action-output.h → flow-mod.h} +6 -6
- data/ruby/trema/get-config-request.c +1 -0
- data/ruby/trema/hardware-switch.rb +88 -0
- data/ruby/trema/hello.c +55 -31
- data/ruby/trema/hello.h +0 -2
- data/ruby/trema/ip.rb +12 -2
- data/ruby/trema/logger.rb +29 -0
- data/ruby/trema/mac.rb +57 -36
- data/ruby/trema/match.c +7 -9
- data/ruby/trema/monkey-patch/integer/ranges.rb +0 -2
- data/ruby/trema/network-component.rb +1 -1
- data/ruby/trema/open-vswitch.rb +2 -2
- data/ruby/trema/openflow-switch.rb +3 -54
- data/ruby/trema/{packet_in.c → packet-in.c} +262 -175
- data/ruby/trema/{packet_in.h → packet-in.h} +0 -2
- data/ruby/trema/packet-queue.rb +4 -3
- data/ruby/trema/port-mod.c +8 -9
- data/ruby/trema/port-status-add.rb +60 -0
- data/ruby/trema/port-status-delete.rb +60 -0
- data/ruby/trema/port-status-modify.rb +60 -0
- data/ruby/trema/port-status.c +48 -15
- data/ruby/trema/port-status.h +6 -8
- data/ruby/trema/port.c +63 -8
- data/ruby/trema/queue-get-config-request.c +1 -0
- data/ruby/trema/ruby-switch.rb +62 -0
- data/ruby/trema/send-out-port.rb +97 -0
- data/ruby/trema/set-config.c +1 -0
- data/ruby/trema/set-eth-addr.rb +45 -0
- data/ruby/trema/set-eth-dst-addr.rb +54 -0
- data/ruby/trema/set-eth-src-addr.rb +54 -0
- data/ruby/trema/set-ip-addr.rb +47 -0
- data/ruby/trema/set-ip-dst-addr.rb +53 -0
- data/ruby/trema/set-ip-src-addr.rb +52 -0
- data/ruby/trema/set-ip-tos.rb +63 -0
- data/ruby/trema/set-transport-dst-port.rb +53 -0
- data/ruby/trema/set-transport-port.rb +52 -0
- data/ruby/trema/set-transport-src-port.rb +54 -0
- data/ruby/trema/set-vlan-priority.rb +65 -0
- data/ruby/trema/set-vlan-vid.rb +64 -0
- data/ruby/trema/shell/down.rb +1 -1
- data/ruby/trema/shell/link.rb +4 -4
- data/ruby/trema/shell/run.rb +8 -6
- data/ruby/trema/shell/up.rb +3 -3
- data/ruby/trema/stats-reply.c +27 -2
- data/ruby/trema/stats-request.c +64 -23
- data/ruby/trema/strip-vlan-header.rb +41 -0
- data/ruby/trema/switch.c +196 -0
- data/ruby/trema/{action-vendor.h → switch.h} +5 -7
- data/ruby/trema/switch.rb +28 -9
- data/ruby/trema/trema-ruby-utils.c +66 -0
- data/ruby/trema/{action-set-dl-src.h → trema-ruby-utils.h} +9 -11
- data/ruby/trema/trema.c +61 -61
- data/ruby/trema/vendor-action.rb +73 -0
- data/ruby/trema/vendor.c +121 -52
- data/ruby/trema/vendor.h +6 -10
- data/ruby/trema/version.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/support/action.rb +52 -0
- data/spec/support/mandatory-option.rb +56 -0
- data/spec/support/openflow-message.rb +91 -7
- data/spec/support/port-status.rb +38 -0
- data/spec/trema/controller_spec.rb +0 -26
- data/spec/trema/dsl/configuration_spec.rb +3 -3
- data/spec/trema/dsl/runner_spec.rb +12 -32
- data/spec/trema/dsl/syntax_spec.rb +2 -11
- data/spec/trema/echo-reply_spec.rb +49 -14
- data/spec/trema/echo-request_spec.rb +86 -34
- data/spec/trema/enqueue_spec.rb +76 -0
- data/spec/trema/error_spec.rb +43 -58
- data/spec/trema/features-reply_spec.rb +58 -24
- data/spec/trema/features-request_spec.rb +54 -28
- data/spec/trema/flow-mod_spec.rb +99 -0
- data/spec/trema/{openflow-switch_spec.rb → hardware-switch_spec.rb} +3 -3
- data/spec/trema/hello_spec.rb +28 -14
- data/spec/trema/ip_spec.rb +54 -0
- data/spec/trema/mac_spec.rb +49 -64
- data/spec/trema/match_spec.rb +1 -1
- data/spec/trema/open-vswitch_spec.rb +7 -7
- data/spec/trema/packet-in_spec.rb +73 -16
- data/spec/trema/port-status-add_spec.rb +32 -0
- data/spec/trema/port-status-delete_spec.rb +32 -0
- data/spec/trema/port-status-modify_spec.rb +71 -0
- data/spec/trema/port-status_spec.rb +5 -76
- data/spec/trema/{action-output_spec.rb → send-out-port_spec.rb} +20 -47
- data/spec/trema/set-eth-dst-addr_spec.rb +75 -0
- data/spec/trema/set-eth-src-addr_spec.rb +72 -0
- data/spec/trema/set-ip-dst-addr_spec.rb +58 -0
- data/spec/trema/set-ip-src-addr_spec.rb +58 -0
- data/spec/trema/set-ip-tos_spec.rb +65 -0
- data/spec/trema/set-transport-dst-port_spec.rb +65 -0
- data/spec/trema/set-transport-src-port_spec.rb +65 -0
- data/spec/trema/set-vlan-priority_spec.rb +65 -0
- data/spec/trema/set-vlan-vid_spec.rb +65 -0
- data/spec/trema/shell/vhost_spec.rb +4 -1
- data/spec/trema/shell/vswitch_spec.rb +11 -11
- data/spec/trema/stats-reply_spec.rb +59 -13
- data/spec/trema/stats-request_spec.rb +6 -0
- data/spec/trema/{action-strip-vlan_spec.rb → strip-vlan-header_spec.rb} +3 -17
- data/spec/trema/switch-daemon_spec.rb +39 -0
- data/spec/trema/vendor-action_spec.rb +81 -0
- data/spec/trema/vendor_spec.rb +76 -0
- data/spec/trema_spec.rb +56 -0
- data/src/examples/dumper/dumper.c +0 -8
- data/src/examples/dumper/dumper.rb +52 -52
- data/src/examples/hello_trema/hello_trema.c +0 -2
- data/src/examples/learning_switch/learning-switch.rb +3 -3
- data/src/examples/multi_learning_switch/multi-learning-switch.rb +3 -3
- data/src/examples/openflow_message/features-request.rb +3 -3
- data/src/examples/packetin_filter_config/utils.c +4 -4
- data/src/examples/repeater_hub/repeater-hub.rb +3 -3
- data/src/examples/switch_info/switch_info.rb +2 -2
- data/src/examples/switch_monitor/switch_monitor.c +1 -1
- data/src/examples/traffic_monitor/traffic-monitor.rb +3 -3
- data/src/lib/arp.h +4 -1
- data/src/lib/chibach.c +391 -0
- data/src/lib/chibach.h +71 -0
- data/src/lib/chibach_private.c +170 -0
- data/src/lib/chibach_private.h +52 -0
- data/src/lib/ether.c +2 -1
- data/src/lib/ether.h +0 -1
- data/src/lib/ipv4.h +13 -14
- data/{ruby/trema/action-set-nw-src.h → src/lib/ipv6.h} +13 -9
- data/src/lib/log.c +161 -58
- data/src/lib/log.h +11 -16
- data/src/lib/messenger.c +36 -1
- data/src/lib/messenger.h +1 -0
- data/src/lib/openflow_application_interface.c +128 -28
- data/src/lib/openflow_application_interface.h +31 -6
- data/src/lib/openflow_message.c +2 -1
- data/src/lib/openflow_service_interface.h +1 -0
- data/src/lib/openflow_switch_interface.c +1380 -0
- data/src/lib/openflow_switch_interface.h +264 -0
- data/src/lib/packet_info.c +94 -11
- data/src/lib/packet_info.h +22 -3
- data/src/lib/packet_parser.c +38 -2
- data/src/lib/secure_channel.c +498 -0
- data/{ruby/trema/vendor-request.h → src/lib/secure_channel.h} +11 -10
- data/src/lib/tcp.h +0 -3
- data/src/lib/trema.c +38 -5
- data/{ruby/trema/action-set-nw-dst.h → src/lib/trema.hpp} +17 -8
- data/src/lib/trema_wrapper.c +5 -0
- data/src/lib/trema_wrapper.h +4 -0
- data/src/lib/utility.c +93 -4
- data/src/lib/utility.h +1 -0
- data/src/lib/wrapper.c +30 -7
- data/src/lib/wrapper.h +2 -0
- data/src/switch_manager/ofpmsg_recv.c +44 -30
- data/src/switch_manager/ofpmsg_send.c +40 -1
- data/src/switch_manager/ofpmsg_send.h +2 -0
- data/src/switch_manager/switch.c +153 -8
- data/src/switch_manager/switch.h +1 -0
- data/src/switch_manager/switchinfo.h +5 -0
- data/src/tremashark/README +2 -2
- data/src/tremashark/plugin/packet-trema/packet-trema.c +1 -0
- data/trema +1 -1
- data/unittests/lib/log_test.c +158 -34
- data/unittests/lib/openflow_application_interface_test.c +252 -69
- data/unittests/lib/openflow_message_test.c +3 -1
- data/unittests/lib/packet_parser_test.c +60 -15
- 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/trema_test.c +2 -0
- data/unittests/lib/utility_test.c +65 -2
- data/unittests/lib/wrapper_test.c +29 -0
- data/vendor/{README → README.md} +2 -12
- data/vendor/packet-openflow.diff +13 -0
- metadata +86 -53
- data/GPL2 +0 -339
- data/ruby/trema/action-enqueue.c +0 -161
- data/ruby/trema/action-output.c +0 -169
- data/ruby/trema/action-set-dl-dst.c +0 -131
- data/ruby/trema/action-set-dl-dst.h +0 -44
- data/ruby/trema/action-set-dl-src.c +0 -131
- data/ruby/trema/action-set-nw-dst.c +0 -135
- data/ruby/trema/action-set-nw-src.c +0 -140
- data/ruby/trema/action-set-nw-tos.c +0 -124
- data/ruby/trema/action-set-nw-tos.h +0 -42
- data/ruby/trema/action-set-tp-dst.c +0 -122
- data/ruby/trema/action-set-tp-dst.h +0 -42
- data/ruby/trema/action-set-tp-src.c +0 -124
- data/ruby/trema/action-set-tp-src.h +0 -42
- data/ruby/trema/action-set-vlan-pcp.c +0 -128
- data/ruby/trema/action-set-vlan-pcp.h +0 -42
- data/ruby/trema/action-set-vlan-vid.c +0 -125
- data/ruby/trema/action-set-vlan-vid.h +0 -42
- data/ruby/trema/action-strip-vlan.c +0 -81
- data/ruby/trema/action-strip-vlan.h +0 -42
- data/ruby/trema/action-vendor.c +0 -121
- data/ruby/trema/vendor-request.c +0 -193
- data/spec/trema/action-enqueue_spec.rb +0 -100
- data/spec/trema/action-set-dl-dst_spec.rb +0 -95
- data/spec/trema/action-set-dl-src_spec.rb +0 -92
- data/spec/trema/action-set-nw-dst_spec.rb +0 -96
- data/spec/trema/action-set-nw-src_spec.rb +0 -97
- data/spec/trema/action-set-nw-tos_spec.rb +0 -88
- data/spec/trema/action-set-tp-dst_spec.rb +0 -88
- data/spec/trema/action-set-tp-src_spec.rb +0 -88
- data/spec/trema/action-set-vlan-pcp_spec.rb +0 -91
- data/spec/trema/action-set-vlan-vid_spec.rb +0 -91
- data/spec/trema/action-vendor_spec.rb +0 -90
- data/spec/trema/vendor-request_spec.rb +0 -79
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Author: Nick Karanatsios <nickkaranatsios@gmail.com>
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2008-2012 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 ACTION_SET_TP_DST_H
|
|
22
|
-
#define ACTION_SET_TP_DST_H
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
#include "ruby.h"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
extern VALUE cActionSetTpDst;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
void Init_action_set_tp_dst( void );
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
#endif // ACTION_SET_TP_DST_H
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
/*
|
|
38
|
-
* Local variables:
|
|
39
|
-
* c-basic-offset: 2
|
|
40
|
-
* indent-tabs-mode: nil
|
|
41
|
-
* End:
|
|
42
|
-
*/
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Author: Nick Karanatsios <nickkaranatsios@gmail.com>
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2008-2012 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
|
-
#include "trema.h"
|
|
22
|
-
#include "ruby.h"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
extern VALUE mTrema;
|
|
26
|
-
VALUE cActionSetTpSrc;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
/*
|
|
30
|
-
* An action to modify the source TCP or UDP port of a packet.
|
|
31
|
-
*
|
|
32
|
-
* @overload initialize(options={})
|
|
33
|
-
*
|
|
34
|
-
* @example
|
|
35
|
-
* ActionSetTpSrc.new( :tp_src => 5555 )
|
|
36
|
-
*
|
|
37
|
-
* @param [Hash] options
|
|
38
|
-
* the options to create this action class instance with.
|
|
39
|
-
*
|
|
40
|
-
* @option options [Number] :tp_src
|
|
41
|
-
* the source TCP or UDP port number. Any numeric 16-bit value.
|
|
42
|
-
*
|
|
43
|
-
* @raise [ArgumentError] if tp_src argument is not supplied.
|
|
44
|
-
* @raise [ArgumentError] if tp_src is not an unsigned 16-bit integer.
|
|
45
|
-
* @raise [TypeError] if options is not a Hash.
|
|
46
|
-
*
|
|
47
|
-
* @return [ActionSetTpSrc]
|
|
48
|
-
* an object that encapsulates this action.
|
|
49
|
-
*/
|
|
50
|
-
static VALUE
|
|
51
|
-
action_set_tp_src_init( int argc, VALUE *argv, VALUE self ) {
|
|
52
|
-
VALUE options;
|
|
53
|
-
|
|
54
|
-
if ( rb_scan_args( argc, argv, "10", &options ) == 1 ) {
|
|
55
|
-
Check_Type( options, T_HASH );
|
|
56
|
-
VALUE tp_src;
|
|
57
|
-
if ( ( tp_src = rb_hash_aref( options, ID2SYM( rb_intern( "tp_src" ) ) ) ) != Qnil ) {
|
|
58
|
-
if ( rb_funcall( tp_src, rb_intern( "unsigned_16bit?" ), 0 ) == Qfalse ) {
|
|
59
|
-
rb_raise( rb_eArgError, "Source TCP or UDP port must be an unsigned 16-bit integer" );
|
|
60
|
-
}
|
|
61
|
-
rb_iv_set( self, "@tp_src", tp_src );
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
rb_raise( rb_eArgError, "Source TCP or UDP port is a mandatory option" );
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return self;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
/*
|
|
72
|
-
* The source TCP or UDP port number.
|
|
73
|
-
*
|
|
74
|
-
* @return [Number] the value of tp_src.
|
|
75
|
-
*/
|
|
76
|
-
static VALUE
|
|
77
|
-
action_get_tp_src( VALUE self ) {
|
|
78
|
-
return rb_iv_get( self, "@tp_src" );
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
/*
|
|
83
|
-
* Appends its action(tp_src) to the list of actions.
|
|
84
|
-
*
|
|
85
|
-
* @return [ActionSetTpSrc] self
|
|
86
|
-
*/
|
|
87
|
-
static VALUE
|
|
88
|
-
action_set_tp_src_append( VALUE self, VALUE action_ptr ) {
|
|
89
|
-
openflow_actions *actions;
|
|
90
|
-
Data_Get_Struct( action_ptr, openflow_actions, actions );
|
|
91
|
-
uint16_t tp_src = ( uint16_t ) NUM2UINT( action_get_tp_src( self ) );
|
|
92
|
-
append_action_set_tp_src( actions, tp_src );
|
|
93
|
-
return self;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
/*
|
|
98
|
-
* (see ActionEnqueue#inspect)
|
|
99
|
-
*/
|
|
100
|
-
static VALUE
|
|
101
|
-
action_set_tp_src_inspect( VALUE self ) {
|
|
102
|
-
char str[ 64 ];
|
|
103
|
-
uint16_t tp_src = ( uint16_t ) NUM2UINT( action_get_tp_src( self ) );
|
|
104
|
-
sprintf( str, "#<%s tp_port=%u>", rb_obj_classname( self ), tp_src );
|
|
105
|
-
return rb_str_new2( str );
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
void
|
|
110
|
-
Init_action_set_tp_src() {
|
|
111
|
-
cActionSetTpSrc = rb_define_class_under( mTrema, "ActionSetTpSrc", rb_cObject );
|
|
112
|
-
rb_define_method( cActionSetTpSrc, "initialize", action_set_tp_src_init, -1 );
|
|
113
|
-
rb_define_method( cActionSetTpSrc, "tp_src", action_get_tp_src, 0 );
|
|
114
|
-
rb_define_method( cActionSetTpSrc, "append", action_set_tp_src_append, 1 );
|
|
115
|
-
rb_define_method( cActionSetTpSrc, "inspect", action_set_tp_src_inspect, 0 );
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
/*
|
|
120
|
-
* Local variables:
|
|
121
|
-
* c-basic-offset: 2
|
|
122
|
-
* indent-tabs-mode: nil
|
|
123
|
-
* End:
|
|
124
|
-
*/
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Author: Nick Karanatsios <nickkaranatsios@gmail.com>
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2008-2012 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 ACTION_SET_TP_SRC_H
|
|
22
|
-
#define ACTION_SET_TP_SRC_H
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
#include "ruby.h"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
extern VALUE cActionSetTpSrc;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
void Init_action_set_tp_src( void );
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
#endif // ACTION_SET_TP_SRC_H
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
/*
|
|
38
|
-
* Local variables:
|
|
39
|
-
* c-basic-offset: 2
|
|
40
|
-
* indent-tabs-mode: nil
|
|
41
|
-
* End:
|
|
42
|
-
*/
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Author: Nick Karanatsios <nickkaranatsios@gmail.com>
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2008-2012 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
|
-
#include "trema.h"
|
|
22
|
-
#include "ruby.h"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
extern VALUE mTrema;
|
|
26
|
-
VALUE cActionSetVlanPcp;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
/*
|
|
31
|
-
* An action to modify the VLAN priority of a packet. Valid values are between
|
|
32
|
-
* (0) lowest and (7) highest. Priority bits can be used to prioritize different
|
|
33
|
-
* classes of traffic.
|
|
34
|
-
*
|
|
35
|
-
* @overload initialize(options={})
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ActionSetVlanPcp.new( :vlan_pcp => 7 )
|
|
39
|
-
*
|
|
40
|
-
* @param [Hash] options
|
|
41
|
-
* the options to create this action class instance with.
|
|
42
|
-
*
|
|
43
|
-
* @option options [Number] :vlan_pcp
|
|
44
|
-
* the VLAN priority to set to.
|
|
45
|
-
*
|
|
46
|
-
* @raise [ArgumentError] if vlan_pcp argument is not supplied.
|
|
47
|
-
* @raise [RangeError] if vlan_pcp is not within 0 and 7 inclusive.
|
|
48
|
-
* @raise [TypeError] if options is not a Hash.
|
|
49
|
-
*
|
|
50
|
-
* @return [ActionSetVlanPcp]
|
|
51
|
-
* an object that encapsulates this action.
|
|
52
|
-
*/
|
|
53
|
-
static VALUE
|
|
54
|
-
action_set_vlan_pcp_init( int argc, VALUE *argv, VALUE self ) {
|
|
55
|
-
VALUE options;
|
|
56
|
-
|
|
57
|
-
if ( rb_scan_args( argc, argv, "10", &options ) == 1 ) {
|
|
58
|
-
Check_Type( options, T_HASH );
|
|
59
|
-
VALUE vlan_pcp;
|
|
60
|
-
if ( ( vlan_pcp = rb_hash_aref( options, ID2SYM( rb_intern( "vlan_pcp" ) ) ) ) != Qnil ) {
|
|
61
|
-
uint8_t vpcp = ( uint8_t ) NUM2UINT( vlan_pcp );
|
|
62
|
-
if ( vpcp & ~7 ) {
|
|
63
|
-
rb_raise( rb_eRangeError, "Valid VLAN priority values are 0 to 7 inclusive" );
|
|
64
|
-
}
|
|
65
|
-
rb_iv_set( self, "@vlan_pcp", vlan_pcp );
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
rb_raise( rb_eArgError, "VLAN priority is a mandatory option" );
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return self;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
/*
|
|
76
|
-
* The VLAN priority value.
|
|
77
|
-
*
|
|
78
|
-
* @return [Number] the value of vlan_pcp.
|
|
79
|
-
*/
|
|
80
|
-
static VALUE
|
|
81
|
-
action_get_vlan_pcp( VALUE self ) {
|
|
82
|
-
return rb_iv_get( self, "@vlan_pcp" );
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
/*
|
|
87
|
-
* Appends its action(vlan_pcp) to the list of actions.
|
|
88
|
-
*
|
|
89
|
-
* @return [ActionSetVlanPcp] self
|
|
90
|
-
*/
|
|
91
|
-
static VALUE
|
|
92
|
-
action_set_vlan_pcp_append( VALUE self, VALUE action_ptr ) {
|
|
93
|
-
openflow_actions *actions;
|
|
94
|
-
Data_Get_Struct( action_ptr, openflow_actions, actions );
|
|
95
|
-
uint8_t vlan_pcp = ( uint8_t ) NUM2UINT( action_get_vlan_pcp( self ) );
|
|
96
|
-
append_action_set_vlan_pcp( actions, vlan_pcp );
|
|
97
|
-
return self;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
/*
|
|
102
|
-
* (see ActionEnqueue#inspect)
|
|
103
|
-
*/
|
|
104
|
-
static VALUE
|
|
105
|
-
action_set_vlan_pcp_inspect( VALUE self ) {
|
|
106
|
-
char str[ 64 ];
|
|
107
|
-
uint8_t vlan_pcp = ( uint8_t ) NUM2UINT( action_get_vlan_pcp( self ) );
|
|
108
|
-
sprintf(str, "#<%s vlan_pcp=%u>", rb_obj_classname( self ), vlan_pcp );
|
|
109
|
-
return rb_str_new2( str );
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
void
|
|
114
|
-
Init_action_set_vlan_pcp() {
|
|
115
|
-
cActionSetVlanPcp = rb_define_class_under( mTrema, "ActionSetVlanPcp", rb_cObject );
|
|
116
|
-
rb_define_method( cActionSetVlanPcp, "initialize", action_set_vlan_pcp_init, -1 );
|
|
117
|
-
rb_define_method( cActionSetVlanPcp, "vlan_pcp", action_get_vlan_pcp, 0 );
|
|
118
|
-
rb_define_method( cActionSetVlanPcp, "append", action_set_vlan_pcp_append, 1 );
|
|
119
|
-
rb_define_method( cActionSetVlanPcp, "inspect", action_set_vlan_pcp_inspect, 0 );
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
/*
|
|
124
|
-
* Local variables:
|
|
125
|
-
* c-basic-offset: 2
|
|
126
|
-
* indent-tabs-mode: nil
|
|
127
|
-
* End:
|
|
128
|
-
*/
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Author: Nick Karanatsios <nickkaranatsios@gmail.com>
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2008-2012 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 ACTION_SET_VLAN_PCP_H
|
|
22
|
-
#define ACTION_SET_VLAN_PCP_H
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
#include "ruby.h"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
extern VALUE cActionSetVlanPcp;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
void Init_action_set_vlan_pcp( void );
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
#endif // ACTION_SET_VLAN_PCP_H
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
/*
|
|
38
|
-
* Local variables:
|
|
39
|
-
* c-basic-offset: 2
|
|
40
|
-
* indent-tabs-mode: nil
|
|
41
|
-
* End:
|
|
42
|
-
*/
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Author: Nick Karanatsios <nickkaranatsios@gmail.com>
|
|
3
|
-
*
|
|
4
|
-
* Copyright (C) 2008-2012 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
|
-
#include "trema.h"
|
|
22
|
-
#include "ruby.h"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
extern VALUE mTrema;
|
|
26
|
-
VALUE cActionSetVlanVid;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
/*
|
|
30
|
-
* An action to modify the VLAN id of a packet. The VLAN id is 16-bits long but
|
|
31
|
-
* the actual VID(VLAN Identifier) of the IEEE 802.1Q frame is 12-bits.
|
|
32
|
-
*
|
|
33
|
-
* @overload initialize(options={})
|
|
34
|
-
*
|
|
35
|
-
* @example
|
|
36
|
-
* ActionSetVlanVid.new( :vlan_vid => 4096 )
|
|
37
|
-
*
|
|
38
|
-
* @param [Hash] options
|
|
39
|
-
* the options to create this action class instance with.
|
|
40
|
-
*
|
|
41
|
-
* @option options [Number] :vlan_vid
|
|
42
|
-
* the VLAN id to set to. Only the lower 12-bits are used.
|
|
43
|
-
*
|
|
44
|
-
* @raise [ArgumentError] if vlan_vid argument is not supplied.
|
|
45
|
-
* @raise [RangeError] if vlan_vid not within 1 and 4096 inclusive.
|
|
46
|
-
* @raise [TypeError] if options is not a Hash.
|
|
47
|
-
*
|
|
48
|
-
* @return [ActionSetVlanVid]
|
|
49
|
-
* an object that encapsulates this action.
|
|
50
|
-
*/
|
|
51
|
-
static VALUE
|
|
52
|
-
action_set_vlan_vid_init( int argc, VALUE *argv, VALUE self ) {
|
|
53
|
-
VALUE options;
|
|
54
|
-
|
|
55
|
-
if ( rb_scan_args( argc, argv, "10", &options ) == 1 ) {
|
|
56
|
-
Check_Type( options, T_HASH );
|
|
57
|
-
VALUE vlan_vid;
|
|
58
|
-
if ( ( vlan_vid = rb_hash_aref( options, ID2SYM( rb_intern( "vlan_vid" ) ) ) ) != Qnil ) {
|
|
59
|
-
uint16_t vvid = ( uint16_t ) NUM2UINT( vlan_vid );
|
|
60
|
-
if ( !vvid || vvid & ~4095 ) {
|
|
61
|
-
rb_raise( rb_eRangeError, "Valid VLAN id values between 1 to 4096 inclusive" );
|
|
62
|
-
}
|
|
63
|
-
rb_iv_set( self, "@vlan_vid", vlan_vid );
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
rb_raise( rb_eArgError, "VLAN id is a mandatory option" );
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return self;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
/*
|
|
74
|
-
* The VLAN id value.
|
|
75
|
-
*
|
|
76
|
-
* @return [Number] the value of vlan_vid.
|
|
77
|
-
*/
|
|
78
|
-
static VALUE
|
|
79
|
-
action_get_vlan_vid( VALUE self ) {
|
|
80
|
-
return rb_iv_get( self, "@vlan_vid" );
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
/*
|
|
85
|
-
* Appends its action(vlan_vid) to the list of actions.
|
|
86
|
-
*
|
|
87
|
-
* @return [ActionSetVlanVid] self
|
|
88
|
-
*/
|
|
89
|
-
static VALUE
|
|
90
|
-
action_set_vlan_vid_append( VALUE self, VALUE action_ptr ) {
|
|
91
|
-
openflow_actions *actions;
|
|
92
|
-
Data_Get_Struct( action_ptr, openflow_actions, actions );
|
|
93
|
-
append_action_set_vlan_vid( actions, ( uint16_t ) NUM2UINT( action_get_vlan_vid( self ) ) );
|
|
94
|
-
return self;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
/*
|
|
99
|
-
* (see ActionEnqueue#inspect)
|
|
100
|
-
*/
|
|
101
|
-
static VALUE
|
|
102
|
-
action_set_vlan_vid_inspect( VALUE self ) {
|
|
103
|
-
char str[ 64 ];
|
|
104
|
-
uint16_t vlan_vid = ( uint16_t ) NUM2UINT( action_get_vlan_vid( self ) );
|
|
105
|
-
sprintf( str, "#<%s vlan_vid=%u>", rb_obj_classname( self ), vlan_vid );
|
|
106
|
-
return rb_str_new2( str );
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
void
|
|
111
|
-
Init_action_set_vlan_vid() {
|
|
112
|
-
cActionSetVlanVid = rb_define_class_under( mTrema, "ActionSetVlanVid", rb_cObject );
|
|
113
|
-
rb_define_method( cActionSetVlanVid, "initialize", action_set_vlan_vid_init, -1 );
|
|
114
|
-
rb_define_method( cActionSetVlanVid, "vlan_vid", action_get_vlan_vid, 0 );
|
|
115
|
-
rb_define_method( cActionSetVlanVid, "append", action_set_vlan_vid_append, 1 );
|
|
116
|
-
rb_define_method( cActionSetVlanVid, "inspect", action_set_vlan_vid_inspect, 0 );
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
/*
|
|
121
|
-
* Local variables:
|
|
122
|
-
* c-basic-offset: 2
|
|
123
|
-
* indent-tabs-mode: nil
|
|
124
|
-
* End:
|
|
125
|
-
*/
|