1 #ifndef ETTERCAP_SEND_H 2 #define ETTERCAP_SEND_H 3 4 #include <ec_packet.h> 5 #include <ec_network.h> 6 #include <pcap.h> 7 #include <libnet.h> 8 9 EC_API_EXTERN int send_to_L2(struct packet_object *po); 10 EC_API_EXTERN int send_to_L3(struct packet_object *po); 11 EC_API_EXTERN int send_to_bridge(struct packet_object *po); 12 EC_API_EXTERN int send_to_iface(struct packet_object *po, struct iface_env *iface); 13 14 EC_API_EXTERN int send_arp(u_char type, struct ip_addr *sip, u_int8 *smac, struct ip_addr *tip, u_int8 *tmac); 15 EC_API_EXTERN int send_L2_icmp_echo(u_char type, struct ip_addr *sip, struct ip_addr *tip, u_int8 *tmac); 16 EC_API_EXTERN int send_L3_icmp(u_char type, struct ip_addr *sip, struct ip_addr *tip); 17 EC_API_EXTERN int send_L3_icmp_echo(struct ip_addr *src, struct ip_addr *tgt); 18 EC_API_EXTERN int send_icmp_redir(u_char type, struct ip_addr *sip, struct ip_addr *gw, struct packet_object *po); 19 EC_API_EXTERN int send_dhcp_reply(struct ip_addr *sip, struct ip_addr *tip, u_int8 *tmac, u_int8 *dhcp_hdr, u_int8 *options, size_t optlen); 20 EC_API_EXTERN int send_dns_reply(struct iface_env *iface, u_int16 dport, struct ip_addr *sip, struct ip_addr *tip, u_int8 *tmac, u_int16 id, u_int8 *data, size_t datalen, u_int16 anws_rr, u_int16 auth_rr, u_int16 addi_rr); 21 EC_API_EXTERN int send_mdns_reply(struct iface_env *iface, u_int16 dport, struct ip_addr *sip, struct ip_addr *tip, u_int8 *tmac, u_int16 id, u_int8 *data, size_t datalen, u_int16 anws_rr, u_int16 auth_rr, u_int16 addi_rr); 22 EC_API_EXTERN int send_tcp(struct ip_addr *sip, struct ip_addr *tip, u_int16 sport, u_int16 dport, u_int32 seq, u_int32 ack, u_int8 flags, u_int8 *payload, size_t length); 23 EC_API_EXTERN int send_udp(struct ip_addr *sip, struct ip_addr *tip, u_int8 *tmac, u_int16 sport, u_int16 dport, u_int8 *payload, size_t length); 24 EC_API_EXTERN int send_tcp_ether(u_int8 *dmac, struct ip_addr *sip, struct ip_addr *tip, u_int16 sport, u_int16 dport, u_int32 seq, u_int32 ack, u_int8 flags); 25 EC_API_EXTERN int send_L3_icmp_unreach(struct packet_object *po); 26 27 #ifdef WITH_IPV6 28 EC_API_EXTERN int send_L3_icmp6_echo(struct ip_addr *sip, struct ip_addr *tip); 29 EC_API_EXTERN int send_L2_icmp6_echo(struct ip_addr *sip, struct ip_addr *tip, u_int8 *tmac); 30 EC_API_EXTERN int send_L2_icmp6_echo_opt(struct ip_addr *sip, struct ip_addr *tip, u_int8* o_data, u_int32 o_len, u_int8 *tmac); 31 EC_API_EXTERN int send_L2_icmp6_nsol(struct ip_addr *sip, struct ip_addr *tip, struct ip_addr *tgt, u_int8 *macaddr, u_int8 *tmac); 32 EC_API_EXTERN int send_L2_icmp6_nadv(struct ip_addr *sip, struct ip_addr *tip, u_int8 *macaddr, int router, u_int8 *tmac); 33 #endif 34 35 EC_API_EXTERN void capture_only_incoming(pcap_t *p, libnet_t *l); 36 37 EC_API_EXTERN u_int8 MEDIA_BROADCAST[MEDIA_ADDR_LEN]; 38 EC_API_EXTERN u_int8 ARP_BROADCAST[MEDIA_ADDR_LEN]; 39 40 #define FUNC_BUILDER(func) libnet_ptag_t func(u_int8 *dst, u_int16 proto, libnet_t* l) 41 #define FUNC_BUILDER_PTR(func) libnet_ptag_t (*func)(u_int8 *dst, u_int16 proto, libnet_t* l) 42 43 EC_API_EXTERN void add_builder(u_int8 dlt, FUNC_BUILDER_PTR(builder)); 44 45 #endif 46 47 /* EOF */ 48 49 // vim:ts=3:expandtab 50 51