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
/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 \# 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.
ip0IP# internet protocol, pseudo protocol number
\#hopopt0HOPOPT\# IPv6 Hop-by-Hop Option \[RFC1883\] |
icmp1ICMP# internet control message protocol
igmp2IGMP# Internet Group Management
ggp3GGP# gateway-gateway protocol
ipencap4IP-ENCAP# IP encapsulated in IP (officially ``IP'')
st5ST# ST datagram mode
tcp6TCP# transmission control protocol
egp8EGP# exterior gateway protocol
igp9IGP# any private interior gateway (Cisco)
pup12PUP# PARC universal packet protocol
udp17UDP# user datagram protocol
hmp20HMP# host monitoring protocol
xns-idp22XNS-IDP# Xerox NS IDP
rdp27RDP# "reliable datagram" protocol
iso-tp429ISO-TP4\# ISO Transport Protocol class 4 \[RFC905\] |
xtp36XTP# Xpress Transfer Protocol
ddp37DDP# Datagram Delivery Protocol
idpr-cmtp 38IDPR-CMTP# IDPR Control Message Transport
ipv641IPv6# Internet Protocol, version 6
ipv6-route 43IPv6-Route# Routing Header for IPv6
ipv6-frag 44IPv6-Frag# Fragment Header for IPv6
idrp45IDRP# Inter-Domain Routing Protocol
rsvp46RSVP# Reservation Protocol
gre47GRE# General Routing Encapsulation
esp50IPSEC-ESP\# Encap Security Payload \[RFC2406\] |
ah51IPSEC-AH\# Authentication Header \[RFC2402\] |
skip57SKIP# SKIP
ipv6-icmp 58IPv6-ICMP# ICMP for IPv6
ipv6-nonxt 59IPv6-NoNxt# No Next Header for IPv6
ipv6-opts 60IPv6-Opts# Destination Options for IPv6
rspf73RSPF CPHB# Radio Shortest Path First (officially CPHB)
vmtp81VMTP# Versatile Message Transport
eigrp88EIGRP# Enhanced Interior Routing Protocol (Cisco)
ospf89OSPFIGP# Open Shortest Path First IGP
ax.2593AX.25# AX.25 frames
ipip94IPIP# IP-within-IP Encapsulation Protocol
etherip97ETHERIP\# Ethernet-within-IP Encapsulation \[RFC3378\] |
encap98ENCAP\# Yet Another IP encapsulation \[RFC1241\] |
#99# any private encryption scheme
pim103PIM# Protocol Independent Multicast
ipcomp108IPCOMP# IP Payload Compression Protocol
vrrp112VRRP# Virtual Router Redundancy Protocol
l2tp115L2TP\# Layer Two Tunneling Protocol \[RFC2661\] |
isis124ISIS# IS-IS over IPv4
sctp132SCTP# Stream Control Transmission Protocol
fc133FC# Fibre Channel
udplite136UDPLite# UDP-Lite
mpls-in-ip 138MPLS-in-IP\# MPLS-in-IP \[RFC4023\] |
manet138# MANET Protocols
hip139HIP# Host Identity Protocol