kanrisuru 0.14.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,313 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kanrisuru
4
+ module Core
5
+ module IP
6
+ def ip_link_type_opts(command, opts)
7
+ case opts[:type]
8
+ when 'vlan'
9
+ ip_link_vlan_opts(command, opts[:type_opts])
10
+ when 'vxlan'
11
+ ip_link_vxlan_opts(command, opts[:type_opts])
12
+ when 'veth', 'vxcan'
13
+ ip_link_veth_vxcan_opts(command, opts[:type_opts])
14
+ when 'ipip', 'sit'
15
+ ip_link_ipip_sit_opts(command, opts[:type_opts])
16
+ when 'gre', 'gretap'
17
+ ip_link_gre_gretap_opts(command, opts[:type_opts])
18
+ when 'ip6gre', 'ip6gretap'
19
+ ip_link_ip6gre_ip6gretap_opts(command, opts[:type_opts])
20
+ when 'ipoib'
21
+ ip_link_ipoib_opts(command, opts[:type_opts])
22
+ when 'erspan', 'ip6erspan'
23
+ ip_link_erspan_opts(command, opts[:type_opts])
24
+ when 'geneve'
25
+ ip_link_geneve_opts(command, opts[:type_opts])
26
+ when 'bareudp'
27
+ ip_link_bareudp_opts(command, opts[:type_opts])
28
+ when 'macvlan', 'macvtap'
29
+ ip_link_macvlan_macvtap_opts(command, opts[:type_opts])
30
+ when 'hsr'
31
+ ip_link_hsr_opts(command, opts[:type_opts])
32
+ when 'bridge'
33
+ ip_link_bridge_opts(command, opts[:type_opts])
34
+ when 'macsec'
35
+ ip_link_macsec_opts(command, opts[:type_opts])
36
+ when 'vrf'
37
+ ip_link_vrf_opts(command, opts[:type_opts])
38
+ when 'rmnet'
39
+ ip_link_rmnet_opts(command, opts[:type_opts])
40
+ when 'xfrm'
41
+ ip_link_xfrm_opts(command, opts[:type_opts])
42
+ when 'bridge_slave'
43
+ ip_link_bridge_slave_opts(command, opts[:type_opts])
44
+ when 'bond_slave'
45
+ ip_link_bond_slave_opts(command, opts[:type_opts])
46
+ end
47
+ end
48
+
49
+ def ip_link_vlan_opts(command, opts)
50
+ command.append_arg('protocol', opts[:protocol])
51
+ command.append_arg('id', opts[:id])
52
+ command.append_arg('reorder_hdr', opts[:reorder_hdr])
53
+ command.append_arg('gvrp', opts[:gvrp])
54
+ command.append_arg('mvrp', opts[:mvrp])
55
+ command.append_arg('loose_binding', opts[:loose_binding])
56
+ command.append_arg('bridge_binding', opts[:bridge_binding])
57
+ command.append_arg('ingress-qos-map', opts[:ingress_qos_map])
58
+ command.append_arg('egress-qos-map', opts[:egress_qos_map])
59
+ end
60
+
61
+ def ip_link_vxlan_opts(command, opts)
62
+ command.append_arg('id', opts[:id])
63
+ command.append_arg('dev', opts[:dev])
64
+ command.append_arg('group', opts[:group])
65
+ command.append_arg('remote', opts[:remote])
66
+ command.append_arg('local', opts[:local])
67
+ command.append_arg('ttl', opts[:ttl])
68
+ command.append_arg('tos', opts[:tos])
69
+ command.append_arg('df', opts[:df])
70
+ command.append_arg('flowlabel', opts[:flowlabel])
71
+ command.append_arg('dstport', opts[:dstport])
72
+ command.append_arg('srcport', opts[:srcport])
73
+
74
+ command.append_flag_no('learning', opts[:learning])
75
+ command.append_flag_no('rsc', opts[:rsc])
76
+ command.append_flag_no('proxy', opts[:proxy])
77
+ command.append_flag_no('l2miss', opts[:l2miss])
78
+ command.append_flag_no('l3miss', opts[:l3miss])
79
+ command.append_flag_no('udpcsum', opts[:udpcsum])
80
+ command.append_flag_no('udp6zerocsumtx', opts[:udp6zerocsumtx])
81
+ command.append_flag_no('udp6zerocsumrx', opts[:udp6zerocsumrx])
82
+
83
+ command.append_arg('ageing', opts[:ageing])
84
+ command.append_arg('maxaddress', opts[:maxaddress])
85
+
86
+ command.append_flag('gbp', opts[:gbp])
87
+ command.append_flag('gpe', opts[:gpe])
88
+ end
89
+
90
+ def ip_link_veth_vxcan_opts(command, opts)
91
+ command.append_arg('peer name', opts[:peer_name])
92
+ end
93
+
94
+ def ip_link_ipip_sit_opts(command, opts)
95
+ ip_link_shared_sit_gre_opts(command, opts)
96
+ command.append_arg('mode', opts[:mode])
97
+ end
98
+
99
+ def ip_link_gre_gretap_opts(command, opts)
100
+ ip_link_shared_sit_gre_opts(command, opts)
101
+ ip_link_shared_io_opts(command, opts)
102
+
103
+ command.append_arg('ttl', opts[:ttl])
104
+ command.append_arg('tos', opts[:tos])
105
+
106
+ command.append_flag_no('pmtudisc', opts[:pmtudisc])
107
+ command.append_flag_no('ignore-df', opts[:ignore_df])
108
+
109
+ command.append_arg('dev', opts[:dev])
110
+ end
111
+
112
+ def ip_link_ip6gre_ip6gretap_opts(command, opts)
113
+ command.append_arg('remote', opts[:remote])
114
+ command.append_arg('local', opts[:local])
115
+ ip_link_shared_io_opts(command, opts)
116
+
117
+ command.append_arg('hoplimit', opts[:hoplimit])
118
+ command.append_arg('encaplimit', opts[:encaplimit])
119
+ command.append_arg('flowlabel', opts[:flowlabel])
120
+
121
+ command.append_flag_no('allow-localremote', opts[:allow_localremote])
122
+ command.append_arg('tclass', opts[:tclass])
123
+ command.append_arg('external', opts[:external])
124
+ end
125
+
126
+ def ip_link_ipoib_opts(command, opts)
127
+ command.append_arg('pkey', opts[:pkey])
128
+ command.append_arg('mode', opts[:mode])
129
+ end
130
+
131
+ def ip_link_erspan_opts(command, opts)
132
+ command.append_arg('remote', opts[:remote])
133
+ command.append_arg('local', opts[:local])
134
+ command.append_arg('erspan_ver', opts[:erspan_ver])
135
+ command.append_arg('erspan', opts[:erspan])
136
+ command.append_arg('erspan_dir', opts[:erspan_dir])
137
+ command.append_arg('erspan_hwid', opts[:erspan_hwid])
138
+ command.append_flag_no('allow-localremote', opts[:allow_localremote])
139
+ command.append_flag('external', opts[:external])
140
+ end
141
+
142
+ def ip_link_geneve_opts(command, opts)
143
+ command.append_arg('id', opts[:id])
144
+ command.append_arg('remote', opts[:remote])
145
+ command.append_arg('ttl', opts[:ttl])
146
+ command.append_arg('tos', opts[:tos])
147
+ command.append_arg('df', opts[:df])
148
+ command.append_arg('flowlabel', opts[:flowlabel])
149
+ command.append_arg('dstport', opts[:dstport])
150
+
151
+ command.append_flag_no('external', opts[:external])
152
+ command.append_flag_no('udpcsum', opts[:udpcsum])
153
+ command.append_flag_no('udp6zerocsumtx', opts[:udp6zerocsumtx])
154
+ command.append_flag_no('udp6zerocsumrx', opts[:udp6zerocsumrx])
155
+ end
156
+
157
+ def ip_link_bareudp_opts(command, opts)
158
+ command.append_arg('dstport', opts[:dstport])
159
+ command.append_arg('ethertype', opts[:ethertype])
160
+ command.append_arg('srcportmin', opts[:srcportmin])
161
+ command.append_flag_no('multiproto', opts[:multiproto])
162
+ end
163
+
164
+ def ip_link_macvlan_macvtap_opts(command, opts)
165
+ command.append_arg('mode', opts[:mode])
166
+ command.append_arg('flag', opts[:flag])
167
+
168
+ case opts[:mode_opts]
169
+ when 'add', 'del'
170
+ command << opts[:mode_opts]
171
+ command << opts[:mac_address]
172
+ when 'set'
173
+ command << 'set'
174
+ command.append_array(opts[:mac_address])
175
+ when 'flush'
176
+ command << 'flush'
177
+ end
178
+ end
179
+
180
+ def ip_link_hsr_opts(command, opts)
181
+ command.append_arg('slave1', opts[:slave1])
182
+ command.append_arg('slave2', opts[:slave2])
183
+ command.append_arg('supervision', opts[:supervision])
184
+ command.append_arg('version', opts[:version])
185
+ command.append_arg('proto', opts[:proto])
186
+ end
187
+
188
+ def ip_link_bridge_opts(command, opts)
189
+ command.append_arg('ageing_time', opts[:ageing_time])
190
+ command.append_arg('group_fwd_mask', opts[:group_fwd_mask])
191
+ command.append_arg('group_address', opts[:group_address])
192
+ command.append_arg('forward_delay', opts[:forward_delay])
193
+ command.append_arg('hello_time', opts[:hello_time])
194
+ command.append_arg('max_age', opts[:max_age])
195
+ command.append_arg('stp_state', opts[:stp_state])
196
+ command.append_arg('priority', opts[:priority])
197
+ command.append_arg('vlan_filtering', opts[:vlan_filtering])
198
+ command.append_arg('vlan_protocol', opts[:vlan_protocol])
199
+ command.append_arg('vlan_default_pvid', opts[:vlan_default_pvid])
200
+ command.append_arg('vlan_stats_enabled', opts[:vlan_stats_enabled])
201
+ command.append_arg('vlan_stats_per_port', opts[:vlan_stats_per_port])
202
+ command.append_arg('mcast_snooping', opts[:mcast_snooping])
203
+ command.append_arg('mcast_router', opts[:mcast_router])
204
+ command.append_arg('mcast_query_use_ifaddr', opts[:mcast_query_use_ifaddr])
205
+ command.append_arg('mcast_querier', opts[:mcast_querier])
206
+ command.append_arg('mcast_querier_interval', opts[:mcast_querier_interval])
207
+ command.append_arg('mcast_hash_elasticity', opts[:mcast_hash_elasticity])
208
+ command.append_arg('mcast_hash_max', opts[:mcast_hash_max])
209
+ command.append_arg('mcast_last_member_count', opts[:mcast_last_member_count])
210
+ command.append_arg('mcast_last_member_interval', opts[:mcast_last_member_interval])
211
+ command.append_arg('mcast_startup_query_count', opts[:mcast_startup_query_count])
212
+ command.append_arg('mcast_startup_query_interval', opts[:mcast_startup_query_interval])
213
+ command.append_arg('mcast_query_interval', opts[:mcast_query_interval])
214
+ command.append_arg('mcast_query_response_interval', opts[:mcast_query_response_interval])
215
+ command.append_arg('mcast_membership_interval', opts[:mcast_membership_interval])
216
+ command.append_arg('mcast_stats_enabled', opts[:mcast_stats_enabled])
217
+ command.append_arg('mcast_igmp_version', opts[:mcast_igmp_version])
218
+ command.append_arg('mcast_mld_version', opts[:mcast_mld_version])
219
+ command.append_arg('nf_call_iptables', opts[:nf_call_iptables])
220
+ command.append_arg('nf_call_ip6tables', opts[:nf_call_ip6tables])
221
+ command.append_arg('nf_call_arptables', opts[:nf_call_arptables])
222
+ end
223
+
224
+ def ip_link_macsec_opts(command, opts)
225
+ command.append_arg('address', opts[:address])
226
+ command.append_arg('port', opts[:port])
227
+ command.append_arg('sci', opts[:sci])
228
+ command.append_arg('cipher', opts[:cipher])
229
+ command.append_arg('icvlen', opts[:icvlen])
230
+ command.append_arg('encrypt', opts[:encrypt])
231
+ command.append_arg('send_sci', opts[:send_sci])
232
+ command.append_arg('end_station', opts[:end_station])
233
+ command.append_arg('scb', opts[:scb])
234
+ command.append_arg('protect', opts[:protect])
235
+ command.append_arg('replay', opts[:replay])
236
+ command.append_arg('window', opts[:window])
237
+ command.append_arg('validate', opts[:validate])
238
+ command.append_arg('encodingsa', opts[:encodingsa])
239
+ end
240
+
241
+ def ip_link_vrf_opts(command, opts)
242
+ command.append_arg('table', opts[:table])
243
+ end
244
+
245
+ def ip_link_rmnet_opts(command, opts)
246
+ command.append_arg('mux_id', opts[:mux_id])
247
+ end
248
+
249
+ def ip_link_xfrm_opts(command, opts)
250
+ command.append_arg('if_id', opts[:if_id])
251
+ end
252
+
253
+ def ip_link_bridge_slave_opts(command, opts)
254
+ command.append_flag('fdb_flush', opts[:fdb_flush])
255
+ command.append_arg('state', opts[:state])
256
+ command.append_arg('priority', opts[:priority])
257
+ command.append_arg('cost', opts[:cost])
258
+ command.append_arg('guard', opts[:guard])
259
+ command.append_arg('hairpin', opts[:hairpin])
260
+ command.append_arg('fastleave', opts[:fastleave])
261
+ command.append_arg('root_block', opts[:root_block])
262
+ command.append_arg('learning', opts[:learning])
263
+ command.append_arg('flood', opts[:flood])
264
+ command.append_arg('proxy_arp', opts[:proxy_arp])
265
+ command.append_arg('proxy_arp_wifi', opts[:proxy_arp_wifi])
266
+ command.append_arg('mcast_router', opts[:mcast_router])
267
+ command.append_arg('mcast_fast_leave', opts[:mcast_fast_leave])
268
+ command.append_arg('mcast_flood', opts[:mcast_flood])
269
+ command.append_arg('mcast_to_unicast', opts[:mcast_to_unicast])
270
+ command.append_arg('group_fwd_mask', opts[:group_fwd_mask])
271
+ command.append_arg('neigh_suppress', opts[:neigh_suppress])
272
+ command.append_arg('neigh_suppress', opts[:neigh_suppress])
273
+ command.append_arg('backup_port', opts[:backup_port])
274
+ command.append_flag('nobackup_port', opts[:nobackup_port])
275
+ end
276
+
277
+ def ip_link_bond_slave_opts(command, opts)
278
+ command.append_arg('queue_id', opts[:queue_id])
279
+ end
280
+
281
+ def ip_link_shared_io_opts(command, opts)
282
+ command.append_flag_no('iseq', opts[:iseq])
283
+ command.append_flag_no('oseq', opts[:oseq])
284
+
285
+ command.append_flag_no('icsum', opts[:icsum])
286
+ command.append_flag_no('ocsum', opts[:ocsum])
287
+
288
+ if opts[:okey] == false
289
+ command.append_flag('nookey', opts[:okey])
290
+ elsif opts[:okey].instance_of?(Integer)
291
+ command.append_arg('okey', opts[:okey])
292
+ end
293
+
294
+ if opts[:ikey] == false
295
+ command.append_flag('noikey', opts[:ikey])
296
+ elsif opts[:ikey].instance_of?(Integer)
297
+ command.append_arg('ikey', opts[:ikey])
298
+ end
299
+ end
300
+
301
+ def ip_link_shared_sit_gre_opts(command, opts)
302
+ command.append_arg('remote', opts[:remote])
303
+ command.append_arg('local', opts[:local])
304
+ command.append_arg('encap', opts[:encap])
305
+ command.append_arg('encap-sport', opts[:encap_sport])
306
+
307
+ command.append_flag_no('encap-csum', opts[:encap_csum])
308
+ command.append_flag_no('encap-remcsum', opts[:encap_remcsum])
309
+ command.append_flag('external', opts[:external])
310
+ end
311
+ end
312
+ end
313
+ end
@@ -6,20 +6,10 @@ module Kanrisuru
6
6
  def ip_maddress(action, opts)
