From f26175af848bfb3faaedd98b402949e8bd7ab8bc Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Mon, 1 Feb 2016 15:56:10 +0100 Subject: trafgen: parser: Add TCP header generation function Add a function 'tcp()' to generate TCP headers from the trafgen configuration language. Fields supported: sp|sport TCP source port (default 0) dp|dport TCP destination port (default 0) seq Sequence number (default: 0) aseq|ackseq Acknowledgement number (default 0) doff|hlen Header length/data offset (default: 5) cwr Congestion Window Reduced flag (default: 0) ece|ecn ECN-Echo flag (default: 0) urg Urgent flag (default: 0) ack Acknowledgement flag (default: 0) psh Push flag (default: 0) rst Reset flag (default: 0) syn Synchronize flag (default: 0) fin Finish flag (default: 0) win|window Receive window size (default: 0) csum Checksum field (calculated automatically) urgptr Urgent pointer (default: 0) Example (SYN on port 80/http): { tcp(dport=80, syn, window=5840) } Signed-off-by: Tobias Klauser --- trafgen_lexer.l | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'trafgen_lexer.l') diff --git a/trafgen_lexer.l b/trafgen_lexer.l index 5ab0815..83e7602 100644 --- a/trafgen_lexer.l +++ b/trafgen_lexer.l @@ -143,10 +143,26 @@ ip4_addr ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+) "sp"|"sport" { return K_SPORT; } "dp"|"dport" { return K_DPORT; } + /* TCP */ +"seq" { return K_SEQ; } +"ackseq"|"aseq" { return K_ACK_SEQ; } +"doff"|hlen { return K_DOFF; } +"cwr" { return K_CWR; } +"ece"|"ecn" { return K_ECE; } +"urg" { return K_URG; } +"ack" { return K_ACK; } +"psh" { return K_PSH; } +"rst" { return K_RST; } +"syn" { return K_SYN; } +"fin" { return K_FIN; } +"win"|"window" { return K_WINDOW; } +"urgptr" { return K_URG_PTR; } + "eth" { return K_ETH; } "arp" { return K_ARP; } "ip4"|"ipv4" { return K_IP4; } "udp" { return K_UDP; } +"tcp" { return K_TCP; } [ ]*"-"[ ]* { return '-'; } [ ]*"+"[ ]* { return '+'; } -- cgit v1.2.3-54-g00ecf