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 |