7
7
  case action
8
8
  when 'show', 'list'
9
- command = Kanrisuru::Command.new('ip')
10
-
11
- version = ip_version
12
- command.append_flag('-json') if version >= IPROUTE2_JSON_VERSION
13
- command.append_arg('-family', opts[:family])
14
- command << 'maddress show'
15
-
16
- command.append_arg('dev', opts[:dev])
9
+ version = ip_version.to_i
10
+ command = ip_maddress_show(opts, version)
17
11
  when 'add', 'delete', 'del'
18
- command = Kanrisuru::Command.new('ip maddress')
19
- command << action
20
-
21
- command.append_arg('address', opts[:lladdress])
22
- command.append_arg('dev', opts[:dev])
12
+ command = ip_maddress_modify(action, opts)
23
13
  end
24
14
 
25
15
  execute_shell(command)
@@ -28,6 +18,25 @@ module Kanrisuru
28
18
  Parser::Maddress.parse(cmd, action, version)
29
19
  end
30
20
  end
21
+
22
+ def ip_maddress_show(opts, version)
23
+ command = Kanrisuru::Command.new('ip')
24
+ command.append_flag('-json') if version >= IPROUTE2_JSON_VERSION
25
+ command.append_arg('-family', opts[:family])
26
+ command << 'maddress show'
27
+
28
+ command.append_arg('dev', opts[:dev])
29
+ command
30
+ end
31
+
32
+ def ip_maddress_modify(action, opts)
33
+ command = Kanrisuru::Command.new('ip maddress')
34
+ command << action
35
+
36
+ command.append_arg('address', opts[:address])
37
+ command.append_arg('dev', opts[:dev])
38
+ command
39
+ end
31
40
  end
