{
$$ = payload_expr_alloc(&@$, &payload_icmp, $2);
}
+ | ICMP
+ {
+ uint8_t data = IPPROTO_ICMP;
+ $$ = constant_expr_alloc(&@$, &inet_protocol_type,
+ BYTEORDER_HOST_ENDIAN,
+ sizeof(data), &data);
+ }
;
icmp_hdr_field : TYPE { $$ = ICMPHDR_TYPE; }
{
$$ = payload_expr_alloc(&@$, &payload_ah, $2);
}
+ | AH
+ {
+ uint8_t data = IPPROTO_AH;
+ $$ = constant_expr_alloc(&@$, &inet_protocol_type,
+ BYTEORDER_HOST_ENDIAN,
+ sizeof(data), &data);
+ }
;
auth_hdr_field : NEXTHDR { $$ = AHHDR_NEXTHDR; }
{
$$ = payload_expr_alloc(&@$, &payload_esp, $2);
}
+ | ESP
+ {
+ uint8_t data = IPPROTO_ESP;
+ $$ = constant_expr_alloc(&@$, &inet_protocol_type,
+ BYTEORDER_HOST_ENDIAN,
+ sizeof(data), &data);
+ }
;
esp_hdr_field : SPI { $$ = ESPHDR_SPI; }
{
$$ = payload_expr_alloc(&@$, &payload_comp, $2);
}
+ | COMP
+ {
+ uint8_t data = IPPROTO_COMP;
+ $$ = constant_expr_alloc(&@$, &inet_protocol_type,
+ BYTEORDER_HOST_ENDIAN,
+ sizeof(data), &data);
+ }
;
comp_hdr_field : NEXTHDR { $$ = COMPHDR_NEXTHDR; }
{
$$ = payload_expr_alloc(&@$, &payload_udp, $2);
}
+ | UDP
+ {
+ uint8_t data = IPPROTO_UDP;
+ $$ = constant_expr_alloc(&@$, &inet_protocol_type,
+ BYTEORDER_HOST_ENDIAN,
+ sizeof(data), &data);
+ }
;
udp_hdr_field : SPORT { $$ = UDPHDR_SPORT; }
{
$$ = payload_expr_alloc(&@$, &payload_udplite, $2);
}
+ | UDPLITE
+ {
+ uint8_t data = IPPROTO_UDPLITE;
+ $$ = constant_expr_alloc(&@$, &inet_protocol_type,
+ BYTEORDER_HOST_ENDIAN,
+ sizeof(data), &data);
+ }
;
udplite_hdr_field : SPORT { $$ = UDPHDR_SPORT; }
{
$$ = payload_expr_alloc(&@$, &payload_tcp, $2);
}
+ | TCP
+ {
+ uint8_t data = IPPROTO_TCP;
+ $$ = constant_expr_alloc(&@$, &inet_protocol_type,
+ BYTEORDER_HOST_ENDIAN,
+ sizeof(data), &data);
+ }
;
tcp_hdr_field : SPORT { $$ = TCPHDR_SPORT; }
{
$$ = payload_expr_alloc(&@$, &payload_dccp, $2);
}
+ | DCCP
+ {
+ uint8_t data = IPPROTO_DCCP;
+ $$ = constant_expr_alloc(&@$, &inet_protocol_type,
+ BYTEORDER_HOST_ENDIAN,
+ sizeof(data), &data);
+ }
;
dccp_hdr_field : SPORT { $$ = DCCPHDR_SPORT; }
{
$$ = payload_expr_alloc(&@$, &payload_sctp, $2);
}
+ | SCTP
+ {
+ uint8_t data = IPPROTO_SCTP;
+ $$ = constant_expr_alloc(&@$, &inet_protocol_type,
+ BYTEORDER_HOST_ENDIAN,
+ sizeof(data), &data);
+ }
;
sctp_hdr_field : SPORT { $$ = SCTPHDR_SPORT; }