puppet-neutron/lib/puppet/parser/functions/validate_vxlan_udp_port.rb
Emilien Macchi bab3cbf0c8 Fix logic in validate_vxlan_udp_port
Fix the logic in validate_vxlan_udp_port.

According to RFC6056 [1]:
*  The Well-Known Ports, 0 through 1023.
*  The Registered Ports, 1024 through 49151
*  The Dynamic and/or Private Ports, 49152 through 65535

And RFC7348 [2]:
A well-known UDP port (4789) has been assigned by the IANA in the
Service Name and Transport Protocol Port Number Registry for VXLAN.

So this patch makes sure we either use 4789 or a dynamic port.

[1] http://tools.ietf.org/html/rfc6056
[2] https://tools.ietf.org/html/rfc7348

Change-Id: Id96e675f9cb58bb50ae29147c5b470224b15b4d2
2016-07-04 13:31:03 +00:00

33 lines
1.1 KiB
Ruby

#
# Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
#
# Author: Emilien Macchi <emilien.macchi@enovance.com>
# Martin Magr <mmagr@redhat.com>
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# Advanced validation for VXLAN UDP port configuration
#
module Puppet::Parser::Functions
newfunction(:validate_vxlan_udp_port) do |args|
value = Integer(args[0])
# check if port is either default value or one of the private ports
# according to http://tools.ietf.org/html/rfc6056
if value != 4789 and (49151 >= value or value > 65535)
raise Puppet::Error, "vxlan udp port is invalid."
end
end
end