32
41
  end
33
42
  end
@@ -5,50 +5,67 @@ module Kanrisuru
5
5
  module IP
6
6
  def ip_neighbour(action, opts)
7
7
  case action
8
+ when 'show', 'list'
9
+ version = ip_version.to_i
10
+ command = ip_neighbour_show(opts, version)
8
11
  when 'add', 'change', 'replace', 'del', 'delete'
9
- command = Kanrisuru::Command.new('ip neighbour')
10
- command << action
12
+ command = ip_neighbour_modify(action, opts)
13
+ when 'flush'
14
+ command = ip_neighbour_flush(opts)
15
+ end
11
16
 
12
- command.append_arg('to', opts[:to])
13
- command.append_arg('dev', opts[:dev])
17
+ execute_shell(command)
14
18
 
15
- if action != 'del' && action != 'delete'
16
- command.append_arg('lladdr', opts[:lladdr])
17
- command.append_arg('nud', opts[:nud])
18
- end
19
+ Kanrisuru::Result.new(command) do |cmd|
20
+ Parser::Neighbour.parse(cmd, action, version)
21
+ end
22
+ end
19
23
 
20
- command.append_flag('permanent', opts[:permanent])
21
- command.append_flag('noarp', opts[:noarp])
22
- command.append_flag('reachable', opts[:reachable])
23
- command.append_flag('stale', opts[:stale])
24
- when 'show', 'list'
25
- version = ip_version
24
+ def ip_neighbour_show(opts, version)
25
+ command = Kanrisuru::Command.new('ip')
26
+ command.append_flag('-json') if version >= IPROUTE2_JSON_VERSION
27
+ command.append_flag('-s', opts[:stats])
26
28
 
