📄 libnet-headers.h
字号:
#endif#ifndef ICMP_UNREACH_HOST_PRECEDENCE#define ICMP_UNREACH_HOST_PRECEDENCE 14#endif#ifndef ICMP_UNREACH_PRECEDENCE_CUTOFF#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15#endif#ifndef ICMP_REDIRECT_NET#define ICMP_REDIRECT_NET 0#endif#ifndef ICMP_REDIRECT_HOST#define ICMP_REDIRECT_HOST 1#endif#ifndef ICMP_REDIRECT_TOSNET#define ICMP_REDIRECT_TOSNET 2#endif#ifndef ICMP_REDIRECT_TOSHOST#define ICMP_REDIRECT_TOSHOST 3#endif#ifndef ICMP_TIMXCEED_INTRANS#define ICMP_TIMXCEED_INTRANS 0#endif#ifndef ICMP_TIMXCEED_REASS#define ICMP_TIMXCEED_REASS 1#endif#ifndef ICMP_PARAMPROB_OPTABSENT#define ICMP_PARAMPROB_OPTABSENT 1#endif u_short icmp_sum; union { struct { u_short id; u_short seq; }echo;#undef icmp_id#undef icmp_seq#define icmp_id hun.echo.id#define icmp_seq hun.echo.seq u_long gateway; struct { u_short pad; u_short mtu; }frag; }hun; union { struct { n_time its_otime; n_time its_rtime; n_time its_ttime; }ts; struct { struct ip idi_ip; /* options and then 64 bits of data */ }ip; u_long mask; char data[1];#undef icmp_mask#define icmp_mask dun.mask#undef icmp_data#define icmp_data dun.data#undef icmp_otime#define icmp_otime dun.ts.its_otime#undef icmp_rtime#define icmp_rtime dun.ts.its_rtime#undef icmp_ttime#define icmp_ttime dun.ts.its_ttime }dun;};/* * IGMP header. */struct libnet_igmp_hdr{ u_char igmp_type;#ifndef IGMP_MEMBERSHIP_QUERY#define IGMP_MEMBERSHIP_QUERY 0x11 /* membership query */#endif#ifndef IGMP_V1_MEMBERSHIP_REPORT#define IGMP_V1_MEMBERSHIP_REPORT 0x12 /* Ver. 1 membership report */#endif#ifndef IGMP_V2_MEMBERSHIP_REPORT#define IGMP_V2_MEMBERSHIP_REPORT 0x16 /* Ver. 2 membership report */#endif#ifndef IGMP_LEAVE_GROUP#define IGMP_LEAVE_GROUP 0x17 /* Leave-group message */#endif u_char igmp_code; u_short igmp_sum; struct in_addr igmp_group;};/* * Ethernet packet header prototype. Too many O/S's define this differently. * Easy enough to solve that and define it here. */struct libnet_ethernet_hdr{#ifndef ETHER_ADDR_LEN#define ETHER_ADDR_LEN 6#endif u_char ether_dhost[ETHER_ADDR_LEN]; /* destination ethernet address */ u_char ether_shost[ETHER_ADDR_LEN]; /* source ethernet address */ u_short ether_type; /* packet type ID */};#define ETHERTYPE_PUP 0x0200 /* PUP protocol */#define ETHERTYPE_IP 0x0800 /* IP protocol */#define ETHERTYPE_ARP 0x0806 /* Addr. resolution protocol */#define ETHERTYPE_REVARP 0x8035 /* reverse Addr. resolution protocol */#define ETHERTYPE_VLAN 0x8100 /* IEEE 802.1Q VLAN tagging */#define ETHERTYPE_LOOPBACK 0x9000 /* used to test interfaces */#if (!__GLIBC__)struct ether_addr{ u_char ether_addr_octet[6];};#endif/* * ARP packet header prototype. Too many O/S's define this differently. * Easy enough to solve that and define it here. */struct libnet_arp_hdr{ u_short ar_hrd; /* format of hardware address */#define ARPHRD_ETHER 1 /* ethernet hardware format */ u_short ar_pro; /* format of protocol address */ u_char ar_hln; /* length of hardware address */ u_char ar_pln; /* length of protocol addres */ u_short ar_op; /* operation type */#define ARPOP_REQUEST 1 /* req to resolve address */#define ARPOP_REPLY 2 /* resp to previous request */#define ARPOP_REVREQUEST 3 /* req protocol address given hardware */#define ARPOP_REVREPLY 4 /* resp giving protocol address */#define ARPOP_INVREQUEST 8 /* req to identify peer */#define ARPOP_INVREPLY 9 /* resp identifying peer */ /* * These should implementation defined but I've hardcoded eth/IP. */ u_char ar_sha[6]; /* sender hardware address */ u_char ar_spa[4]; /* sender protocol address */ u_char ar_tha[6]; /* target hardware address */ u_char ar_tpa[4]; /* target protocol address */};/* * Base DNS header. */struct libnet_dns_hdr{ u_short id; /* DNS packet ID */ u_short flags; /* DNS flags */ u_short num_q; /* Number of questions */ u_short num_answ_rr; /* Number of answer resource records */ u_short num_auth_rr; /* Number of authority resource records */ u_short num_addi_rr; /* Number of additional resource records */};/* * Base RIP (routing information protocol) header. */struct libnet_rip_hdr{ u_char cmd; /* RIP command */#define RIPCMD_REQUEST 1 /* want info */#define RIPCMD_RESPONSE 2 /* responding to request */#define RIPCMD_TRACEON 3 /* turn tracing on */#define RIPCMD_TRACEOFF 4 /* turn it off */#define RIPCMD_POLL 5 /* like request, but anyone answers */#define RIPCMD_POLLENTRY 6 /* like poll, but for entire entry */#define RIPCMD_MAX 7 u_char ver; /* RIP version */#define RIPVER_0 0#define RIPVER_1 1#define RIPVER_2 2 u_short rd; /* Zero (v1) or Routing Domain (v2) */ u_short af; /* Address family */ u_short rt; /* Zero (v1) or Route Tag (v2) */ u_long addr; /* IP address */ u_long mask; /* Zero (v1) or Subnet Mask (v2) */ u_long next_hop; /* Zero (v1) or Next hop IP address (v2) */ u_long metric; /* Metric */};/* * VRRP packet header prototype. */#ifndef IPPROTO_VRRP#define IPPROTO_VRRP 112#endifstruct libnet_vrrp_hdr{#if (LIBNET_LIL_ENDIAN) u_char vrrp_v:4, /* protocol version */ vrrp_t:4; /* packet type */#endif#if (LIBNET_BIG_ENDIAN) u_char vrrp_t:4, /* packet type */ vrrp_v:4; /* protocol version */#endif#define LIBNET_VRRP_TYPE_ADVERT 0x1 u_char vrrp_vrouter_id; /* virtual router id */ u_char vrrp_priority; /* priority */ u_char vrrp_ip_count; /* number of IP addresses */ u_char vrrp_auth_type; /* authorization type */#define LIBNET_VRRP_AUTH_NONE 0x1#define LIBNET_VRRP_AUTH_PASSWD 0x2#define LIBNET_VRRP_AUTH_IPAH 0x3 u_char vrrp_advert_int; /* advertisement interval */ u_short vrrp_sum; /* checksum */};#if 0struct libnet_snmp_hdr{ /* ASN.1 BER support first */};#endif/* * TCP options structure. */struct tcpoption{ u_char tcpopt_list[MAX_IPOPTLEN];};#if (__linux__)/* * Linux has a radically different IP options structure from BSD. */struct ipoption{ struct in_addr ipopt_dst; /* first-hop dst if source routed */ char ipopt_list[MAX_IPOPTLEN]; /* options proper */};#endif#endif /* __LIBNET_HEADERS_H *//* EOF */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -