📄 libnet-headers.h
字号:
#define LIBNET_OPT_DCBIT 0x20 /* describes handling of demand circuits */
/*
* NTP header
* Network Time Protocol
* Static header size: 48 bytes
*/
struct libnet_ntp_hdr_l_fp /* long floating point (64-bit) */
{
u_long integer; /* integer */
u_long fraction; /* fraction */
};
struct libnet_ntp_hdr_s_fp /* short floating point (32-bit) */
{
u_short integer; /* integer */
u_short fraction; /* fraction */
};
struct libnet_ntp_hdr
{
u_char ntp_li_vn_mode; /* leap indicator, version, mode */
#define LIBNET_NTP_LI_NW 0x0 /* no warning */
#define LIBNET_NTP_LI_AS 0x1 /* last minute has 61 seconds */
#define LIBNET_NTP_LI_DS 0x2 /* last minute has 59 seconds */
#define LIBNET_NTP_LI_AC 0x3 /* alarm condition */
#define LIBNET_NTP_VN_2 0x2 /* version 2 */
#define LIBNET_NTP_VN_3 0x3 /* version 3 */
#define LIBNET_NTP_VN_4 0x4 /* version 4 */
#define LIBNET_NTP_MODE_R 0x0 /* reserved */
#define LIBNET_NTP_MODE_A 0x1 /* symmetric active */
#define LIBNET_NTP_MODE_P 0x2 /* symmetric passive */
#define LIBNET_NTP_MODE_C 0x3 /* client */
#define LIBNET_NTP_MODE_S 0x4 /* server */
#define LIBNET_NTP_MODE_B 0x5 /* broadcast */
#define LIBNET_NTP_MODE_RC 0x6 /* reserved for NTP control message */
#define LIBNET_NTP_MODE_RP 0x7 /* reserved for private use */
u_char ntp_stratum; /* stratum */
#define LIBNET_NTP_STRATUM_UNAVAIL 0x0 /* unspecified or unavailable */
#define LIBNET_NTP_STRATUM_PRIMARY 0x1 /* primary reference (radio clock) */
/* 2 - 15 is secondary */
/* 16 - 255 is reserved */
u_char ntp_poll; /* poll interval (should be 4 - 12) */
u_char ntp_precision; /* local clock precision */
struct libnet_ntp_hdr_s_fp ntp_delay; /* roundtrip delay */
struct libnet_ntp_hdr_s_fp ntp_dispersion; /* nominal error */
u_long ntp_reference_id; /* reference source id */
#define LIBNET_NTP_REF_LOCAL 0x4c4f434c /* uncalibrated local clock */
#define LIBNET_NTP_REF_PPS 0x50505300 /* atomic / pulse-per-second clock */
#define LIBNET_NTP_REF_ACTS 0x41435453 /* NIST dialup modem */
#define LIBNET_NTP_REF_USNO 0x55534e4f /* USNO modem service */
#define LIBNET_NTP_REF_PTB 0x50544200 /* PTB (German) modem service */
#define LIBNET_NTP_REF_TDF 0x54444600 /* Allouis (French) radio */
#define LIBNET_NTP_REF_DCF 0x44434600 /* Mainflingen (German) radio */
#define LIBNET_NTP_REF_MSF 0x4d534600 /* Rugby (UK) radio */
#define LIBNET_NTP_REF_WWV 0x57575600 /* Ft Collins (US) radio */
#define LIBNET_NTP_REF_WWVB 0x57575642 /* Boulder (US) radio */
#define LIBNET_NTP_REF_WWVH 0x57575648 /* Kaui Hawaii (US) radio */
#define LIBNET_NTP_REF_CHU 0x43485500 /* Ottaha (Canada) radio */
#define LIBNET_NTP_REF_LORC 0x4c4f5243 /* LORAN-C radionavigation */
#define LIBNET_NTP_REF_OMEG 0x4f4d4547 /* OMEGA radionavigation */
#define LIBNET_NTP_REF_GPS 0x47505300 /* global positioning system */
#define LIBNET_NTP_REF_GOES 0x474f4553 /* geostationary orbit env satellite */
struct libnet_ntp_hdr_l_fp ntp_ref_ts; /* reference timestamp */
struct libnet_ntp_hdr_l_fp ntp_orig_ts; /* originate timestamp */
struct libnet_ntp_hdr_l_fp ntp_rec_ts; /* receive timestamp */
struct libnet_ntp_hdr_l_fp ntp_xmt_ts; /* transmit timestamp */
};
/*
* OSPFv2 header
* Open Shortest Path First
* Static header size: 16 bytes
*/
struct libnet_ospf_hdr
{
u_char ospf_v; /* version */
#define OSPFVERSION 2
u_char ospf_type; /* type */
#define LIBNET_OSPF_UMD 0 /* UMd monitoring packet */
#define LIBNET_OSPF_HELLO 1 /* HELLO packet */
#define LIBNET_OSPF_DBD 2 /* dataBase description packet */
#define LIBNET_OSPF_LSR 3 /* link state request packet */
#define LIBNET_OSPF_LSU 4 /* link state Update Packet */
#define LIBNET_OSPF_LSA 5 /* link state acknowledgement packet */
u_short ospf_len; /* length */
struct in_addr ospf_rtr_id; /* source router ID */
struct in_addr ospf_area_id;/* roam ID */
u_short ospf_cksum; /* checksum */
u_short ospf_auth_type; /* authentication type */
#define LIBNET_OSPF_AUTH_NULL 0 /* null password */
#define LIBNET_OSPF_AUTH_SIMPLE 1 /* simple, plaintext, 8 char password */
#define LIBNET_OSPF_AUTH_MD5 2 /* MD5 */
};
/*
* OSPF authentication header
* Open Shortest Path First
* Static header size: 8 bytes
*/
struct libnet_auth_hdr
{
u_short ospf_auth_null; /* NULL */
u_char ospf_auth_keyid; /* authentication key ID */
u_char ospf_auth_len; /* auth data length */
u_int ospf_auth_seq; /* cryptographic sequence number */
};
/*
* OSPF hello header
* Open Shortest Path First
* Static header size: 28 bytes
*/
struct libnet_ospf_hello_hdr
{
struct in_addr hello_nmask; /* netmask associated with the interface */
u_short hello_intrvl; /* num of seconds between routers last packet */
u_char hello_opts; /* Options for HELLO packets (look above) */
u_char hello_rtr_pri; /* router's priority (if 0, can't be backup) */
u_int hello_dead_intvl; /* # of secs a router is silent till deemed down */
struct in_addr hello_des_rtr; /* Designated router on the network */
struct in_addr hello_bkup_rtr; /* Backup router */
struct in_addr hello_nbr; /* neighbor router, memcpy more as needed */
};
/*
* Database Description header.
*/
struct libnet_dbd_hdr
{
u_short dbd_mtu_len; /* max length of IP dgram that this 'if' can use */
u_char dbd_opts; /* DBD packet options (from above) */
u_char dbd_type; /* type of exchange occurring */
#define LIBNET_DBD_IBI 0x01 /* init */
#define LIBNET_DBD_MBIT 0x02 /* more DBD packets are to come */
#define LIBNET_DBD_MSBIT 0x04 /* If 1, sender is the master in the exchange */
u_int dbd_seq; /* DBD sequence number */
};
/*
* used for the LS type field in all LS* headers
*/
#define LIBNET_LS_TYPE_RTR 1 /* router-LSA */
#define LIBNET_LS_TYPE_NET 2 /* network-LSA */
#define LIBNET_LS_TYPE_IP 3 /* summary-LSA (IP Network) */
#define LIBNET_LS_TYPE_ASBR 4 /* summary-LSA (ASBR) */
#define LIBNET_LS_TYPE_ASEXT 5 /* AS-external-LSA */
/*
* Link State Request header
*/
struct libnet_lsr_hdr
{
u_int lsr_type; /* type of LS being requested */
u_int lsr_lsid; /* link state ID */
struct in_addr lsr_adrtr; /* advertising router (memcpy more as needed) */
};
/*
* Link State Update header
*/
struct libnet_lsu_hdr
{
u_int lsu_num; /* number of LSAs that will be broadcasted */
};
/*
* Link State Acknowledgement header.
*/
struct libnet_lsa_hdr
{
u_short lsa_age; /* time in seconds since the LSA was originated */
u_char lsa_opts; /* look above for OPTS_* */
u_char lsa_type; /* look below for LS_TYPE_* */
u_int lsa_id; /* link State ID */
struct in_addr lsa_adv; /* router ID of Advertising router */
u_int lsa_seq; /* LSA sequence number to detect old/bad ones */
u_short lsa_cksum; /* "Fletcher Checksum" of all fields minus age */
u_short lsa_len; /* length in bytes including the 20 byte header */
};
/*
* Router LSA data format
*
* Other stuff for TOS can be added for backward compatability, for this
* version, only OSPFv2 is being FULLY supported.
*/
struct libnet_rtr_lsa_hdr
{
u_short rtr_flags; /* set to help describe packet */
#define LIBNET_RTR_FLAGS_W 0x0100 /* W bit */
#define LIBNET_RTR_FLAGS_E 0x0200 /* E bit */
#define LIBNET_RTR_FLAGS_B 0x0400 /* B bit */
u_short rtr_num; /* number of links within that packet */
u_int rtr_link_id; /* describes link_data (look below) */
#define LIBNET_LINK_ID_NBR_ID 1 /* Neighbors router ID, also can be 4 */
#define LIBNET_LINK_ID_IP_DES 2 /* IP address of designated router */
#define LIBNET_LINK_ID_SUB 3 /* IP subnet number */
u_int rtr_link_data; /* Depending on link_id, info is here */
u_char rtr_type; /* Description of router link */
#define LIBNET_RTR_TYPE_PTP 1 /* Point-To-Point */
#define LIBNET_RTR_TYPE_TRANS 2 /* Connection to a "transit network" */
#define LIBNET_RTR_TYPE_STUB 3 /* Connectin to a "stub network" */
#define RTR_TYPE_VRTL 4 /* connects to a "virtual link" */
u_char rtr_tos_num; /* number of different TOS metrics for this link */
u_short rtr_metric; /* the "cost" of using this link */
};
/*
* Network LSA data format.
*/
struct libnet_net_lsa_hdr
{
struct in_addr net_nmask; /* Netmask for that network */
u_int net_rtr_id; /* ID of router attached to that network */
};
/*
* Summary LSA data format.
*/
struct libnet_sum_lsa_hdr
{
struct in_addr sum_nmask; /* Netmask of destination IP address */
u_int sum_metric; /* Same as in rtr_lsa (&0xfff to use last 24bit */
u_int sum_tos_metric; /* first 8bits are TOS, 24bits are TOS Metric */
};
/*
* AS External LSA data format.
* & 0xfff logic operator for as_metric to get last 24bits.
*/
struct libnet_as_lsa_hdr
{
struct in_addr as_nmask; /* Netmask for advertised destination */
u_int as_metric; /* May have to set E bit in first 8bits */
#define LIBNET_AS_E_BIT_ON 0x80000000 /* as_metric */
struct in_addr as_fwd_addr; /* Forwarding address */
u_int as_rte_tag; /* External route tag */
};
/*
* Base RIP header
* Routing Information Protocol
* Base header size: 24 bytes
*/
struct libnet_rip_hdr
{
u_char rip_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 /* ? command */
u_char rip_ver; /* RIP version */
#define RIPVER_0 0
#define RIPVER_1 1
#define RIPVER_2 2
u_short rip_rd; /* Zero (v1) or Routing Domain (v2) */
u_short rip_af; /* Address family */
u_short rip_rt; /* Zero (v1) or Route Tag (v2) */
u_long rip_addr; /* IP address */
u_long rip_mask; /* Zero (v1) or Subnet Mask (v2) */
u_long rip_next_hop; /* Zero (v1) or Next hop IP address (v2) */
u_long rip_metric; /* Metric */
};
/*
* STP configuration header
* Spanning Tree Protocol
* Static header size: 35 bytes
*/
struct libnet_stp_conf_hdr
{
u_short stp_id; /* protocol id */
u_char stp_version; /* protocol version */
u_char stp_bpdu_type; /* bridge protocol data unit type */
u_char stp_flags; /* control flags */
u_char stp_rootid[8]; /* root id */
u_long stp_rootpc; /* root path cost */
u_char stp_bridgeid[8]; /* bridge id */
u_short stp_portid; /* port id */
u_short stp_mage; /* message age */
u_short stp_maxage; /* max age */
u_short stp_hellot; /* hello time */
u_short stp_fdelay; /* forward delay */
};
/*
* STP topology change notification header
* Spanning Tree Protocol
* Static header size: 4 bytes
*/
struct libnet_stp_tcn_hdr
{
u_short stp_id; /* protocol id */
u_char stp_version; /* protocol version */
u_char stp_bpdu_type; /* bridge protocol data unit type */
};
/*
* TCP header
* Transmission Control Protocol
* Static header size: 20 bytes
*/
struct libnet_tcp_hdr
{
u_short th_sport; /* source port */
u_short th_dport; /* destination port */
u_long th_seq; /* sequence number */
u_long th_ack; /* acknowledgement number */
#if (LIBNET_LIL_ENDIAN)
unsigned char th_x2:4, /* (unused) */
th_off:4; /* data offset */
#endif
#if (LIBNET_BIG_ENDIAN)
unsigned char th_off:4, /* data offset */
th_x2:4; /* (unused) */
#endif
u_char th_flags; /* control flags */
#ifndef TH_FIN
#define TH_FIN 0x01 /* finished send data */
#endif
#ifndef TH_SYN
#define TH_SYN 0x02 /* synchronize sequence numbers */
#endif
#ifndef TH_RST
#define TH_RST 0x04 /* reset the connection */
#endif
#ifndef TH_PUSH
#define TH_PUSH 0x08 /* push data to the app layer */
#endif
#ifndef TH_ACK
#define TH_ACK 0x10 /* acknowledge */
#endif
#ifndef TH_URG
#define TH_URG 0x20 /* urgent! */
#endif
u_short th_win; /* window */
u_short th_sum; /* checksum */
u_short th_urp; /* urgent pointer */
};
/*
* UDP header
* User Data Protocol
* Static header size: 8 bytes
*/
struct libnet_udp_hdr
{
u_short uh_sport; /* soure port */
u_short uh_dport; /* destination port */
u_short uh_ulen; /* length */
u_short uh_sum; /* checksum */
};
/*
* VRRP header
* Virtual Router Redundancy Protocol
* Static header size: 8 bytes
*/
#ifndef IPPROTO_VRRP
#define IPPROTO_VRRP 112 /* not everyone's got this */
#endif
struct libnet_vrrp_hdr
{
#if (LIBNET_LIL_ENDIAN)
unsigned char vrrp_v:4, /* protocol version */
vrrp_t:4; /* packet type */
#endif
#if (LIBNET_BIG_ENDIAN)
unsigned char vrrp_t:4, /* packet type */
vrrp_v:4; /* protocol version */
#endif
#define LIBNET_VRRP_VERSION_01 0x1
#define LIBNET_VRRP_VERSION_02 0x2
#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 */
/* additional addresses */
/* authentication info */
};
#endif /* __LIBNET_HEADERS_H */
/* EOF */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -