diff options
| author | zhuzhenjun <[email protected]> | 2023-10-10 17:14:34 +0800 |
|---|---|---|
| committer | zhuzhenjun <[email protected]> | 2023-10-10 17:14:34 +0800 |
| commit | f6af0204eb2d8a02b4c434148faff9873a2976ce (patch) | |
| tree | efa0c17c44398cc18c4559ffa433efb4104befd5 /example | |
| parent | f203d15fae598b7ba6645e0297f15c60e2006c1f (diff) | |
src: linux/*.h -> netinet/*.h
Diffstat (limited to 'example')
| -rw-r--r-- | example/osfp_example.c | 46 |
1 files changed, 15 insertions, 31 deletions
diff --git a/example/osfp_example.c b/example/osfp_example.c index 62d08df..146587e 100644 --- a/example/osfp_example.c +++ b/example/osfp_example.c @@ -4,12 +4,6 @@ #include <unistd.h> #include <time.h> -#include <linux/in.h> -#include <linux/if_ether.h> -#include <linux/ip.h> -#include <linux/ipv6.h> -#include <linux/tcp.h> - #include <sys/socket.h> #include <pcap.h> @@ -52,14 +46,6 @@ typedef struct Address_ { #define addr_data8 address.address_un_data8 #define addr_in6addr address.address_un_in6 -#define COPY_ADDRESS(a, b) do { \ - (b)->family = (a)->family; \ - (b)->addr_data32[0] = (a)->addr_data32[0]; \ - (b)->addr_data32[1] = (a)->addr_data32[1]; \ - (b)->addr_data32[2] = (a)->addr_data32[2]; \ - (b)->addr_data32[3] = (a)->addr_data32[3]; \ - } while (0) - /* Set the IPv4 addresses into the Addrs of the Packet. * Make sure p->ip4h is initialized and validated. * @@ -85,18 +71,18 @@ typedef struct Address_ { * Make sure p->ip6h is initialized and validated. */ #define SET_IPV6_SRC_ADDR(p, a) do { \ (a)->family = AF_INET6; \ - (a)->addr_data32[0] = (p)->ip6h->saddr.s6_addr32[0]; \ - (a)->addr_data32[1] = (p)->ip6h->saddr.s6_addr32[1]; \ - (a)->addr_data32[2] = (p)->ip6h->saddr.s6_addr32[2]; \ - (a)->addr_data32[3] = (p)->ip6h->saddr.s6_addr32[3]; \ + (a)->addr_data32[0] = (p)->ip6h->ip6_src.__in6_u.__u6_addr32[0]; \ + (a)->addr_data32[1] = (p)->ip6h->ip6_src.__in6_u.__u6_addr32[1]; \ + (a)->addr_data32[2] = (p)->ip6h->ip6_src.__in6_u.__u6_addr32[2]; \ + (a)->addr_data32[3] = (p)->ip6h->ip6_src.__in6_u.__u6_addr32[3]; \ } while (0) #define SET_IPV6_DST_ADDR(p, a) do { \ (a)->family = AF_INET6; \ - (a)->addr_data32[0] = (p)->ip6h->daddr.s6_addr32[0]; \ - (a)->addr_data32[1] = (p)->ip6h->daddr.s6_addr32[1]; \ - (a)->addr_data32[2] = (p)->ip6h->daddr.s6_addr32[2]; \ - (a)->addr_data32[3] = (p)->ip6h->daddr.s6_addr32[3]; \ + (a)->addr_data32[0] = (p)->ip6h->ip6_dst.__in6_u.__u6_addr32[0]; \ + (a)->addr_data32[1] = (p)->ip6h->ip6_dst.__in6_u.__u6_addr32[1]; \ + (a)->addr_data32[2] = (p)->ip6h->ip6_dst.__in6_u.__u6_addr32[2]; \ + (a)->addr_data32[3] = (p)->ip6h->ip6_dst.__in6_u.__u6_addr32[3]; \ } while (0) #define TCP_GET_RAW_SRC_PORT(tcph) ntohs((tcph)->source) @@ -131,7 +117,7 @@ typedef struct Address_ { typedef struct Packet_ { struct ethhdr *ethh; struct iphdr *iph; - struct ipv6hdr *ip6h; + struct ip6_hdr *ip6h; struct tcphdr *tcph; char srcip[46]; @@ -268,15 +254,15 @@ int packet_decode_ipv6(Packet *p, const unsigned char *data, unsigned int len) int ret = -1; unsigned short ip6_payload_len; unsigned char ip6_nexthdr; - struct ipv6hdr *ip6h; + struct ip6_hdr *ip6h; if (len < IPV6_HEADER_LEN) { goto exit; } - ip6h = (struct ipv6hdr *)data; - ip6_payload_len = ntohs(ip6h->payload_len); - ip6_nexthdr = ip6h->nexthdr; + ip6h = (struct ip6_hdr *)data; + ip6_payload_len = ntohs(ip6h->ip6_ctlun.ip6_un1.ip6_un1_plen); + ip6_nexthdr = ip6h->ip6_ctlun.ip6_un1.ip6_un1_nxt; if (len < IPV6_HEADER_LEN + ip6_payload_len) { goto exit; @@ -443,7 +429,7 @@ void example_detect(struct osfp_db *osfp_db, Packet *p) char str_buf[1024]; //unsigned char *iph = (unsigned char *)(p->iph != NULL ? (void *)p->iph : (void *)p->ip6h); struct iphdr *iph; - struct ipv6hdr *ip6h; + struct ip6_hdr *ip6h; struct tcphdr *tcph; unsigned int tcph_len; struct osfp_result *result = NULL; @@ -451,7 +437,7 @@ void example_detect(struct osfp_db *osfp_db, Packet *p) printf("Example ipv4 header detect: --------------------------\n"); iph = (struct iphdr *)p->iph; - ip6h = (struct ipv6hdr *)p->ip6h; + ip6h = (struct ip6_hdr *)p->ip6h; tcph = (struct tcphdr *)p->tcph; tcph_len = tcph->doff << 2; @@ -641,8 +627,6 @@ int main(int argc, char *argv[]) exit(1); } - osfp_score_db_debug_print(osfp_db->score_db); - // loop while (1) { int r = pcap_dispatch(pcap_handle, 0, (pcap_handler)process_packet, (void*)osfp_db); |
