The current createNetworkACL API supports the protocol parameter with values TCP,UDP and ICMP string.
Using this feature we can pass either protocol string or integer to the proto parameter.
The current network acl API is taking mandatory protocol field string to configure the network acl.
With this new requirement the protocol parameter accepts both protocol strings and protocol numbers. The values can be protocol names like TCP/UDP/ICMP strings or any valid protocol number.
Validation:
Cloudstack validates the passed protocol numbers with the list of supported protocol numbers. If invalid protocol number is passed then cloudstack throws error saying 'invalid protocol is passed'
Cloudstack API/Service layer should maintain mapping of protocol string and protocol number information and vise versa . Along with this cloudstack API/Service layer maintains can protocol takes ports.
Currently in UI protocol field is drop down box.
With new requirement the protocol field will be text box, it takes the either protocol name or number as string argument.
While displaying the network acls UI should display protocol and protocol number as example below.
TCP(6), UDP(17)
It is better if UI validates the protocol name and protocol numbers in the UI also.
Protocols ICMP, TCP, UDP and All are supported. Additionally protocol numbers from 0 to 255 are supported.
The existing back end scripts should work with the protocol name or protocol number if we pass protocol as string.
There is no back end script changes are required for this requirement
There are no upgrade changes.
1. http://en.wikipedia.org/wiki/List_of_network_protocols_%28OSI_model%29#Layer_3.2B4_protocol_suites
2. http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml
3. List of protocols from linux OS /etc/protocols
# Internet (IP) protocols
#
# Updated from http://www.iana.org/assignments/protocol-numbers and other
# sources.
# New protocols will be added on request if they have been officially
# assigned by IANA and are not historical.
# If you need a huge list of used numbers please install the nmap package.
ip 0 IP # internet protocol, pseudo protocol number
#hopopt 0 HOPOPT # IPv6 Hop-by-Hop Option [RFC1883]
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # Internet Group Management
ggp 3 GGP # gateway-gateway protocol
ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'')
st 5 ST # ST datagram mode
tcp 6 TCP # transmission control protocol
egp 8 EGP # exterior gateway protocol
igp 9 IGP # any private interior gateway (Cisco)
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # user datagram protocol
hmp 20 HMP # host monitoring protocol
xns-idp 22 XNS-IDP # Xerox NS IDP
rdp 27 RDP # "reliable datagram" protocol
iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4 [RFC905]
xtp 36 XTP # Xpress Transfer Protocol
ddp 37 DDP # Datagram Delivery Protocol
idpr-cmtp 38 IDPR-CMTP # IDPR Control Message Transport
ipv6 41 IPv6 # Internet Protocol, version 6
ipv6-route 43 IPv6-Route # Routing Header for IPv6
ipv6-frag 44 IPv6-Frag # Fragment Header for IPv6
idrp 45 IDRP # Inter-Domain Routing Protocol
rsvp 46 RSVP # Reservation Protocol
gre 47 GRE # General Routing Encapsulation
esp 50 IPSEC-ESP # Encap Security Payload [RFC2406]
ah 51 IPSEC-AH # Authentication Header [RFC2402]
skip 57 SKIP # SKIP
ipv6-icmp 58 IPv6-ICMP # ICMP for IPv6
ipv6-nonxt 59 IPv6-NoNxt # No Next Header for IPv6
ipv6-opts 60 IPv6-Opts # Destination Options for IPv6
rspf 73 RSPF CPHB # Radio Shortest Path First (officially CPHB)
vmtp 81 VMTP # Versatile Message Transport
eigrp 88 EIGRP # Enhanced Interior Routing Protocol (Cisco)
ospf 89 OSPFIGP # Open Shortest Path First IGP
ax.25 93 AX.25 # AX.25 frames
ipip 94 IPIP # IP-within-IP Encapsulation Protocol
etherip 97 ETHERIP # Ethernet-within-IP Encapsulation [RFC3378]
encap 98 ENCAP # Yet Another IP encapsulation [RFC1241]
# 99 # any private encryption scheme
pim 103 PIM # Protocol Independent Multicast
ipcomp 108 IPCOMP # IP Payload Compression Protocol
vrrp 112 VRRP # Virtual Router Redundancy Protocol
l2tp 115 L2TP # Layer Two Tunneling Protocol [RFC2661]
isis 124 ISIS # IS-IS over IPv4
sctp 132 SCTP # Stream Control Transmission Protocol
fc 133 FC # Fibre Channel
udplite 136 UDPLite # UDP-Lite
mpls-in-ip 138 MPLS-in-IP # MPLS-in-IP [RFC4023]
manet 138 # MANET Protocols
hip 139 HIP # Host Identity Protocol