1 #ifndef _GNTUN_PACKET_H_
2 #define _GNTUN_PACKET_H_
16 unsigned char sadr[16];
17 unsigned char dadr[16];
31 unsigned char data[1];
43 unsigned qr:1; // query:0, response:1
44 unsigned op:4; // query:0, inverse q.:1, status: 2
45 unsigned aa:1; // authoritative answer
46 unsigned tc:1; // message is truncated
47 unsigned rd:1; // recursion desired (client -> server)
48 unsigned ra:1; // recursion available (server -> client)
49 unsigned z:2; // reserved
50 unsigned a:1; // answer is signed by server
51 unsigned rcode:4; // 0 No error
57 unsigned qdcount:16; // number of questions
58 unsigned ancount:16; // number of answers
59 unsigned nscount:16; // number of authority-records
60 unsigned arcount:16; // number of additional records
61 unsigned char data[1];
67 unsigned char data[1];
82 void send_pkt(int fd, struct ip6_pkt* pkt);
83 int recv_ipv6pkt(int fd, struct pkt_tun** pkt);
84 int recv_pkt(int fd, struct pkt_tun** pkt);
85 struct ip6_pkt* parse_ip6(struct pkt_tun* pkt);
87 struct ip6_tcp* parse_ip6_tcp(struct ip6_pkt*);
88 struct ip6_udp* parse_ip6_udp(struct ip6_pkt*);
90 short payload(struct ip6_hdr* pkt);