Print this page
dccp: options and features
*** 151,160 ****
--- 151,162 ----
{IPPROTO_ENCAP, ETHERTYPE_IP, IPV4_TYPE_HEADER_OFFSET},
{IPPROTO_ESP, ETHERTYPE_IP, IPV4_TYPE_HEADER_OFFSET},
{IPPROTO_ESP, ETHERTYPE_IPV6, IPV6_TYPE_HEADER_OFFSET},
{IPPROTO_AH, ETHERTYPE_IP, IPV4_TYPE_HEADER_OFFSET},
{IPPROTO_AH, ETHERTYPE_IPV6, IPV6_TYPE_HEADER_OFFSET},
+ {IPPROTO_DCCP, ETHERTYPE_IP, IPV4_TYPE_HEADER_OFFSET},
+ {IPPROTO_DCCP, ETHERTYPE_IPV6, IPV6_TYPE_HEADER_OFFSET},
{-1, 0, 0} /* must be the final entry */
};
static transport_table_t ipnet_transport_mapping_table[] = {
{IPPROTO_TCP, (DL_IPNETINFO_VERSION << 8 | AF_INET),
*** 185,194 ****
--- 187,200 ----
IPV6_TYPE_HEADER_OFFSET},
{IPPROTO_AH, (DL_IPNETINFO_VERSION << 8 | AF_INET),
IPV4_TYPE_HEADER_OFFSET},
{IPPROTO_AH, (DL_IPNETINFO_VERSION << 8 | AF_INET6),
IPV6_TYPE_HEADER_OFFSET},
+ {IPPROTO_DCCP, (DL_IPNETINFO_VERSION << 8 | AF_INET),
+ IPV4_TYPE_HEADER_OFFSET},
+ {IPPROTO_DCCP, (DL_IPNETINFO_VERSION << 8 | AF_INET6),
+ IPV6_TYPE_HEADER_OFFSET},
{-1, 0, 0} /* must be the final entry */
};
static transport_table_t ib_transport_mapping_table[] = {
{IPPROTO_TCP, ETHERTYPE_IP, IPV4_TYPE_HEADER_OFFSET},
*** 204,213 ****
--- 210,221 ----
{IPPROTO_ENCAP, ETHERTYPE_IP, IPV4_TYPE_HEADER_OFFSET},
{IPPROTO_ESP, ETHERTYPE_IP, IPV4_TYPE_HEADER_OFFSET},
{IPPROTO_ESP, ETHERTYPE_IPV6, IPV6_TYPE_HEADER_OFFSET},
{IPPROTO_AH, ETHERTYPE_IP, IPV4_TYPE_HEADER_OFFSET},
{IPPROTO_AH, ETHERTYPE_IPV6, IPV6_TYPE_HEADER_OFFSET},
+ {IPPROTO_DCCP, ETHERTYPE_IP, IPV4_TYPE_HEADER_OFFSET},
+ {IPPROTO_DCCP, ETHERTYPE_IPV6, IPV6_TYPE_HEADER_OFFSET},
{-1, 0, 0} /* must be the final entry */
};
typedef struct datalink {
uint_t dl_type;
*** 1326,1335 ****
--- 1334,1350 ----
opstack++;
next();
break;
}
+ if (EQ("dccp")) {
+ pf_check_transport_protocol(IPPROTO_DCCP);
+ opstack++;
+ next();
+ break;
+ }
+
if (EQ("(")) {
inBrace++;
next();
pf_expression();
if (EQ(")")) {