⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dhcp-librawnet.h

📁 this is sample about DHCP-agent
💻 H
📖 第 1 页 / 共 2 页
字号:
# define TAG_DHCP_SUBNETS_ARE_LOCAL            27# define TAG_DHCP_BROADCAST_ADDRESS            28# define TAG_DHCP_MASK_DISCOVERY               29# define TAG_DHCP_MASK_SUPPLIER                30# define TAG_DHCP_ROUTER_DISCOVERY             31# define TAG_DHCP_ROUTER_SOLICITATION          32# define TAG_DHCP_STATIC_ROUTE                 33# define TAG_DHCP_TRAILER_ENCAPSULATION        34# define TAG_DHCP_ARP_CACHE_TIMEOUT            35# define TAG_DHCP_ETHERNET_ENCAPSULATION       36# define TAG_DHCP_TCP_DEFAULT_TTL              37# define TAG_DHCP_TCP_KEEPALIVE_INTERVAL       38# define TAG_DHCP_TCP_KEEPALIVE_GARBAGE        39# define TAG_DHCP_NIS_DOMAIN_NAME              40# define TAG_DHCP_NIS_SERVERS                  41# define TAG_DHCP_NTP_SERVERS                  42# define TAG_DHCP_VENDOR_SPECIFIC              43# define TAG_DHCP_NETBIOSOTCP_NAME_SERVER      44# define TAG_DHCP_NETBIOSOTCP_DATAGRAM_SERVER  45# define TAG_DHCP_NETBIOSOTCP_NODE_TYPE        46# define TAG_DHCP_NETBIOSOTCP_SCOPE            47# define TAG_DHCP_XWIN_FONT_SERVER             48# define TAG_DHCP_XWIN_DISP_MANAGER_SERVER     49# define TAG_DHCP_REQUESTED_IP_ADDRESS         50# define TAG_DHCP_IP_ADDRESS_LEASE_TIME        51# define TAG_DHCP_OVERLOAD                     52# define TAG_DHCP_MESSAGE_TYPE                 53# define TAG_DHCP_SERVER_IDENTIFIER            54# define TAG_DHCP_PARAMETERS                   55# define TAG_DHCP_MESSAGE                      56# define TAG_DHCP_MAX_DHCP_SIZE                57# define TAG_DHCP_RENEWAL_TIME                 58# define TAG_DHCP_REBINDING_TIME               59# define TAG_DHCP_VENDOR_CLASS_ID              60# define TAG_DHCP_CLIENT_ID                    61# define TAG_DHCP_NISPLUS_DOMAIN               64# define TAG_DHCP_NISPLUS_SERVERS              65# define TAG_DHCP_TFTP_SERVER                  66# define TAG_DHCP_BOOT_FILE_NAME               67# define TAG_DHCP_IP_HOME_AGENT                68# define TAG_DHCP_SMTP_SERVER                  69# define TAG_DHCP_POP_SERVER                   70# define TAG_DHCP_NNTP_SERVER                  71# define TAG_DHCP_DEFAULT_WWW_SERVER           72# define TAG_DHCP_DEFAULT_FINGER_SERVER        73# define TAG_DHCP_DEFAULT_IRC_SERVER           74# define TAG_DHCP_DEFAULT_ST_SERVER            75# define TAG_DHCP_DEFAULT_STDA_SERVER          76# define TAG_DHCP_END                          255/* DHCP overload option values. */#define DHCP_OVERLOAD_FILE  1#define DHCP_OVERLOAD_SNAME 2#define DHCP_OVERLOAD_BOTH  3/* NetBIOS Scope Node Types */# define NETBIOS_B_NODE 0x01# define NETBIOS_P_NODE 0x02# define NETBIOS_M_NODE 0x04# define NETBIOS_H_NODE 0x06/* prototypes. *//* rawnet routines. */extern rawnet_t *rawnet_create(const char *device, const char *filter, int mtu, int sport,                                int dport, int promiscuous, int clear_address);extern void rawnet_destroy(rawnet_t *net);extern int rawnet_get_packet(rawnet_t *net, struct timeval *tm);extern int rawnet_get_hw_addr(rawnet_t *net, eth_addr_t *addr);extern int rawnet_get_real_hw_addr(rawnet_t *net, eth_addr_t *addr);extern ip_addr_t rawnet_get_ip_addr(rawnet_t *net);extern uint16_t rawnet_get_mtu(rawnet_t *net);extern int rawnet_send_packet(rawnet_t *net);extern int rawnet_use_fake_hw_addr(rawnet_t *raw, char *mac_string);extern void reinitialize_rawnet(rawnet_t *net, int promiscuous);extern int rawnet_up(rawnet_t *net);extern void rawnet_down(rawnet_t *net);extern int rawnet_packet_transact(rawnet_t *net, void *arg,                                  void (*update) (void *arg),                                  int (*check) (void *arg), time_t max_timeout);extern int rawnet_interface_up(rawnet_t *net, ip_addr_t addr, ip_addr_t netmask, int mtu, int clear_address);extern int rawnet_interface_down(rawnet_t *net);extern list_t *rawnet_list_active_interfaces(void);extern list_t *rawnet_list_inactive_interfaces(void);extern void rawnet_dhcp_update(rawnet_t *net, time_t seconds);extern int rawnet_is_dhcp_offer(rawnet_t *net);extern int rawnet_is_valid(rawnet_t *net);extern const char *rawnet_get_device_name(rawnet_t *net);extern int rawnet_get_datalink_type(rawnet_t *net);/* packet building routines. *//* dhcp packet routines. */extern void build_dhcp_discover(rawnet_t *net, uint32_t xid, time_t secs, list_t *options);extern void build_dhcp_request_unicast(rawnet_t *net, uint32_t xid, time_t secs, list_t *options, ip_addr_t cip_addr,                                        ip_addr_t sip_addr, ip_addr_t gip_addr, eth_addr_t shw_addr);extern void build_dhcp_request_broadcast(rawnet_t *net, uint32_t xid, time_t secs, ip_addr_t cip_addr,                                          ip_addr_t sip_addr, list_t *options);extern void build_dhcp_release(rawnet_t *net, uint32_t xid, list_t *options, ip_addr_t cip_addr,                                ip_addr_t sip_addr, eth_addr_t shw_addr);extern void build_dhcp_decline(rawnet_t *net, uint32_t xid, time_t secs, list_t *options);/* arp packet routines. */extern void build_arp_reply_broadcast(rawnet_t *net, uint32_t source_addr,                                      eth_addr_t source_hw_addr);extern void build_arp_reply(rawnet_t *net,                            uint32_t source_addr,                            uint32_t dest_addr, eth_addr_t source_hw_addr, eth_addr_t dest_hw_addr);extern void build_arp_request(rawnet_t *net,                              uint32_t source_addr, uint32_t dest_addr, eth_addr_t source_hw_addr);extern void build_unarp(rawnet_t *net, uint32_t source_addr, eth_addr_t source_hw_addr);/* icmp packet routines. */extern void build_icmp_mask_request(rawnet_t *net, uint32_t id, uint32_t seq);extern void build_icmp_mask_reply(rawnet_t *net, uint32_t id, uint32_t seq, uint32_t subnet_mask);extern void build_icmp_echo_request(rawnet_t *net, ip_addr_t source_addr, ip_addr_t dest_addr,                                    eth_addr_t source_mac, eth_addr_t dest_mac, uint16_t id,                                    uint16_t seq);/* DHCP obj routines. */extern dhcp_obj *dhcp_create(void);extern void dhcp_purge(dhcp_obj * dhcp);extern void dhcp_destroy(dhcp_obj * dhcp);extern uint8_t dhcp_get_op(dhcp_obj * dhcp);extern uint8_t dhcp_get_htype(dhcp_obj * dhcp);extern uint8_t dhcp_get_hlen(dhcp_obj * dhcp);extern uint8_t dhcp_get_hops(dhcp_obj * dhcp);extern uint32_t dhcp_get_xid(dhcp_obj * dhcp);extern uint16_t dhcp_get_secs(dhcp_obj * dhcp);extern uint16_t dhcp_get_flags(dhcp_obj * dhcp);extern uint32_t dhcp_get_ciaddr(dhcp_obj * dhcp);extern uint32_t dhcp_get_yiaddr(dhcp_obj * dhcp);extern uint32_t dhcp_get_siaddr(dhcp_obj * dhcp);extern uint32_t dhcp_get_giaddr(dhcp_obj * dhcp);extern uint8_t *dhcp_get_chaddr(dhcp_obj * dhcp);extern uint8_t *dhcp_get_sname(dhcp_obj * dhcp);extern uint8_t *dhcp_get_filename(dhcp_obj * dhcp);extern uint32_t dhcp_get_magic_cookie(dhcp_obj * dhcp);extern void dhcp_set_op(dhcp_obj * dhcp, uint8_t op);extern void dhcp_set_htype(dhcp_obj * dhcp, uint8_t htype);extern void dhcp_set_hlen(dhcp_obj * dhcp, uint8_t hlen);extern void dhcp_set_hops(dhcp_obj * dhcp, uint8_t hops);extern void dhcp_set_xid(dhcp_obj * dhcp, uint32_t xid);extern void dhcp_set_secs(dhcp_obj * dhcp, uint16_t secs);extern void dhcp_set_flag_broadcast(dhcp_obj * dhcp);extern void dhcp_unset_flag_broadcast(dhcp_obj * dhcp);extern void dhcp_set_ciaddr(dhcp_obj * dhcp, uint32_t ciaddr);extern void dhcp_set_yiaddr(dhcp_obj * dhcp, uint32_t yiaddr);extern void dhcp_set_siaddr(dhcp_obj * dhcp, uint32_t siaddr);extern void dhcp_set_giaddr(dhcp_obj * dhcp, uint32_t giaddr);extern void dhcp_set_chaddr(dhcp_obj * dhcp, uint8_t *chaddr, int len);extern void dhcp_clear_chaddr(dhcp_obj * dhcp);extern void dhcp_set_sname(dhcp_obj * dhcp, uint8_t *sname);extern void dhcp_set_filename(dhcp_obj * dhcp, uint8_t *file);extern void dhcp_clear_sname(dhcp_obj * dhcp);extern void dhcp_clear_filename(dhcp_obj * dhcp);extern void dhcp_set_magic_cookie(dhcp_obj * dhcp);extern void dhcp_set_options(dhcp_obj * dhcp, list_t *options);extern void dhcp_reset_option_seek(dhcp_obj * dhcp);extern dhcp_opt_t *dhcp_get_next_option(dhcp_obj * dhcp);extern uint16_t dhcp_get_options_len(list_t *options);extern int dhcp_valid_magic_cookie(dhcp_obj * dhcp);extern int dhcp_is_type(dhcp_obj * dhcp, uint8_t type);extern int dhcp_have_option(dhcp_obj *dhcp, uint8_t tag);extern int dhcp_is_file_overload(dhcp_obj * dhcp);extern int dhcp_is_sname_overload(dhcp_obj * dhcp);extern int dhcp_read_packet_image(dhcp_obj * dhcp, const uint8_t *dhcp_packet, int len);extern void dhcp_write_options(dhcp_obj * dhcp, uint8_t *packet);extern void dhcp_write_packet_image(dhcp_obj * dhcp, uint8_t *packet);extern uint32_t dhcp_gen_xid(void);/* Ether obj routines. */extern eth_obj *eth_create(void);extern void eth_destroy(eth_obj * eth);extern int eth_read_packet_image(eth_obj * eth, const unsigned char *packet, int len);extern void eth_write_packet_image(eth_obj * eth, unsigned char *packet);extern eth_addr_t eth_get_src_addr(eth_obj * eth);extern eth_addr_t eth_get_dst_addr(eth_obj * eth);extern uint16_t eth_get_type(eth_obj * eth);extern void eth_set_src_addr(eth_obj * eth, eth_addr_t addr);extern void eth_set_dst_addr(eth_obj * eth, eth_addr_t addr);extern void eth_set_type(eth_obj * eth, uint16_t type);/* IP obj routines. */extern ip_obj *ip_create(void);extern void ip_destroy(ip_obj * ip);extern int ip_read_packet_image(ip_obj * ip, const unsigned char *packet, int len);extern void ip_write_packet_image(ip_obj * ip, unsigned char *packet);extern ip_addr_t ip_get_src_addr(ip_obj * ip);extern ip_addr_t ip_get_dst_addr(ip_obj * ip);extern unsigned char ip_get_hl(ip_obj * ip);extern uint8_t ip_get_proto(ip_obj * ip);extern void ip_set_hl(ip_obj * ip, uint16_t header_len);extern void ip_set_tos(ip_obj * ip, unsigned char ip_tos);extern void ip_set_len(ip_obj * ip, uint16_t ip_len);extern void ip_set_id(ip_obj * ip, uint16_t ip_id);extern void ip_set_off(ip_obj * ip, uint16_t ip_off);extern void ip_set_ttl(ip_obj * ip, uint8_t ip_ttl);extern void ip_set_proto(ip_obj * ip, unsigned char ip_proto);extern void ip_set_src_addr(ip_obj * ip, uint32_t ip_src);extern void ip_set_dst_addr(ip_obj * ip, uint32_t ip_src);/* ARP obj routines. */extern arp_obj *arp_create(void);extern void arp_destroy(arp_obj * arp);extern void arp_write_packet_image(arp_obj * arp, unsigned char *packet);extern void arp_set_hardware_type(arp_obj * arp, uint16_t hdr_addr);extern void arp_set_protocol_type(arp_obj * arp, uint16_t pro);extern void arp_set_hardware_len(arp_obj * arp, uint8_t len);extern void arp_set_protocol_len(arp_obj * arp, uint8_t len);extern void arp_set_op(arp_obj * arp, uint16_t op);extern void arp_set_sender_hardware_address(arp_obj * arp, eth_addr_t addr);extern void arp_set_sender_protocol_address(arp_obj * arp, uint32_t addr);extern void arp_set_target_hardware_address(arp_obj * arp, eth_addr_t addr);extern void arp_set_target_protocol_address(arp_obj * arp, uint32_t addr);extern uint16_t arp_get_op(arp_obj * arp);extern uint16_t arp_get_hardware_type(arp_obj * arp);extern uint16_t arp_get_protocol_type(arp_obj * arp);extern uint8_t arp_get_hardware_len(arp_obj * arp);extern uint8_t arp_get_protocol_len(arp_obj * arp);extern unsigned char *arp_get_sender_hardware_address(arp_obj * arp);extern unsigned char *arp_get_sender_protocol_address(arp_obj * arp);extern int arp_read_packet_image(arp_obj * arp, const unsigned char *packet, int len);/* UDP obj routines. */extern udp_obj *udp_create(void);extern void udp_destroy(udp_obj * udp);extern int udp_read_packet_image(udp_obj * udp, const unsigned char *packet, int len);extern void udp_write_packet_image(udp_obj * udp, unsigned char *packet);extern uint16_t udp_get_src_port(udp_obj * udp);extern uint16_t udp_get_dst_port(udp_obj * udp);extern uint16_t udp_get_len(udp_obj * udp);extern void udp_set_src_port(udp_obj * udp, uint16_t src_port);extern void udp_set_dst_port(udp_obj * udp, uint16_t dst_port);extern void udp_set_len(udp_obj * udp, uint16_t len);extern void udp_set_cksum(udp_obj * udp, uint16_t cksum);/* ICMP obj routines. */extern icmp_obj *icmp_create(void);extern void icmp_destroy(icmp_obj * icmp);extern void icmp_set_type(icmp_obj * icmp, uint8_t type);extern void icmp_set_code(icmp_obj * icmp, uint8_t code);extern void icmp_clear_cksum(icmp_obj * icmp);extern void icmp_mask_set_id(icmp_obj * icmp, uint32_t id);extern void icmp_mask_set_seq(icmp_obj * icmp, uint32_t seq);extern void icmp_mask_set_mask(icmp_obj * icmp, uint32_t mask);extern void icmp_echo_set_id(icmp_obj * icmp, uint16_t id);extern void icmp_echo_set_seq(icmp_obj * icmp, uint16_t seq);extern uint8_t icmp_get_type(icmp_obj * icmp);extern uint32_t icmp_mask_get_mask(icmp_obj * icmp_p);extern void icmp_write_packet_image(icmp_obj * icmp, unsigned char *packet);extern int icmp_read_packet_image(icmp_obj * icmp, const unsigned char *packet, int len);/* ICMP discovery routines. */extern int icmp_subnet_mask_discovery(rawnet_t *net, int retries, uint32_t *subnet_mask);extern list_t *icmp_rtt_discovery(rawnet_t *net, int timeout, int sends, int arp_retries, int arp_timeout, list_t *addresses);/* ARP discovery routines. */extern int arp_discover_hardware_address(rawnet_t *net, int retries, int timeout, uint32_t address,                                         eth_addr_t *mac_addr);/* Routing routines. */extern int route_find(rawnet_t *net, int sends, int timeout, ip_addr_t addr, eth_addr_t *dest_mac);/* Misc. */extern int rawnet_port_for_service(const char *serv, const char *proto);extern char *rawnet_network_address_to_string_static(uint32_t addr);#endif                          /* DHCP_LIBRAWNET_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -