From a78630ded347de9fd8b9e6753eb2f34595e35487 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Wed, 22 Feb 2017 15:30:22 +0100 Subject: [PATCH] F #5027: Adds support for ipv6 addresses in several commands of onevnet. Fix bugs --- src/cli/one_helper/onevnet_helper.rb | 11 ++++++++++- src/cli/onevnet | 17 +++++++++++------ src/rm/RequestManagerVirtualNetwork.cc | 2 +- src/vnm/AddressRange.cc | 2 +- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/cli/one_helper/onevnet_helper.rb b/src/cli/one_helper/onevnet_helper.rb index 6f1e2f7dfc..be1fb35d6e 100644 --- a/src/cli/one_helper/onevnet_helper.rb +++ b/src/cli/one_helper/onevnet_helper.rb @@ -48,6 +48,14 @@ class OneVNetHelper < OpenNebulaHelper::OneHelper :description => "First IP address in . notation" } + IP6 = { + :name => "ip6", + :short => "-6 ip6", + :large => "--ip6 ip6", + :format => String, + :description => "First IPv6 address in : notation" + } + SIZE = { :name => "size", :short => "-s size", @@ -117,7 +125,8 @@ class OneVNetHelper < OpenNebulaHelper::OneHelper ] ADDAR_OPTIONS = [ - SIZE, MAC, IP, IP6_GLOBAL, IP6_ULA, GATEWAY, NETMASK, VN_MAD, VLAN_ID ] + SIZE, MAC, IP, IP6, IP6_GLOBAL, IP6_ULA, GATEWAY, NETMASK, VN_MAD, + VLAN_ID ] def self.rname "VNET" diff --git a/src/cli/onevnet b/src/cli/onevnet index dbb238273e..562d5ef752 100755 --- a/src/cli/onevnet +++ b/src/cli/onevnet @@ -123,15 +123,17 @@ cmd=CommandParser::CmdParser.new(ARGV) do if options[:ip] if options[:ip6_global] || options[:ip6_ula] ar << "TYPE=\"IP4_6\"" + elsif options[:ip6] + ar << "TYPE=\"IP4_6_STATIC\"" else ar << "TYPE=\"IP4\"" end + elsif options[:ip6] + ar << "TYPE=\"IP6_STATIC\"" + elsif options[:ip6_global] || options[:ip6_ula] + ar << "TYPE=\"IP6\"" else - if options[:ip6_global] || options[:ip6_ula] - ar << "TYPE=\"IP6\"" - else - ar << "TYPE=\"ETHER\"" - end + ar << "TYPE=\"ETHER\"" end if options[:size] @@ -142,6 +144,7 @@ cmd=CommandParser::CmdParser.new(ARGV) do end ar << ", IP = " << options[:ip] if options[:ip] + ar << ", IP6 = " << options[:ip6] if options[:ip6] ar << ", MAC = " << options[:mac] if options[:mac] ar << ", GLOBAL_PREFIX = " << options[:ip6_global] if options[:ip6_global] @@ -234,7 +237,8 @@ cmd=CommandParser::CmdParser.new(ARGV) do command :reserve, reserve_desc, :vnetid, [:vnetid, nil], :options=>STD_OPTIONS + [OneVNetHelper::AR, OneVNetHelper::NAME, - OneVNetHelper::SIZE, OneVNetHelper::MAC, OneVNetHelper::IP] do + OneVNetHelper::SIZE, OneVNetHelper::MAC, OneVNetHelper::IP, + OneVNetHelper::IP6 ] do helper.perform_action(args[0],options,"reservation made") do |vn| size = options[:size] || -1 name = options[:name] || -1 @@ -242,6 +246,7 @@ cmd=CommandParser::CmdParser.new(ARGV) do addr = nil addr = options[:mac] if options[:mac] addr = options[:ip] if options[:ip] + addr = options[:ip6] if options[:ip6] if size == -1 STDERR.puts "Specify a size (-s size) for the reservation" diff --git a/src/rm/RequestManagerVirtualNetwork.cc b/src/rm/RequestManagerVirtualNetwork.cc index 76a6845edc..4c8dabaa53 100644 --- a/src/rm/RequestManagerVirtualNetwork.cc +++ b/src/rm/RequestManagerVirtualNetwork.cc @@ -426,7 +426,7 @@ void VirtualNetworkReserve::request_execute( rc = vnpool->reserve_addr_by_ip(id, rid, size, ar_id, ip, att.resp_msg); } - if (!ip6.empty()) + else if (!ip6.empty()) { rc = vnpool->reserve_addr_by_ip6(id, rid, size, ar_id, ip6, att.resp_msg); diff --git a/src/vnm/AddressRange.cc b/src/vnm/AddressRange.cc index 261f06da40..1364fe53a4 100644 --- a/src/vnm/AddressRange.cc +++ b/src/vnm/AddressRange.cc @@ -1562,7 +1562,7 @@ int AddressRange::free_addr_by_ip6(PoolObjectSQL::ObjectType ot, int obid, { string error_msg; - if (!is_ipv6()) + if (!is_ipv6_static()) { return -1; }