Print this page
%B

@@ -24,11 +24,11 @@
 
 /*
  * This file contains routines that are used to modify/retrieve protocol or
  * interface property values. It also holds all the supported properties for
  * both IP interface and protocols in `ipadm_prop_desc_t'. Following protocols
- * are supported: IP, IPv4, IPv6, TCP, SCTP, UDP and ICMP.
+ * are supported: IP, IPv4, IPv6, TCP, SCTP, UDP, ICMP and DCCP.
  *
  * This file also contains walkers, which walks through the property table and
  * calls the callback function, of the form `ipadm_prop_wfunc_t' , for every
  * property in the table.
  */

@@ -80,11 +80,11 @@
                         i_ipadm_set_ecnsack, i_ipadm_set_hostmodel;
 
 /* array of protocols we support */
 static int protocols[] = { MOD_PROTO_IP, MOD_PROTO_RAWIP,
                             MOD_PROTO_TCP, MOD_PROTO_UDP,
-                            MOD_PROTO_SCTP };
+                            MOD_PROTO_SCTP, MOD_PROTO_DCCP };
 
 /*
  * Supported IP protocol properties.
  */
 static ipadm_prop_desc_t ipadm_ip_prop_table[] = {

@@ -237,10 +237,34 @@
             i_ipadm_set_prop, i_ipadm_get_prop, i_ipadm_get_prop },
 
         { NULL, 0, 0, 0, NULL, NULL, NULL }
 };
 
+/* Supported DCCP protocol properties */
+static ipadm_prop_desc_t ipadm_dccp_prop_table[] = {
+        { "extra_priv_ports", IPADMPROP_CLASS_MODULE, MOD_PROTO_DCCP,
+            IPADMPROP_MULVAL, i_ipadm_set_eprivport, i_ipadm_get_prop,
+            i_ipadm_get_prop },
+
+        { "largest_anon_port", IPADMPROP_CLASS_MODULE, MOD_PROTO_DCCP, 0,
+            i_ipadm_set_prop, i_ipadm_get_prop, i_ipadm_get_prop },
+
+        { "recv_maxbuf", IPADMPROP_CLASS_MODULE, MOD_PROTO_DCCP, 0,
+            i_ipadm_set_prop, i_ipadm_get_prop, i_ipadm_get_prop },
+
+        { "send_maxbuf", IPADMPROP_CLASS_MODULE, MOD_PROTO_DCCP, 0,
+            i_ipadm_set_prop, i_ipadm_get_prop, i_ipadm_get_prop },
+
+        { "smallest_anon_port", IPADMPROP_CLASS_MODULE, MOD_PROTO_DCCP, 0,
+            i_ipadm_set_prop, i_ipadm_get_prop, i_ipadm_get_prop },
+
+        { "smallest_nonpriv_port", IPADMPROP_CLASS_MODULE, MOD_PROTO_DCCP, 0,
+            i_ipadm_set_prop, i_ipadm_get_prop, i_ipadm_get_prop },
+
+        { NULL, 0, 0, 0, NULL, NULL, NULL }
+};
+
 /*
  * A dummy private property structure, used while handling private
  * protocol properties (properties not yet supported by libipadm).
  */
 static ipadm_prop_desc_t        ipadm_privprop =\

@@ -264,10 +288,12 @@
                 return (ipadm_tcp_prop_table);
         case MOD_PROTO_UDP:
                 return (ipadm_udp_prop_table);
         case MOD_PROTO_SCTP:
                 return (ipadm_sctp_prop_table);
+        case MOD_PROTO_DCCP:
+                return (ipadm_dccp_prop_table);
         }
 
         return (NULL);
 }
 

@@ -318,10 +344,12 @@
                 return ("tcp");
         case MOD_PROTO_UDP:
                 return ("udp");
         case MOD_PROTO_SCTP:
                 return ("sctp");
+        case MOD_PROTO_DCCP:
+                return ("dccp");
         }
 
         return (NULL);
 }
 

@@ -344,10 +372,12 @@
                 return (MOD_PROTO_RAWIP);
         else if (strcmp(protostr, "sctp") == 0)
                 return (MOD_PROTO_SCTP);
         else if (strcmp(protostr, "arp") == 0)
                 return (MOD_PROTO_IP);
+        else if (strcmp(protostr, "dccp") == 0)
+                return (MOD_PROTO_DCCP);
 
         return (MOD_PROTO_NONE);
 }
 
 /* ARGSUSED */