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];
44 unsigned rd:1; // recursion desired (client -> server)
45 unsigned tc:1; // message is truncated
46 unsigned aa:1; // authoritative answer
47 unsigned op:4; // query:0, inverse q.:1, status: 2
48 unsigned qr:1; // query:0, response:1
50 unsigned rcode:4; // 0 No error
56 unsigned z:3; // reserved
57 unsigned ra:1; // recursion available (server -> client)
59 unsigned short qdcount; // number of questions
60 unsigned short ancount; // number of answers
61 unsigned short nscount; // number of authority-records
62 unsigned short arcount; // number of additional records
63 unsigned char data[1];
69 unsigned short qclass;
77 unsigned short data_len;
84 unsigned char data[1];
99 void send_pkt(int fd, struct ip6_pkt* pkt);
100 int recv_ipv6pkt(int fd, struct pkt_tun** pkt);
101 int recv_pkt(int fd, struct pkt_tun** pkt);
102 struct ip6_pkt* parse_ip6(struct pkt_tun* pkt);
109 struct ip6_tcp* parse_ip6_tcp(struct ip6_pkt*);
110 struct ip6_udp* parse_ip6_udp(struct ip6_pkt*);
112 short payload(struct ip6_hdr* pkt);