00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef __LIBNET_FUNCTIONS_H
00033 #define __LIBNET_FUNCTIONS_H
00034
00063 libnet_t *
00064 libnet_init(int injection_type, char *device, char *err_buf);
00065
00071 void
00072 libnet_destroy(libnet_t *l);
00073
00080 void
00081 libnet_clear_packet(libnet_t *l);
00082
00089 void
00090 libnet_stats(libnet_t *l, struct libnet_stats *ls);
00091
00097 int
00098 libnet_getfd(libnet_t *l);
00099
00106 const char *
00107 libnet_getdevice(libnet_t *l);
00108
00117 u_int8_t *
00118 libnet_getpbuf(libnet_t *l, libnet_ptag_t ptag);
00119
00128 u_int32_t
00129 libnet_getpbuf_size(libnet_t *l, libnet_ptag_t ptag);
00130
00138 char *
00139 libnet_geterror(libnet_t *l);
00140
00147 u_int32_t
00148 libnet_getpacket_size(libnet_t *l);
00149
00155 int
00156 libnet_seed_prand(libnet_t *l);
00157
00171 u_int32_t
00172 libnet_get_prand(int mod);
00173
00195 int
00196 libnet_toggle_checksum(libnet_t *l, libnet_ptag_t ptag, int mode);
00197
00210 char *
00211 libnet_addr2name4(u_int32_t in, u_int8_t use_name);
00212
00226 u_int32_t
00227 libnet_name2addr4(libnet_t *l, char *host_name, u_int8_t use_name);
00228
00229 extern const struct libnet_in6_addr in6addr_error;
00230
00244 struct libnet_in6_addr
00245 libnet_name2addr6(libnet_t *l, char *host_name, u_int8_t use_name);
00246
00250 void
00251 libnet_addr2name6_r(struct libnet_in6_addr addr, u_int8_t use_name,
00252 char *host_name, int host_name_len);
00253
00269 int
00270 libnet_plist_chain_new(libnet_t *l, libnet_plist_t **plist, char *token_list);
00271
00283 int
00284 libnet_plist_chain_next_pair(libnet_plist_t *plist, u_int16_t *bport,
00285 u_int16_t *eport);
00286
00293 int
00294 libnet_plist_chain_dump(libnet_plist_t *plist);
00295
00304 char *
00305 libnet_plist_chain_dump_string(libnet_plist_t *plist);
00306
00312 int
00313 libnet_plist_chain_free(libnet_plist_t *plist);
00314
00402 libnet_ptag_t
00403 libnet_build_802_1q(u_int8_t *dst, u_int8_t *src, u_int16_t tpi,
00404 u_int8_t priority, u_int8_t cfi, u_int16_t vlan_id, u_int16_t len_proto,
00405 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00406
00418 libnet_ptag_t
00419 libnet_build_802_1x(u_int8_t eap_ver, u_int8_t eap_type, u_int16_t length,
00420 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00421
00433 libnet_ptag_t
00434 libnet_build_802_2(u_int8_t dsap, u_int8_t ssap, u_int8_t control,
00435 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00436
00450 libnet_ptag_t
00451 libnet_build_802_2snap(u_int8_t dsap, u_int8_t ssap, u_int8_t control,
00452 u_int8_t *oui, u_int16_t type, u_int8_t *payload, u_int32_t payload_s,
00453 libnet_t *l, libnet_ptag_t ptag);
00454
00470 libnet_ptag_t
00471 libnet_build_802_3(u_int8_t *dst, u_int8_t *src, u_int16_t len,
00472 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00473
00489 libnet_ptag_t
00490 libnet_build_ethernet(u_int8_t *dst, u_int8_t *src, u_int16_t type,
00491 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00492
00504 libnet_ptag_t
00505 libnet_autobuild_ethernet(u_int8_t *dst, u_int16_t type, libnet_t *l);
00506
00523 libnet_ptag_t
00524 libnet_build_fddi(u_int8_t fc, u_int8_t *dst, u_int8_t *src, u_int8_t dsap,
00525 u_int8_t ssap, u_int8_t cf, u_int8_t *oui, u_int16_t type, u_int8_t *payload,
00526 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00527
00540 libnet_ptag_t
00541 libnet_autobuild_fddi(u_int8_t fc, u_int8_t *dst, u_int8_t dsap, u_int8_t ssap,
00542 u_int8_t cf, u_int8_t *oui, u_int16_t type, libnet_t *l);
00543
00563 libnet_ptag_t
00564 libnet_build_arp(u_int16_t hrd, u_int16_t pro, u_int8_t hln, u_int8_t pln,
00565 u_int16_t op, u_int8_t *sha, u_int8_t *spa, u_int8_t *tha, u_int8_t *tpa,
00566 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00567
00580 libnet_ptag_t
00581 libnet_autobuild_arp(u_int16_t op, u_int8_t *sha, u_int8_t *spa, u_int8_t *tha,
00582 u_int8_t *tpa, libnet_t *l);
00583
00601 libnet_ptag_t
00602 libnet_build_tcp(u_int16_t sp, u_int16_t dp, u_int32_t seq, u_int32_t ack,
00603 u_int8_t control, u_int16_t win, u_int16_t sum, u_int16_t urg, u_int16_t len,
00604 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00605
00621 libnet_ptag_t
00622 libnet_build_tcp_options(u_int8_t *options, u_int32_t options_s, libnet_t *l,
00623 libnet_ptag_t ptag);
00624
00637 libnet_ptag_t
00638 libnet_build_udp(u_int16_t sp, u_int16_t dp, u_int16_t len, u_int16_t sum,
00639 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00640
00660 libnet_ptag_t
00661 libnet_build_cdp(u_int8_t version, u_int8_t ttl, u_int16_t sum, u_int16_t type,
00662 u_int16_t len, u_int8_t *value, u_int8_t *payload, u_int32_t payload_s,
00663 libnet_t *l, libnet_ptag_t ptag);
00664
00679 libnet_ptag_t
00680 libnet_build_icmpv4_echo(u_int8_t type, u_int8_t code, u_int16_t sum,
00681 u_int16_t id, u_int16_t seq, u_int8_t *payload, u_int32_t payload_s,
00682 libnet_t *l, libnet_ptag_t ptag);
00683
00699 libnet_ptag_t
00700 libnet_build_icmpv4_mask(u_int8_t type, u_int8_t code, u_int16_t sum,
00701 u_int16_t id, u_int16_t seq, u_int32_t mask, u_int8_t *payload,
00702 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00703
00717 libnet_ptag_t
00718 libnet_build_icmpv4_unreach(u_int8_t type, u_int8_t code, u_int16_t sum,
00719 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00720
00735 libnet_ptag_t
00736 libnet_build_icmpv4_redirect(u_int8_t type, u_int8_t code, u_int16_t sum,
00737 u_int32_t gateway, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
00738 libnet_ptag_t ptag);
00739
00754 libnet_ptag_t
00755 libnet_build_icmpv4_timeexceed(u_int8_t type, u_int8_t code, u_int16_t sum,
00756 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00757
00775 libnet_ptag_t
00776 libnet_build_icmpv4_timestamp(u_int8_t type, u_int8_t code, u_int16_t sum,
00777 u_int16_t id, u_int16_t seq, n_time otime, n_time rtime, n_time ttime,
00778 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00779
00792 libnet_ptag_t
00793 libnet_build_igmp(u_int8_t type, u_int8_t code, u_int16_t sum, u_int32_t ip,
00794 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00795
00815 libnet_ptag_t
00816 libnet_build_ipv4(u_int16_t ip_len, u_int8_t tos, u_int16_t id, u_int16_t frag,
00817 u_int8_t ttl, u_int8_t prot, u_int16_t sum, u_int32_t src, u_int32_t dst,
00818 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00819
00838 libnet_ptag_t
00839 libnet_build_ipv4_options(u_int8_t *options, u_int32_t options_s, libnet_t *l,
00840 libnet_ptag_t ptag);
00841
00855 libnet_ptag_t
00856 libnet_autobuild_ipv4(u_int16_t len, u_int8_t prot, u_int32_t dst, libnet_t *l);
00857
00873 libnet_ptag_t
00874 libnet_build_ipv6(u_int8_t tc, u_int32_t fl, u_int16_t len, u_int8_t nh,
00875 u_int8_t hl, struct libnet_in6_addr src, struct libnet_in6_addr dst,
00876 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00877
00890 libnet_ptag_t
00891 libnet_build_ipv6_frag(u_int8_t nh, u_int8_t reserved, u_int16_t frag,
00892 u_int32_t id, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
00893 libnet_ptag_t ptag);
00894
00912 libnet_ptag_t
00913 libnet_build_ipv6_routing(u_int8_t nh, u_int8_t len, u_int8_t rtype,
00914 u_int8_t segments, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
00915 libnet_ptag_t ptag);
00916
00930 libnet_ptag_t
00931 libnet_build_ipv6_destopts(u_int8_t nh, u_int8_t len, u_int8_t *payload,
00932 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00933
00948 libnet_ptag_t
00949 libnet_build_ipv6_hbhopts(u_int8_t nh, u_int8_t len, u_int8_t *payload,
00950 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00951
00961 libnet_ptag_t
00962 libnet_autobuild_ipv6(u_int16_t len, u_int8_t nh, struct libnet_in6_addr dst,
00963 libnet_t *l, libnet_ptag_t ptag);
00964
00982 libnet_ptag_t
00983 libnet_build_isl(u_int8_t *dhost, u_int8_t type, u_int8_t user,
00984 u_int8_t *shost, u_int16_t len, u_int8_t *snap, u_int16_t vid,
00985 u_int16_t portindex, u_int16_t reserved, u_int8_t *payload,
00986 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
00987
00999 libnet_ptag_t
01000 libnet_build_ipsec_esp_hdr(u_int32_t spi, u_int32_t seq, u_int32_t iv,
01001 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01002
01014 libnet_ptag_t
01015 libnet_build_ipsec_esp_ftr(u_int8_t len, u_int8_t nh, int8_t *auth,
01016 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01017
01032 libnet_ptag_t
01033 libnet_build_ipsec_ah(u_int8_t nh, u_int8_t len, u_int16_t res,
01034 u_int32_t spi, u_int32_t seq, u_int32_t auth, u_int8_t *payload,
01035 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01036
01053 libnet_ptag_t
01054 libnet_build_dnsv4(u_int16_t h_len, u_int16_t id, u_int16_t flags,
01055 u_int16_t num_q, u_int16_t num_anws_rr, u_int16_t num_auth_rr,
01056 u_int16_t num_addi_rr, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
01057 libnet_ptag_t ptag);
01058
01076 libnet_ptag_t
01077 libnet_build_rip(u_int8_t cmd, u_int8_t version, u_int16_t rd, u_int16_t af,
01078 u_int16_t rt, u_int32_t addr, u_int32_t mask, u_int32_t next_hop,
01079 u_int32_t metric, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
01080 libnet_ptag_t ptag);
01081
01104 libnet_ptag_t
01105 libnet_build_rpc_call(u_int32_t rm, u_int32_t xid, u_int32_t prog_num,
01106 u_int32_t prog_vers, u_int32_t procedure, u_int32_t cflavor, u_int32_t clength,
01107 u_int8_t *cdata, u_int32_t vflavor, u_int32_t vlength, u_int8_t *vdata,
01108 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01109
01132 libnet_ptag_t
01133 libnet_build_stp_conf(u_int16_t id, u_int8_t version, u_int8_t bpdu_type,
01134 u_int8_t flags, u_int8_t *root_id, u_int32_t root_pc, u_int8_t *bridge_id,
01135 u_int16_t port_id, u_int16_t message_age, u_int16_t max_age,
01136 u_int16_t hello_time, u_int16_t f_delay, u_int8_t *payload,
01137 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01138
01152 libnet_ptag_t
01153 libnet_build_stp_tcn(u_int16_t id, u_int8_t version, u_int8_t bpdu_type,
01154 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01155
01173 libnet_ptag_t
01174 libnet_build_token_ring(u_int8_t ac, u_int8_t fc, u_int8_t *dst, u_int8_t *src,
01175 u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t *oui, u_int16_t type,
01176 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01177
01191 libnet_ptag_t
01192 libnet_autobuild_token_ring(u_int8_t ac, u_int8_t fc, u_int8_t *dst,
01193 u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t *oui, u_int16_t type,
01194 libnet_t *l);
01195
01215 libnet_ptag_t
01216 libnet_build_vrrp(u_int8_t version, u_int8_t type, u_int8_t vrouter_id,
01217 u_int8_t priority, u_int8_t ip_count, u_int8_t auth_type, u_int8_t advert_int,
01218 u_int16_t sum, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
01219 libnet_ptag_t ptag);
01220
01233 libnet_ptag_t
01234 libnet_build_mpls(u_int32_t label, u_int8_t experimental, u_int8_t bos,
01235 u_int8_t ttl, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
01236 libnet_ptag_t ptag);
01237
01265 libnet_ptag_t
01266 libnet_build_ntp(u_int8_t leap_indicator, u_int8_t version, u_int8_t mode,
01267 u_int8_t stratum, u_int8_t poll, u_int8_t precision, u_int16_t delay_int,
01268 u_int16_t delay_frac, u_int16_t dispersion_int, u_int16_t dispersion_frac,
01269 u_int32_t reference_id, u_int32_t ref_ts_int, u_int32_t ref_ts_frac,
01270 u_int32_t orig_ts_int, u_int32_t orig_ts_frac, u_int32_t rec_ts_int,
01271 u_int32_t rec_ts_frac, u_int32_t xmt_ts_int, u_int32_t xmt_ts_frac,
01272 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01273
01287 libnet_ptag_t
01288 libnet_build_ospfv2(u_int16_t len, u_int8_t type, u_int32_t rtr_id,
01289 u_int32_t area_id, u_int16_t sum, u_int16_t autype, u_int8_t *payload,
01290 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01291
01306 libnet_ptag_t
01307 libnet_build_ospfv2_hello(u_int32_t netmask, u_int16_t interval, u_int8_t opts,
01308 u_int8_t priority, u_int dead_int, u_int32_t des_rtr, u_int32_t bkup_rtr,
01309 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01310
01322 libnet_ptag_t
01323 libnet_build_ospfv2_dbd(u_int16_t dgram_len, u_int8_t opts, u_int8_t type,
01324 u_int seqnum, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
01325 libnet_ptag_t ptag);
01326
01337 libnet_ptag_t
01338 libnet_build_ospfv2_lsr(u_int type, u_int lsid, u_int32_t advrtr,
01339 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01340
01349 libnet_ptag_t
01350 libnet_build_ospfv2_lsu(u_int num, u_int8_t *payload, u_int32_t payload_s,
01351 libnet_t *l, libnet_ptag_t ptag);
01352
01368 libnet_ptag_t
01369 libnet_build_ospfv2_lsa(u_int16_t age, u_int8_t opts, u_int8_t type,
01370 u_int lsid, u_int32_t advrtr, u_int seqnum, u_int16_t sum, u_int16_t len,
01371 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01372
01387 libnet_ptag_t
01388 libnet_build_ospfv2_lsa_rtr(u_int16_t flags, u_int16_t num, u_int id,
01389 u_int data, u_int8_t type, u_int8_t tos, u_int16_t metric, u_int8_t *payload,
01390 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01391
01401 libnet_ptag_t
01402 libnet_build_ospfv2_lsa_net(u_int32_t nmask, u_int rtrid, u_int8_t *payload,
01403 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01404
01415 libnet_ptag_t
01416 libnet_build_ospfv2_lsa_sum(u_int32_t nmask, u_int metric, u_int tos,
01417 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01418
01430 libnet_ptag_t
01431 libnet_build_ospfv2_lsa_as(u_int32_t nmask, u_int metric, u_int32_t fwdaddr,
01432 u_int tag, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
01433 libnet_ptag_t ptag);
01434
01445 libnet_ptag_t
01446 libnet_build_data(u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
01447 libnet_ptag_t ptag);
01448
01470 libnet_ptag_t
01471 libnet_build_dhcpv4(u_int8_t opcode, u_int8_t htype, u_int8_t hlen,
01472 u_int8_t hopcount, u_int32_t xid, u_int16_t secs, u_int16_t flags,
01473 u_int32_t cip, u_int32_t yip, u_int32_t sip, u_int32_t gip, u_int8_t *chaddr,
01474 u_int8_t *sname, u_int8_t *file, u_int8_t *payload, u_int32_t payload_s,
01475 libnet_t *l, libnet_ptag_t ptag);
01476
01498 libnet_ptag_t
01499 libnet_build_bootpv4(u_int8_t opcode, u_int8_t htype, u_int8_t hlen,
01500 u_int8_t hopcount, u_int32_t xid, u_int16_t secs, u_int16_t flags,
01501 u_int32_t cip, u_int32_t yip, u_int32_t sip, u_int32_t gip, u_int8_t *chaddr,
01502 u_int8_t *sname, u_int8_t *file, u_int8_t *payload, u_int32_t payload_s,
01503 libnet_t *l, libnet_ptag_t ptag);
01504
01509 u_int32_t
01510 libnet_getgre_length(u_int16_t fv);
01511
01534 libnet_ptag_t
01535 libnet_build_gre(u_int16_t fv, u_int16_t type, u_int16_t sum,
01536 u_int16_t offset, u_int32_t key, u_int32_t seq, u_int16_t len,
01537 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01538
01560 libnet_ptag_t
01561 libnet_build_egre(u_int16_t fv, u_int16_t type, u_int16_t sum,
01562 u_int16_t offset, u_int32_t key, u_int32_t seq, u_int16_t len,
01563 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01564
01576 libnet_ptag_t
01577 libnet_build_gre_sre(u_int16_t af, u_int8_t offset, u_int8_t length,
01578 u_int8_t *routing, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
01579 libnet_ptag_t ptag);
01580
01586 libnet_ptag_t
01587 libnet_build_gre_last_sre(libnet_t *l, libnet_ptag_t ptag);
01588
01610 libnet_ptag_t
01611 libnet_build_bgp4_header(u_int8_t marker[LIBNET_BGP4_MARKER_SIZE],
01612 u_int16_t len, u_int8_t type, u_int8_t *payload, u_int32_t payload_s,
01613 libnet_t *l, libnet_ptag_t ptag);
01614
01631 libnet_ptag_t
01632 libnet_build_bgp4_open(u_int8_t version, u_int16_t src_as, u_int16_t hold_time,
01633 u_int32_t bgp_id, u_int8_t opt_len, u_int8_t *payload, u_int32_t payload_s,
01634 libnet_t *l, libnet_ptag_t ptag);
01635
01651 libnet_ptag_t
01652 libnet_build_bgp4_update(u_int16_t unfeasible_rt_len, u_int8_t *withdrawn_rt,
01653 u_int16_t total_path_attr_len, u_int8_t *path_attributes, u_int16_t info_len,
01654 u_int8_t *reachability_info, u_int8_t *payload, u_int32_t payload_s,
01655 libnet_t *l, libnet_ptag_t ptag);
01656
01669 libnet_ptag_t
01670 libnet_build_bgp4_notification(u_int8_t err_code, u_int8_t err_subcode,
01671 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01672
01694 libnet_ptag_t
01695 libnet_build_sebek(u_int32_t magic, u_int16_t version, u_int16_t type,
01696 u_int32_t counter, u_int32_t time_sec, u_int32_t time_usec, u_int32_t pid,
01697 u_int32_t uid, u_int32_t fd, u_int8_t cmd[SEBEK_CMD_LENGTH], u_int32_t length,
01698 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01699
01719 libnet_ptag_t
01720 libnet_build_hsrp(u_int8_t version, u_int8_t opcode, u_int8_t state,
01721 u_int8_t hello_time, u_int8_t hold_time, u_int8_t priority, u_int8_t group,
01722 u_int8_t reserved, u_int8_t authdata[HSRP_AUTHDATA_LENGTH], u_int32_t virtual_ip,
01723 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01724
01739 libnet_ptag_t
01740 libnet_build_link(u_int8_t *dst, u_int8_t *src, u_int8_t *oui, u_int16_t type,
01741 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
01742
01753 libnet_ptag_t
01754 libnet_autobuild_link(u_int8_t *dst, u_int8_t *oui, u_int16_t type,
01755 libnet_t *l);
01756
01769 int
01770 libnet_write(libnet_t *l);
01771
01781 u_int32_t
01782 libnet_get_ipaddr4(libnet_t *l);
01783
01789 struct libnet_in6_addr
01790 libnet_get_ipaddr6(libnet_t *l);
01791
01800 struct libnet_ether_addr *
01801 libnet_get_hwaddr(libnet_t *l);
01802
01812 u_int8_t *
01813 libnet_hex_aton(const char *s, int *len);
01814
01819 const char *
01820 libnet_version(void);
01821
01837 int
01838 libnet_adv_cull_packet(libnet_t *l, u_int8_t **packet, u_int32_t *packet_s);
01839
01852 int
01853 libnet_adv_cull_header(libnet_t *l, libnet_ptag_t ptag, u_int8_t **header,
01854 u_int32_t *header_s);
01855
01869 int
01870 libnet_adv_write_link(libnet_t *l, u_int8_t *packet, u_int32_t packet_s);
01871
01885 int
01886 libnet_adv_write_raw_ipv4(libnet_t *l, u_int8_t *packet, u_int32_t packet_s);
01887
01894 void
01895 libnet_adv_free_packet(libnet_t *l, u_int8_t *packet);
01896
01910 int
01911 libnet_cq_add(libnet_t *l, char *label);
01912
01927 libnet_t *
01928 libnet_cq_remove(libnet_t *l);
01929
01941 libnet_t *
01942 libnet_cq_remove_by_label(char *label);
01943
01950 const char *
01951 libnet_cq_getlabel(libnet_t *l);
01952
01959 libnet_t *
01960 libnet_cq_find_by_label(char *label);
01961
01967 void
01968 libnet_cq_destroy(void);
01969
01989 libnet_t *
01990 libnet_cq_head(void);
01991
01997 int
01998 libnet_cq_last(void);
01999
02005 libnet_t *
02006 libnet_cq_next(void);
02007
02013 u_int32_t
02014 libnet_cq_size(void);
02015
02019 u_int32_t
02020 libnet_cq_end_loop(void);
02021
02027 void
02028 libnet_diag_dump_context(libnet_t *l);
02029
02035 void
02036 libnet_diag_dump_pblock(libnet_t *l);
02037
02044 char *
02045 libnet_diag_dump_pblock_type(u_int8_t type);
02046
02060 void
02061 libnet_diag_dump_hex(u_int8_t *packet, u_int32_t len, int swap, FILE *stream);
02062
02063
02064
02065
02066 int
02067 libnet_write_raw_ipv4(libnet_t *l, u_int8_t *packet, u_int32_t size);
02068
02069
02070
02071
02072 int
02073 libnet_write_raw_ipv6(libnet_t *l, u_int8_t *packet, u_int32_t size);
02074
02075
02076
02077
02078 int
02079 libnet_write_link(libnet_t *l, u_int8_t *packet, u_int32_t size);
02080
02081 #if ((__WIN32__) && !(__CYGWIN__))
02082
02083
02084
02085 SOCKET
02086 libnet_open_raw4(libnet_t *l);
02087 #else
02088
02089
02090
02091 int
02092 libnet_open_raw4(libnet_t *l);
02093 #endif
02094
02095
02096
02097
02098 int
02099 libnet_close_raw4(libnet_t *l);
02100
02101
02102
02103
02104 int
02105 libnet_open_raw6(libnet_t *l);
02106
02107
02108
02109
02110 int
02111 libnet_close_raw6(libnet_t *l);
02112
02113
02114
02115
02116 int
02117 libnet_select_device(libnet_t *l);
02118
02119
02120
02121
02122 int
02123 libnet_open_link(libnet_t *l);
02124
02125
02126
02127
02128 int
02129 libnet_close_link(libnet_t *l);
02130
02131
02132
02133
02134 int
02135 libnet_do_checksum(libnet_t *l, u_int8_t *packet, int protocol, int len);
02136
02137
02138
02139
02140 u_int32_t
02141 libnet_compute_crc(u_int8_t *buf, u_int32_t len);
02142
02143
02144
02145
02146 u_int16_t
02147 libnet_ip_check(u_int16_t *addr, int len);
02148
02149
02150
02151
02152 int
02153 libnet_in_cksum(u_int16_t *addr, int len);
02154
02155
02156
02157
02158
02159
02160
02161
02162 libnet_pblock_t *
02163 libnet_pblock_probe(libnet_t *l, libnet_ptag_t ptag, u_int32_t n,
02164 u_int8_t type);
02165
02166
02167
02168
02169
02170
02171 libnet_pblock_t *
02172 libnet_pblock_new(libnet_t *l, u_int32_t size);
02173
02174
02175
02176
02177
02178 int
02179 libnet_pblock_swap(libnet_t *l, libnet_ptag_t ptag1, libnet_ptag_t ptag2);
02180
02181
02182
02183
02184
02185 int
02186 libnet_pblock_insert_before(libnet_t *l, libnet_ptag_t ptag1,
02187 libnet_ptag_t ptag2);
02188
02189
02190
02191
02192
02193 void
02194 libnet_pblock_delete(libnet_t *l, libnet_pblock_t *p);
02195
02196
02197
02198
02199
02200
02201
02202 libnet_ptag_t
02203 libnet_pblock_update(libnet_t *l, libnet_pblock_t *p, u_int32_t h,
02204 u_int8_t type);
02205
02206
02207
02208
02209
02210
02211
02212
02213
02214
02215 void
02216 libnet_pblock_record_ip_offset(libnet_t *l, libnet_pblock_t *p);
02217
02218
02219
02220
02221
02222 libnet_pblock_t *
02223 libnet_pblock_find(libnet_t *l, libnet_ptag_t ptag);
02224
02225
02226
02227
02228
02229 int
02230 libnet_pblock_append(libnet_t *l, libnet_pblock_t *p, u_int8_t *buf,
02231 u_int32_t len);
02232
02233
02234
02235
02236
02237 void
02238 libnet_pblock_setflags(libnet_pblock_t *p, u_int8_t flags);
02239
02240
02241
02242
02243
02244
02245 int
02246 libnet_pblock_p2p(u_int8_t type);
02247
02248
02249
02250
02251
02252
02253 int
02254 libnet_pblock_coalesce(libnet_t *l, u_int8_t **packet, u_int32_t *size);
02255
02256 #if !(__WIN32__)
02257
02258
02259
02260
02261
02262 int
02263 libnet_check_iface(libnet_t *l);
02264 #endif
02265
02266 #if defined(__WIN32__)
02267
02268
02269
02270 BYTE *
02271 libnet_win32_get_remote_mac(libnet_t *l, DWORD IP);
02272
02273
02274
02275
02276 int
02277 libnet_close_link_interface(libnet_t *l);
02278
02279
02280
02281
02282 BYTE *
02283 libnet_win32_read_arp_table(DWORD IP);
02284 #endif
02285 #endif
02286
02287