27
- command = Kanrisuru::Command.new('ip')
28
- command.append_flag('-json') if version >= Kanrisuru::Core::IP::IPROUTE2_JSON_VERSION
29
- command.append_flag('-s', opts[:stats])
29
+ command << 'neighbour show'
30
30
 
31
- command << 'neighbour show'
31
+ command.append_arg('to', opts[:to])
32
+ command.append_arg('dev', opts[:dev])
33
+ command.append_arg('nud', opts[:nud])
32
34
 
33
- command.append_arg('to', opts[:to])
34
- command.append_arg('dev', opts[:dev])
35
- command.append_arg('nud', opts[:nud])
35
+ command.append_flag('proxy', opts[:proxy])
36
+ command.append_flag('unused', opts[:unused])
37
+ command
38
+ end
36
39
 
37
- command.append_flag('unused', opts[:unused])
38
- when 'flush'
39
- command = Kanrisuru::Command.new('ip neighbour flush')
40
- command.append_arg('to', opts[:to])
41
- command.append_arg('dev', opts[:dev])
42
- command.append_arg('nud', opts[:nud])
40
+ def ip_neighbour_modify(action, opts)
41
+ command = Kanrisuru::Command.new('ip neighbour')
42
+ command << action
43
+
44
+ command.append_arg('to', opts[:to])
45
+ command.append_arg('dev', opts[:dev])
43
46
 
44
- command.append_flag('unused', opts[:unused])
47
+ if action != 'del' && action != 'delete'
48
+ command.append_arg('lladdr', opts[:lladdr])
49
+ command.append_arg('nud', opts[:nud])
45
50
  end
46
51
 
47
- execute_shell(command)
52
+ command.append_flag('proxy', opts[:proxy])
53
+ command.append_flag('router', opts[:router])
54
+ command.append_flag('extern_learn', opts[:extern_learn])
55
+ command
56
+ end
48
57
 
49
- Kanrisuru::Result.new(command) do |cmd|
50
- Parser::Neighbour.parse(cmd, action, version)
51
- end
58
+ def ip_neighbour_flush(opts)
59
+ command = Kanrisuru::Command.new('ip')
60
+ command.append_flag('-s', opts[:stats])
61
+ command << 'neighbour flush'
62
+
63
+ command.append_arg('to', opts[:to])
64
+ command.append_arg('dev', opts[:dev])
65
+ command.append_arg('nud', opts[:nud])
66
+
67
+ command.append_flag('unused', opts[:unused])
68
+ command
52
69
  end
53
70
  end
54
71
  end