📄 libnet-headers.h
字号:
#if (LIBNET_LIL_ENDIAN)
unsigned char ip_hl:4, /* header length */
ip_v:4; /* version */
#endif
#if (LIBNET_BIG_ENDIAN)
unsigned char ip_v:4, /* version */
ip_hl:4; /* header length */
#endif
u_char ip_tos; /* type of service */
#ifndef IPTOS_LOWDELAY
#define IPTOS_LOWDELAY 0x10
#endif
#ifndef IPTOS_THROUGHPUT
#define IPTOS_THROUGHPUT 0x08
#endif
#ifndef IPTOS_RELIABILITY
#define IPTOS_RELIABILITY 0x04
#endif
#ifndef IPTOS_LOWCOST
#define IPTOS_LOWCOST 0x02
#endif
u_short ip_len; /* total length */
u_short ip_id; /* identification */
u_short ip_off;
#ifndef IP_RF
#define IP_RF 0x8000 /* reserved fragment flag */
#endif
#ifndef IP_DF
#define IP_DF 0x4000 /* dont fragment flag */
#endif
#ifndef IP_MF
#define IP_MF 0x2000 /* more fragments flag */
#endif
#ifndef IP_OFFMASK
#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
#endif
u_char ip_ttl; /* time to live */
u_char ip_p; /* protocol */
u_short ip_sum; /* checksum */
struct in_addr ip_src, ip_dst; /* source and dest address */
};
/*
* IP options
*/
#ifndef IPOPT_EOL
#define IPOPT_EOL 0 /* end of option list */
#endif
#ifndef IPOPT_NOP
#define IPOPT_NOP 1 /* no operation */
#endif
#ifndef IPOPT_RR
#define IPOPT_RR 7 /* record packet route */
#endif
#ifndef IPOPT_TS
#define IPOPT_TS 68 /* timestamp */
#endif
#ifndef IPOPT_SECURITY
#define IPOPT_SECURITY 130 /* provide s,c,h,tcc */
#endif
#ifndef IPOPT_LSRR
#define IPOPT_LSRR 131 /* loose source route */
#endif
#ifndef IPOPT_SATID
#define IPOPT_SATID 136 /* satnet id */
#endif
#ifndef IPOPT_SSRR
#define IPOPT_SSRR 137 /* strict source route */
#endif
struct libnet_in6_addr
{
union
{
u_char __u6_addr8[16];
u_short __u6_addr16[8];
u_long __u6_addr32[4];
} __u6_addr; /* 128-bit IP6 address */
};
#define libnet_s6_addr __u6_addr.__u6_addr8
/*
* IPv6 header
* Internet Protocol, version 6
* Static header size: 40 bytes
*/
struct libnet_ipv6_hdr
{
u_char ip_flags[4]; /* version, traffic class, flow label */
u_short ip_len; /* total length */
u_char ip_nh; /* next header */
u_char ip_hl; /* hop limit */
struct libnet_in6_addr ip_src, ip_dst; /* source and dest address */
};
/*
* ICMP6 header
* Internet Control Message Protocol v6
* Base header size: 8 bytes
*/
#ifndef IPPROTO_ICMP6
#define IPPROTO_ICMP6 0x3a
#endif
struct libnet_icmpv6_hdr
{
u_char icmp_type; /* ICMP type */
#ifndef ICMP6_ECHO
#define ICMP6_ECHO 128
#endif
#ifndef ICMP6_ECHOREPLY
#define ICMP6_ECHOREPLY 129
#endif
#ifndef ICMP6_UNREACH
#define ICMP6_UNREACH 1
#endif
#ifndef ICMP6_PKTTOOBIG
#define ICMP6_PKTTOOBIG 2
#endif
#ifndef ICMP6_TIMXCEED
#define ICMP6_TIMXCEED 3
#endif
#ifndef ICMP6_PARAMPROB
#define ICMP6_PARAMPROB 4
#endif
u_char icmp_code; /* ICMP code */
u_short icmp_sum; /* ICMP Checksum */
u_short id; /* ICMP id */
u_short seq; /* ICMP sequence number */
};
/*
* ICMP header
* Internet Control Message Protocol
* Base header size: 4 bytes
*/
struct libnet_icmpv4_hdr
{
u_char icmp_type; /* ICMP type */
#ifndef ICMP_ECHOREPLY
#define ICMP_ECHOREPLY 0
#endif
#ifndef ICMP_UNREACH
#define ICMP_UNREACH 3
#endif
#ifndef ICMP_SOURCEQUENCH
#define ICMP_SOURCEQUENCH 4
#endif
#ifndef ICMP_REDIRECT
#define ICMP_REDIRECT 5
#endif
#ifndef ICMP_ECHO
#define ICMP_ECHO 8
#endif
#ifndef ICMP_ROUTERADVERT
#define ICMP_ROUTERADVERT 9
#endif
#ifndef ICMP_ROUTERSOLICIT
#define ICMP_ROUTERSOLICIT 10
#endif
#ifndef ICMP_TIMXCEED
#define ICMP_TIMXCEED 11
#endif
#ifndef ICMP_PARAMPROB
#define ICMP_PARAMPROB 12
#endif
#ifndef ICMP_TSTAMP
#define ICMP_TSTAMP 13
#endif
#ifndef ICMP_TSTAMPREPLY
#define ICMP_TSTAMPREPLY 14
#endif
#ifndef ICMP_IREQ
#define ICMP_IREQ 15
#endif
#ifndef ICMP_IREQREPLY
#define ICMP_IREQREPLY 16
#endif
#ifndef ICMP_MASKREQ
#define ICMP_MASKREQ 17
#endif
#ifndef ICMP_MASKREPLY
#define ICMP_MASKREPLY 18
#endif
u_char icmp_code; /* ICMP code */
#ifndef ICMP_UNREACH_NET
#define ICMP_UNREACH_NET 0
#endif
#ifndef ICMP_UNREACH_HOST
#define ICMP_UNREACH_HOST 1
#endif
#ifndef ICMP_UNREACH_PROTOCOL
#define ICMP_UNREACH_PROTOCOL 2
#endif
#ifndef ICMP_UNREACH_PORT
#define ICMP_UNREACH_PORT 3
#endif
#ifndef ICMP_UNREACH_NEEDFRAG
#define ICMP_UNREACH_NEEDFRAG 4
#endif
#ifndef ICMP_UNREACH_SRCFAIL
#define ICMP_UNREACH_SRCFAIL 5
#endif
#ifndef ICMP_UNREACH_NET_UNKNOWN
#define ICMP_UNREACH_NET_UNKNOWN 6
#endif
#ifndef ICMP_UNREACH_HOST_UNKNOWN
#define ICMP_UNREACH_HOST_UNKNOWN 7
#endif
#ifndef ICMP_UNREACH_ISOLATED
#define ICMP_UNREACH_ISOLATED 8
#endif
#ifndef ICMP_UNREACH_NET_PROHIB
#define ICMP_UNREACH_NET_PROHIB 9
#endif
#ifndef ICMP_UNREACH_HOST_PROHIB
#define ICMP_UNREACH_HOST_PROHIB 10
#endif
#ifndef ICMP_UNREACH_TOSNET
#define ICMP_UNREACH_TOSNET 11
#endif
#ifndef ICMP_UNREACH_TOSHOST
#define ICMP_UNREACH_TOSHOST 12
#endif
#ifndef ICMP_UNREACH_FILTER_PROHIB
#define ICMP_UNREACH_FILTER_PROHIB 13
#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; /* ICMP Checksum */
union
{
struct
{
u_short id; /* ICMP id */
u_short seq;/* ICMP sequence number */
} echo;
#undef icmp_id
#undef icmp_seq
#define icmp_id hun.echo.id
#define icmp_seq hun.echo.seq
u_long gateway; /* gateway host */
struct
{
u_short pad;/* padding */
u_short mtu;/* MTU size */
} frag;
} hun;
union
{
struct
{
n_time its_otime;
n_time its_rtime;
n_time its_ttime;
} ts;
struct
{
struct libnet_ipv4_hdr 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
* Internet Group Message Protocol
* Static header size: 8 bytes
*/
struct libnet_igmp_hdr
{
u_char igmp_type; /* 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; /* IGMP code */
u_short igmp_sum; /* IGMP checksum */
struct in_addr igmp_group;/* IGMP host IP */
};
/*
* IPSEC header
* Internet Protocol Security Protocol
* Encapsulating Security Payload Header Static header size: 12 bytes
* Encapsulating Security Payload Footer Base header size: 2 bytes
* Authentication Header Static Size: 16 bytes
*/
#ifndef IPPROTO_ESP
#define IPPROTO_ESP 50 /* not everyone's got this */
#endif
struct libnet_esp_hdr
{
u_long esp_spi; /* security parameter index */
u_long esp_seq; /* ESP sequence number */
u_long esp_iv; /* initialization vector */
};
struct libnet_esp_ftr
{
u_char esp_pad_len; /* padding length */
u_char esp_nxt_hdr; /* next header pointer */
char *esp_auth; /* authentication data */
};
#ifndef IPPROTO_AH
#define IPPROTO_AH 51 /* not everyone's got this */
#endif
struct libnet_ah_hdr
{
u_char ah_nxt_hdr; /* next header */
u_char ah_len; /* payload length */
u_short ah_res; /* reserved */
u_long ah_spi; /* security parameter index */
u_long ah_seq; /* AH sequence number */
u_long ah_auth; /* authentication data */
};
/*
* ISL header
* Cisco Inter-Switch Link
* Static header size: 26 bytes
*/
/*
* For checksum stuff -- IANA says 135-254 is "unassigned" as of 12.2001.
* Let's hope this one stays that way for a while!
*/
#define LIBNET_PROTO_ISL 201
struct libnet_isl_hdr
{
u_char isl_dhost[5]; /* destination address "01:00:0c:00:00" */
#if (LIBNET_LIL_ENDIAN)
unsigned char isl_type:4, /* type of frame */
isl_user:4; /* user defined bits */
#endif
#if (LIBNET_BIG_ENDIAN)
unsigned char isl_user:4, /* user defined bits */
isl_type:4; /* type of frame */
#endif
u_char isl_shost[6]; /* source address */
u_short isl_len; /* total length of packet - 18 bytes */
u_char isl_snap[6]; /* 0xaaaa03 + vendor code */
u_short isl_vid; /* 15 bit VLAN ID, 1 bit BPDU / CDP indicator */
u_short isl_index; /* port index */
u_short isl_reserved; /* used for FDDI and token ring */
/* ethernet frame and 4 byte isl crc */
};
#ifndef IPPROTO_OSPF
#define IPPROTO_OSPF 89 /* not everyone's got this */
#endif
#define IPPROTO_OSPF_LSA 890 /* made this up. Hope it's unused */
#define LIBNET_MODX 4102 /* used in LSA checksum */
/*
* Options used in multiple OSPF packets
* More info can be found in section A.2 of RFC 2328.
*/
#define LIBNET_OPT_EBIT 0x02 /* describes the way AS-external-LSAs are flooded */
#define LIBNET_OPT_MCBIT 0x04 /* whether or not IP multicast dgrams are fwdd */
#define LIBNET_OPT_NPBIT 0x08 /* describes handling of type-7 LSAs */
#define LIBNET_OPT_EABIT 0x10 /* rtr's willingness to send/recv EA-LSAs */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -