libnet  latest
A Portable Framework for Low-Level Network Packet Construction
libnet-functions.h
Go to the documentation of this file.
1 /*
2  * libnet
3  * libnet-functions.h - function prototypes
4  *
5  * Copyright (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in the
15  * documentation and/or other materials provided with the distribution.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27  * SUCH DAMAGE.
28  *
29  */
30 
31 #ifndef __LIBNET_FUNCTIONS_H
32 #define __LIBNET_FUNCTIONS_H
33 
62 LIBNET_API
63 libnet_t *
64 libnet_init(int injection_type, const char *device, char *err_buf);
65 
71 LIBNET_API
72 void
74 
81 LIBNET_API
82 void
84 
91 LIBNET_API
92 void
93 libnet_stats(libnet_t *l, struct libnet_stats *ls);
94 
100 LIBNET_API
101 int
103 
110 LIBNET_API
111 const char *
113 
122 LIBNET_API
123 uint8_t *
124 libnet_getpbuf(libnet_t *l, libnet_ptag_t ptag);
125 
134 LIBNET_API
135 uint32_t
136 libnet_getpbuf_size(libnet_t *l, libnet_ptag_t ptag);
137 
145 LIBNET_API
146 char *
148 
155 LIBNET_API
156 uint32_t
158 
165 LIBNET_API
166 int
168 
183 LIBNET_API
184 uint32_t
185 libnet_get_prand(int mod);
186 
209 LIBNET_API
210 int
211 libnet_toggle_checksum(libnet_t *l, libnet_ptag_t ptag, int mode);
212 
225 LIBNET_API
226 char *
227 libnet_addr2name4(uint32_t in, uint8_t use_name);
228 
243 LIBNET_API
244 uint32_t
245 libnet_name2addr4(libnet_t *l, const char *host_name, uint8_t use_name);
246 
247 extern const struct libnet_in6_addr in6addr_error;
248 
255 LIBNET_API
256 int
258 
272 LIBNET_API
273 struct libnet_in6_addr
274 libnet_name2addr6(libnet_t *l, const char *host_name, uint8_t use_name);
275 
279 LIBNET_API
280 void
281 libnet_addr2name6_r(struct libnet_in6_addr addr, uint8_t use_name,
282 char *host_name, int host_name_len);
283 
300 LIBNET_API
301 int
302 libnet_plist_chain_new(libnet_t *l, libnet_plist_t **plist, char *token_list);
303 
317 LIBNET_API
318 int
319 libnet_plist_chain_next_pair(libnet_plist_t *plist, uint16_t *bport,
320 uint16_t *eport);
321 
329 LIBNET_API
330 int
332 
340 LIBNET_API
341 char *
343 
350 LIBNET_API
351 int
353 
442 LIBNET_API
443 libnet_ptag_t
444 libnet_build_802_1q(const uint8_t *dst, const uint8_t *src, uint16_t tpi,
445 uint8_t priority, uint8_t cfi, uint16_t vlan_id, uint16_t len_proto,
446 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
447 
460 LIBNET_API
461 libnet_ptag_t
462 libnet_build_802_1x(uint8_t eap_ver, uint8_t eap_type, uint16_t length,
463 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
464 
477 LIBNET_API
478 libnet_ptag_t
479 libnet_build_802_2(uint8_t dsap, uint8_t ssap, uint8_t control,
480 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
481 
496 LIBNET_API
497 libnet_ptag_t
498 libnet_build_802_2snap(uint8_t dsap, uint8_t ssap, uint8_t control,
499 uint8_t *oui, uint16_t type, const uint8_t* payload, uint32_t payload_s,
500 libnet_t *l, libnet_ptag_t ptag);
501 
518 LIBNET_API
519 libnet_ptag_t
520 libnet_build_802_3(const uint8_t *dst, const uint8_t *src, uint16_t len,
521 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
522 
539 LIBNET_API
540 libnet_ptag_t
541 libnet_build_ethernet(const uint8_t *dst, const uint8_t *src, uint16_t type,
542 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
543 
556 LIBNET_API
557 libnet_ptag_t
558 libnet_autobuild_ethernet(const uint8_t *dst, uint16_t type, libnet_t *l);
559 
577 LIBNET_API
578 libnet_ptag_t
579 libnet_build_fddi(uint8_t fc, const uint8_t *dst, const uint8_t *src, uint8_t dsap,
580 uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type, const uint8_t* payload,
581 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
582 
596 LIBNET_API
597 libnet_ptag_t
598 libnet_autobuild_fddi(uint8_t fc, const uint8_t *dst, uint8_t dsap, uint8_t ssap,
599 uint8_t cf, const uint8_t *oui, uint16_t type, libnet_t *l);
600 
621 LIBNET_API
622 libnet_ptag_t
623 libnet_build_arp(uint16_t hrd, uint16_t pro, uint8_t hln, uint8_t pln,
624 uint16_t op, const uint8_t *sha, const uint8_t *spa, const uint8_t *tha, const uint8_t *tpa,
625 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
626 
640 LIBNET_API
641 libnet_ptag_t
642 libnet_autobuild_arp(uint16_t op, const uint8_t *sha, const uint8_t *spa, const uint8_t *tha,
643 const uint8_t *tpa, libnet_t *l);
644 
663 LIBNET_API
664 libnet_ptag_t
665 libnet_build_tcp(uint16_t sp, uint16_t dp, uint32_t seq, uint32_t ack,
666 uint8_t control, uint16_t win, uint16_t sum, uint16_t urg, uint16_t len,
667 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
668 
685 LIBNET_API
686 libnet_ptag_t
687 libnet_build_tcp_options(const uint8_t *options, uint32_t options_s, libnet_t *l,
688 libnet_ptag_t ptag);
689 
703 LIBNET_API
704 libnet_ptag_t
705 libnet_build_udp(uint16_t sp, uint16_t dp, uint16_t len, uint16_t sum,
706 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
707 
728 LIBNET_API
729 libnet_ptag_t
730 libnet_build_cdp(uint8_t version, uint8_t ttl, uint16_t sum, uint16_t type,
731 uint16_t value_s, const uint8_t *value, const uint8_t* payload, uint32_t payload_s,
732 libnet_t *l, libnet_ptag_t ptag);
733 
749 LIBNET_API
750 libnet_ptag_t
751 libnet_build_icmpv4_echo(uint8_t type, uint8_t code, uint16_t sum,
752 uint16_t id, uint16_t seq, const uint8_t* payload, uint32_t payload_s,
753 libnet_t *l, libnet_ptag_t ptag);
754 
771 LIBNET_API
772 libnet_ptag_t
773 libnet_build_icmpv4_mask(uint8_t type, uint8_t code, uint16_t sum,
774 uint16_t id, uint16_t seq, uint32_t mask, const uint8_t* payload,
775 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
776 
791 LIBNET_API
792 libnet_ptag_t
793 libnet_build_icmpv4_unreach(uint8_t type, uint8_t code, uint16_t sum,
794 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
795 
811 LIBNET_API
812 libnet_ptag_t
813 libnet_build_icmpv4_redirect(uint8_t type, uint8_t code, uint16_t sum,
814 uint32_t gateway, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
815 libnet_ptag_t ptag);
816 
832 LIBNET_API
833 libnet_ptag_t
834 libnet_build_icmpv4_timeexceed(uint8_t type, uint8_t code, uint16_t sum,
835 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
836 
855 LIBNET_API
856 libnet_ptag_t
857 libnet_build_icmpv4_timestamp(uint8_t type, uint8_t code, uint16_t sum,
858 uint16_t id, uint16_t seq, uint32_t otime, uint32_t rtime, uint32_t ttime,
859 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
860 
876 LIBNET_API
877 libnet_ptag_t libnet_build_icmpv6_echo(uint8_t type, uint8_t code, uint16_t
878  sum, uint16_t id, uint16_t seq, uint8_t *payload, uint32_t payload_s,
879  libnet_t *l, libnet_ptag_t ptag);
880 
895 LIBNET_API
896 libnet_ptag_t
897 libnet_build_icmpv6_unreach(uint8_t type, uint8_t code, uint16_t sum,
898 uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
899 
915 LIBNET_API
916 libnet_ptag_t libnet_build_icmpv6_ndp_nsol(uint8_t type, uint8_t code,
917  uint16_t sum, struct libnet_in6_addr target, uint8_t *payload, uint32_t
918  payload_s, libnet_t* l, libnet_ptag_t ptag);
919 
936 LIBNET_API
937 libnet_ptag_t libnet_build_icmpv6_ndp_nadv(uint8_t type, uint8_t code,
938  uint16_t sum, uint32_t flags, struct libnet_in6_addr target, uint8_t
939  *payload, uint32_t payload_s, libnet_t* l, libnet_ptag_t ptag);
940 
951 LIBNET_API
952 libnet_ptag_t libnet_build_icmpv6_ndp_opt(uint8_t type, uint8_t* option,
953  uint32_t option_s, libnet_t* l, libnet_ptag_t ptag);
954 
970 LIBNET_API
971 libnet_ptag_t
972 libnet_build_igmp(uint8_t type, uint8_t reserved, uint16_t sum, uint32_t ip,
973 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
974 
995 LIBNET_API
996 libnet_ptag_t
997 libnet_build_ipv4(uint16_t ip_len, uint8_t tos, uint16_t id, uint16_t frag,
998 uint8_t ttl, uint8_t prot, uint16_t sum, uint32_t src, uint32_t dst,
999 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1000 
1020 LIBNET_API
1021 libnet_ptag_t
1022 libnet_build_ipv4_options(const uint8_t *options, uint32_t options_s, libnet_t *l,
1023 libnet_ptag_t ptag);
1024 
1039 LIBNET_API
1040 libnet_ptag_t
1041 libnet_autobuild_ipv4(uint16_t len, uint8_t prot, uint32_t dst, libnet_t *l);
1042 
1059 LIBNET_API
1060 libnet_ptag_t
1061 libnet_build_ipv6(uint8_t tc, uint32_t fl, uint16_t len, uint8_t nh,
1062 uint8_t hl, struct libnet_in6_addr src, struct libnet_in6_addr dst,
1063 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1064 
1078 LIBNET_API
1079 libnet_ptag_t
1080 libnet_build_ipv6_frag(uint8_t nh, uint8_t reserved, uint16_t frag,
1081 uint32_t id, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1082 libnet_ptag_t ptag);
1083 
1102 LIBNET_API
1103 libnet_ptag_t
1104 libnet_build_ipv6_routing(uint8_t nh, uint8_t len, uint8_t rtype,
1105 uint8_t segments, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1106 libnet_ptag_t ptag);
1107 
1122 LIBNET_API
1123 libnet_ptag_t
1124 libnet_build_ipv6_destopts(uint8_t nh, uint8_t len, const uint8_t* payload,
1125 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1126 
1142 LIBNET_API
1143 libnet_ptag_t
1144 libnet_build_ipv6_hbhopts(uint8_t nh, uint8_t len, const uint8_t* payload,
1145 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1146 
1164 LIBNET_API
1165 libnet_ptag_t
1166 libnet_autobuild_ipv6(uint16_t len, uint8_t nh, struct libnet_in6_addr dst,
1167 libnet_t *l, libnet_ptag_t ptag);
1168 
1187 LIBNET_API
1188 libnet_ptag_t
1189 libnet_build_isl(uint8_t *dhost, uint8_t type, uint8_t user,
1190 uint8_t *shost, uint16_t len, const uint8_t *snap, uint16_t vid,
1191 uint16_t portindex, uint16_t reserved, const uint8_t* payload,
1192 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1193 
1206 LIBNET_API
1207 libnet_ptag_t
1208 libnet_build_ipsec_esp_hdr(uint32_t spi, uint32_t seq, uint32_t iv,
1209 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1210 
1223 LIBNET_API
1224 libnet_ptag_t
1225 libnet_build_ipsec_esp_ftr(uint8_t len, uint8_t nh, int8_t *auth,
1226 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1227 
1243 LIBNET_API
1244 libnet_ptag_t
1245 libnet_build_ipsec_ah(uint8_t nh, uint8_t len, uint16_t res,
1246 uint32_t spi, uint32_t seq, uint32_t auth, const uint8_t* payload,
1247 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1248 
1266 LIBNET_API
1267 libnet_ptag_t
1268 libnet_build_dnsv4(uint16_t h_len, uint16_t id, uint16_t flags,
1269 uint16_t num_q, uint16_t num_anws_rr, uint16_t num_auth_rr,
1270 uint16_t num_addi_rr, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1271 libnet_ptag_t ptag);
1272 
1291 LIBNET_API
1292 libnet_ptag_t
1293 libnet_build_rip(uint8_t cmd, uint8_t version, uint16_t rd, uint16_t af,
1294 uint16_t rt, uint32_t addr, uint32_t mask, uint32_t next_hop,
1295 uint32_t metric, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1296 libnet_ptag_t ptag);
1297 
1321 LIBNET_API
1322 libnet_ptag_t
1323 libnet_build_rpc_call(uint32_t rm, uint32_t xid, uint32_t prog_num,
1324 uint32_t prog_vers, uint32_t procedure, uint32_t cflavor, uint32_t clength,
1325 uint8_t *cdata, uint32_t vflavor, uint32_t vlength, const uint8_t *vdata,
1326 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1327 
1351 LIBNET_API
1352 libnet_ptag_t
1353 libnet_build_stp_conf(uint16_t id, uint8_t version, uint8_t bpdu_type,
1354 uint8_t flags, const uint8_t *root_id, uint32_t root_pc, const uint8_t *bridge_id,
1355 uint16_t port_id, uint16_t message_age, uint16_t max_age,
1356 uint16_t hello_time, uint16_t f_delay, const uint8_t* payload,
1357 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1358 
1373 LIBNET_API
1374 libnet_ptag_t
1375 libnet_build_stp_tcn(uint16_t id, uint8_t version, uint8_t bpdu_type,
1376 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1377 
1396 LIBNET_API
1397 libnet_ptag_t
1398 libnet_build_token_ring(uint8_t ac, uint8_t fc, const uint8_t *dst, const uint8_t *src,
1399 uint8_t dsap, uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type,
1400 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1401 
1416 LIBNET_API
1417 libnet_ptag_t
1418 libnet_autobuild_token_ring(uint8_t ac, uint8_t fc, const uint8_t *dst,
1419 uint8_t dsap, uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type,
1420 libnet_t *l);
1421 
1442 LIBNET_API
1443 libnet_ptag_t
1444 libnet_build_vrrp(uint8_t version, uint8_t type, uint8_t vrouter_id,
1445 uint8_t priority, uint8_t ip_count, uint8_t auth_type, uint8_t advert_int,
1446 uint16_t sum, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1447 libnet_ptag_t ptag);
1448 
1462 LIBNET_API
1463 libnet_ptag_t
1464 libnet_build_mpls(uint32_t label, uint8_t experimental, uint8_t bos,
1465 uint8_t ttl, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1466 libnet_ptag_t ptag);
1467 
1496 LIBNET_API
1497 libnet_ptag_t
1498 libnet_build_ntp(uint8_t leap_indicator, uint8_t version, uint8_t mode,
1499 uint8_t stratum, uint8_t poll, uint8_t precision, uint16_t delay_int,
1500 uint16_t delay_frac, uint16_t dispersion_int, uint16_t dispersion_frac,
1501 uint32_t reference_id, uint32_t ref_ts_int, uint32_t ref_ts_frac,
1502 uint32_t orig_ts_int, uint32_t orig_ts_frac, uint32_t rec_ts_int,
1503 uint32_t rec_ts_frac, uint32_t xmt_ts_int, uint32_t xmt_ts_frac,
1504 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1505 
1520 LIBNET_API
1521 libnet_ptag_t
1522 libnet_build_ospfv2(uint16_t len, uint8_t type, uint32_t rtr_id,
1523 uint32_t area_id, uint16_t sum, uint16_t autype, const uint8_t* payload,
1524 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1525 
1541 LIBNET_API
1542 libnet_ptag_t
1543 libnet_build_ospfv2_hello(uint32_t netmask, uint16_t interval, uint8_t opts,
1544 uint8_t priority, uint32_t dead_int, uint32_t des_rtr, uint32_t bkup_rtr,
1545 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1546 
1563 libnet_ptag_t
1564 libnet_build_ospfv2_hello_neighbor(uint32_t netmask, uint16_t interval, uint8_t opts,
1565 uint8_t priority, uint32_t dead_int, uint32_t des_rtr, uint32_t bkup_rtr, uint32_t neighbor,
1566 const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1567 
1580 LIBNET_API
1581 libnet_ptag_t
1582 libnet_build_ospfv2_dbd(uint16_t dgram_len, uint8_t opts, uint8_t type,
1583 uint32_t seqnum, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1584 libnet_ptag_t ptag);
1585 
1597 LIBNET_API
1598 libnet_ptag_t
1599 libnet_build_ospfv2_lsr(uint32_t type, uint32_t lsid, uint32_t advrtr,
1600 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1601 
1611 LIBNET_API
1612 libnet_ptag_t
1613 libnet_build_ospfv2_lsu(uint32_t num, const uint8_t* payload, uint32_t payload_s,
1614 libnet_t *l, libnet_ptag_t ptag);
1615 
1632 LIBNET_API
1633 libnet_ptag_t
1634 libnet_build_ospfv2_lsa(uint16_t age, uint8_t opts, uint8_t type,
1635 uint32_t lsid, uint32_t advrtr, uint32_t seqnum, uint16_t sum, uint16_t len,
1636 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1637 
1653 LIBNET_API
1654 libnet_ptag_t
1655 libnet_build_ospfv2_lsa_rtr(uint16_t flags, uint16_t num, uint32_t id,
1656 uint32_t data, uint8_t type, uint8_t tos, uint16_t metric, const uint8_t* payload,
1657 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1658 
1669 LIBNET_API
1670 libnet_ptag_t
1671 libnet_build_ospfv2_lsa_net(uint32_t nmask, uint32_t rtrid, const uint8_t* payload,
1672 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1673 
1685 LIBNET_API
1686 libnet_ptag_t
1687 libnet_build_ospfv2_lsa_sum(uint32_t nmask, uint32_t metric, uint32_t tos,
1688 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1689 
1702 LIBNET_API
1703 libnet_ptag_t
1704 libnet_build_ospfv2_lsa_as(uint32_t nmask, uint32_t metric, uint32_t fwdaddr,
1705 uint32_t tag, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1706 libnet_ptag_t ptag);
1707 
1720 LIBNET_API
1721 libnet_ptag_t
1722 libnet_build_data(const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1723 libnet_ptag_t ptag);
1724 
1747 LIBNET_API
1748 libnet_ptag_t
1749 libnet_build_dhcpv4(uint8_t opcode, uint8_t htype, uint8_t hlen,
1750 uint8_t hopcount, uint32_t xid, uint16_t secs, uint16_t flags,
1751 uint32_t cip, uint32_t yip, uint32_t sip, uint32_t gip, const uint8_t *chaddr,
1752 const char *sname, const char *file, const uint8_t* payload, uint32_t payload_s,
1753 libnet_t *l, libnet_ptag_t ptag);
1754 
1777 LIBNET_API
1778 libnet_ptag_t
1779 libnet_build_bootpv4(uint8_t opcode, uint8_t htype, uint8_t hlen,
1780 uint8_t hopcount, uint32_t xid, uint16_t secs, uint16_t flags,
1781 uint32_t cip, uint32_t yip, uint32_t sip, uint32_t gip, const uint8_t *chaddr,
1782 const char *sname, const char *file, const uint8_t* payload, uint32_t payload_s,
1783 libnet_t *l, libnet_ptag_t ptag);
1784 
1790 LIBNET_API
1791 uint32_t
1792 libnet_getgre_length(uint16_t fv);
1793 
1817 LIBNET_API
1818 libnet_ptag_t
1819 libnet_build_gre(uint16_t fv, uint16_t type, uint16_t sum,
1820 uint16_t offset, uint32_t key, uint32_t seq, uint16_t len,
1821 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1822 
1845 LIBNET_API
1846 libnet_ptag_t
1847 libnet_build_egre(uint16_t fv, uint16_t type, uint16_t sum,
1848 uint16_t offset, uint32_t key, uint32_t seq, uint16_t len,
1849 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1850 
1863 LIBNET_API
1864 libnet_ptag_t
1865 libnet_build_gre_sre(uint16_t af, uint8_t offset, uint8_t length,
1866 uint8_t *routing, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1867 libnet_ptag_t ptag);
1868 
1875 LIBNET_API
1876 libnet_ptag_t
1877 libnet_build_gre_last_sre(libnet_t *l, libnet_ptag_t ptag);
1878 
1901 LIBNET_API
1902 libnet_ptag_t
1903 libnet_build_bgp4_header(uint8_t marker[LIBNET_BGP4_MARKER_SIZE],
1904 uint16_t len, uint8_t type, const uint8_t* payload, uint32_t payload_s,
1905 libnet_t *l, libnet_ptag_t ptag);
1906 
1924 LIBNET_API
1925 libnet_ptag_t
1926 libnet_build_bgp4_open(uint8_t version, uint16_t src_as, uint16_t hold_time,
1927 uint32_t bgp_id, uint8_t opt_len, const uint8_t* payload, uint32_t payload_s,
1928 libnet_t *l, libnet_ptag_t ptag);
1929 
1946 LIBNET_API
1947 libnet_ptag_t
1948 libnet_build_bgp4_update(uint16_t unfeasible_rt_len, const uint8_t *withdrawn_rt,
1949 uint16_t total_path_attr_len, const uint8_t *path_attributes, uint16_t info_len,
1950 uint8_t *reachability_info, const uint8_t* payload, uint32_t payload_s,
1951 libnet_t *l, libnet_ptag_t ptag);
1952 
1966 LIBNET_API
1967 libnet_ptag_t
1968 libnet_build_bgp4_notification(uint8_t err_code, uint8_t err_subcode,
1969 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1970 
1993 LIBNET_API
1994 libnet_ptag_t
1995 libnet_build_sebek(uint32_t magic, uint16_t version, uint16_t type,
1996 uint32_t counter, uint32_t time_sec, uint32_t time_usec, uint32_t pid,
1997 uint32_t uid, uint32_t fd, uint8_t cmd[SEBEK_CMD_LENGTH], uint32_t length,
1998 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1999 
2020 LIBNET_API
2021 libnet_ptag_t
2022 libnet_build_hsrp(uint8_t version, uint8_t opcode, uint8_t state,
2023 uint8_t hello_time, uint8_t hold_time, uint8_t priority, uint8_t group,
2024 uint8_t reserved, uint8_t authdata[HSRP_AUTHDATA_LENGTH], uint32_t virtual_ip,
2025 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
2026 
2042 LIBNET_API
2043 libnet_ptag_t
2044 libnet_build_link(const uint8_t *dst, const uint8_t *src, const uint8_t *oui, uint16_t type,
2045 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
2046 
2058 LIBNET_API
2059 libnet_ptag_t
2060 libnet_autobuild_link(const uint8_t *dst, const uint8_t *oui, uint16_t type,
2061 libnet_t *l);
2062 
2076 LIBNET_API
2077 int
2079 
2089 LIBNET_API
2090 uint32_t
2092 
2102 LIBNET_API
2103 struct libnet_in6_addr
2105 
2114 LIBNET_API
2115 struct libnet_ether_addr *
2117 
2127 LIBNET_API
2128 uint8_t *
2129 libnet_hex_aton(const char *s, int *len);
2130 
2135 LIBNET_API
2136 const char *
2137 libnet_version(void);
2138 
2155 LIBNET_API
2156 int
2157 libnet_adv_cull_packet(libnet_t *l, uint8_t **packet, uint32_t *packet_s);
2158 
2172 LIBNET_API
2173 int
2174 libnet_adv_cull_header(libnet_t *l, libnet_ptag_t ptag, uint8_t **header,
2175 uint32_t *header_s);
2176 
2191 LIBNET_API
2192 int
2193 libnet_adv_write_link(libnet_t *l, const uint8_t *packet, uint32_t packet_s);
2194 
2209 LIBNET_API
2210 int
2211 libnet_adv_write_raw_ipv4(libnet_t *l, const uint8_t *packet, uint32_t packet_s);
2212 
2219 LIBNET_API
2220 void
2221 libnet_adv_free_packet(libnet_t *l, uint8_t *packet);
2222 
2237 int
2238 libnet_cq_add(libnet_t *l, char *label);
2239 
2255 LIBNET_API
2256 libnet_t *
2258 
2271 LIBNET_API
2272 libnet_t *
2273 libnet_cq_remove_by_label(char *label);
2274 
2281 LIBNET_API
2282 const char *
2284 
2292 LIBNET_API
2293 libnet_t *
2294 libnet_cq_find_by_label(char *label);
2295 
2301 LIBNET_API
2302 void
2303 libnet_cq_destroy(void);
2304 
2324 LIBNET_API
2325 libnet_t *
2326 libnet_cq_head(void);
2327 
2334 LIBNET_API
2335 int
2336 libnet_cq_last(void);
2337 
2343 LIBNET_API
2344 libnet_t *
2345 libnet_cq_next(void);
2346 
2352 LIBNET_API
2353 uint32_t
2354 libnet_cq_size(void);
2355 
2359 LIBNET_API
2360 uint32_t
2361 libnet_cq_end_loop(void);
2362 
2368 LIBNET_API
2369 void
2371 
2377 LIBNET_API
2378 void
2380 
2388 LIBNET_API
2389 char *
2390 libnet_diag_dump_pblock_type(uint8_t type);
2391 
2405 void
2406 libnet_diag_dump_hex(const uint8_t *packet, uint32_t len, int swap, FILE *stream);
2407 
2408 /*
2409  * [Internal]
2410  */
2411 LIBNET_API
2412 int
2413 libnet_write_raw_ipv4(libnet_t *l, const uint8_t *packet, uint32_t size);
2414 
2415 /*
2416  * [Internal]
2417  */
2418 LIBNET_API
2419 int
2420 libnet_write_raw_ipv6(libnet_t *l, const uint8_t *packet, uint32_t size);
2421 
2422 /*
2423  * [Internal]
2424  */
2425 LIBNET_API
2426 int
2427 libnet_write_link(libnet_t *l, const uint8_t *packet, uint32_t size);
2428 
2429 /*
2430  * [Internal]
2431  */
2432 int
2433 libnet_open_raw4(libnet_t *l);
2434 
2435 /*
2436  * [Internal]
2437  */
2438 LIBNET_API
2439 int
2440 libnet_close_raw4(libnet_t *l);
2441 
2442 /*
2443  * [Internal]
2444  */
2445 int
2446 libnet_open_raw6(libnet_t *l);
2447 
2448 /*
2449  * [Internal]
2450  */
2451 int
2452 libnet_close_raw6(libnet_t *l);
2453 
2454 /*
2455  * [Internal]
2456  */
2457 int
2458 libnet_select_device(libnet_t *l);
2459 
2460 /*
2461  * [Internal]
2462  */
2463 int
2464 libnet_open_link(libnet_t *l);
2465 
2466 /*
2467  * [Internal]
2468  */
2469 int
2470 libnet_close_link(libnet_t *l);
2471 
2472 /*
2473  * [Internal]
2474  * THIS FUNCTION IS BROKEN. IT WILL SEGFAULT OR CORRUPT MEMORY, OR JUST SILENTLY DO THE
2475  * WRONG THING IF NOT CALLED CORRECTLY, AND CALLING IT CORRECTLY IS UNDOCUMENTED, AND
2476  * ALMOST IMPOSSIBLE. YOU HAVE BEEN WARNED.
2477  */
2478 int
2479 libnet_do_checksum(libnet_t *l, uint8_t *iphdr, int protocol, int h_len);
2480 
2481 /* Calculate internet checksums.
2482  *
2483  * IP (TCP, UDP, IGMP, ICMP, etc...) checksums usually need information from
2484  * the IP header to construct the "pseudo header", this function takes a
2485  * pointer to that header, the buffer boundaries, the "h_len" (see pblock_t for
2486  * a description, it is increasingly unused, though, and I'm trying to remove it
2487  * altogether), and the protocol number for the protocol that is to be
2488  * checksummed.
2489  *
2490  * Finding that protocol requires that the IP header be well-formed... so this
2491  * won't work well for invalid packets. But then, what is the valid checksum
2492  * for a invalid packet, anyhow?
2493  *
2494  * This doesn't work well for non-inet checksums, sorry, that's an original design
2495  * flaw. pblock_t needs a pointer in it, to a packet assembly function that can be
2496  * called at runtime to do assembly and checksumming.
2497  */
2498 LIBNET_API
2499 int
2500 libnet_inet_checksum(libnet_t *l, uint8_t *iphdr, int protocol, int h_len, const uint8_t *beg, const uint8_t * end);
2501 
2502 /*
2503  * [Internal]
2504  */
2505 LIBNET_API
2506 uint32_t
2507 libnet_compute_crc(uint8_t *buf, uint32_t len);
2508 
2509 /*
2510  * [Internal]
2511  */
2512 LIBNET_API
2513 uint16_t
2514 libnet_ip_check(uint16_t *addr, int len);
2515 
2516 /*
2517  * [Internal]
2518  */
2519 LIBNET_API
2520 int
2521 libnet_in_cksum(uint16_t *addr, int len);
2522 
2523 /*
2524  * [Internal]
2525  * If ptag is 0, function will create a pblock for the protocol unit type,
2526  * append it to the list and return a pointer to it. If ptag is not 0,
2527  * function will search the pblock list for the specified protocol block
2528  * and return a pointer to it.
2529  */
2530 LIBNET_API
2532 libnet_pblock_probe(libnet_t *l, libnet_ptag_t ptag, uint32_t b_len,
2533 uint8_t type);
2534 
2535 /*
2536  * [Internal]
2537  * Function creates the pblock list if l->protocol_blocks == NULL or appends
2538  * an entry to the doubly linked list.
2539  */
2540 LIBNET_API
2542 libnet_pblock_new(libnet_t *l, uint32_t b_len);
2543 
2544 /*
2545  * [Internal]
2546  * Function swaps two pblocks in memory.
2547  */
2548 LIBNET_API
2549 int
2550 libnet_pblock_swap(libnet_t *l, libnet_ptag_t ptag1, libnet_ptag_t ptag2);
2551 
2552 /*
2553  * [Internal]
2554  * Function inserts ptag2 before ptag1 in the doubly linked list.
2555  */
2556 LIBNET_API
2557 int
2558 libnet_pblock_insert_before(libnet_t *l, libnet_ptag_t ptag1,
2559 libnet_ptag_t ptag2);
2560 
2561 /*
2562  * [Internal]
2563  * Function removes a pblock from context
2564  */
2565 LIBNET_API
2566 void
2567 libnet_pblock_delete(libnet_t *l, libnet_pblock_t *p);
2568 
2569 /*
2570  * [Internal]
2571  * Function updates the pblock meta-information. Internally it updates the
2572  * ptag with a monotonically increasing variable kept in l. This way each
2573  * pblock has a successively increasing ptag identifier.
2574  */
2575 LIBNET_API
2576 libnet_ptag_t
2577 libnet_pblock_update(libnet_t *l, libnet_pblock_t *p, uint32_t h, uint8_t type);
2578 
2579 
2580 /*
2581  * [Internal]
2582  * Function locates a given block by it's ptag.
2583  */
2584 LIBNET_API
2586 libnet_pblock_find(libnet_t *l, libnet_ptag_t ptag);
2587 
2588 /*
2589  * [Internal]
2590  * Function copies protocol block data over.
2591  */
2592 LIBNET_API
2593 int
2594 libnet_pblock_append(libnet_t *l, libnet_pblock_t *p, const void *buf, uint32_t len);
2595 
2596 /*
2597  * [Internal]
2598  * Function sets pblock flags.
2599  */
2600 LIBNET_API
2601 void
2602 libnet_pblock_setflags(libnet_pblock_t *p, uint8_t flags);
2603 
2604 /*
2605  * [Internal]
2606  * Function returns the protocol number for the protocol block type. If
2607  * the type is unknown, the function defaults to returning IPPROTO_IP.
2608  */
2609 LIBNET_API
2610 int
2611 libnet_pblock_p2p(uint8_t type);
2612 
2613 /*
2614  * [Internal]
2615  * Function assembles the protocol blocks into a packet, checksums are
2616  * calculated if that was requested.
2617  */
2618 LIBNET_API
2619 int
2620 libnet_pblock_coalesce(libnet_t *l, uint8_t **packet, uint32_t *size);
2621 
2622 #if !(__WIN32__)
2623 /*
2624  * [Internal]
2625  * By testing if we can retrieve the FLAGS of an interface
2626  * we can know if it exists or not and if it is up.
2627  */
2628 int
2629 libnet_check_iface(libnet_t *l);
2630 #endif
2631 
2632 #if defined(__WIN32__)
2633 /*
2634  * [Internal]
2635  */
2636 BYTE *
2637 libnet_win32_get_remote_mac(libnet_t *l, DWORD IP);
2638 
2639 /*
2640  * [Internal]
2641  */
2642 int
2643 libnet_close_link_interface(libnet_t *l);
2644 
2645 /*
2646  * [Internal]
2647  */
2648 BYTE *
2649 libnet_win32_read_arp_table(DWORD IP);
2650 #endif
2651 #endif /* __LIBNET_FUNCTIONS_H */
2652 
LIBNET_API int libnet_write(libnet_t *l)
Writes a prebuilt packet to the network.
Definition: libnet_write.c:36
LIBNET_API libnet_ptag_t libnet_build_802_1q(const uint8_t *dst, const uint8_t *src, uint16_t tpi, uint8_t priority, uint8_t cfi, uint16_t vlan_id, uint16_t len_proto, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IEEE 802.1q VLAN tagging header.
Definition: libnet_build_802.1q.c:36
LIBNET_API libnet_ptag_t libnet_build_ospfv2_dbd(uint16_t dgram_len, uint8_t opts, uint8_t type, uint32_t seqnum, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Definition: libnet_build_ospf.c:163
LIBNET_API libnet_ptag_t libnet_build_igmp(uint8_t type, uint8_t reserved, uint16_t sum, uint32_t ip, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an RFC 1112 Internet Group Membership Protocol (IGMP) header.
Definition: libnet_build_igmp.c:36
LIBNET_API libnet_ptag_t libnet_build_bgp4_notification(uint8_t err_code, uint8_t err_subcode, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an RFC 1771 Border Gateway Protocol 4 (BGP-4) notification header.
Definition: libnet_build_bgp.c:241
LIBNET_API libnet_ptag_t libnet_build_bgp4_update(uint16_t unfeasible_rt_len, const uint8_t *withdrawn_rt, uint16_t total_path_attr_len, const uint8_t *path_attributes, uint16_t info_len, uint8_t *reachability_info, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an RFC 1771 Border Gateway Protocol 4 (BGP-4) update header.
Definition: libnet_build_bgp.c:155
LIBNET_API libnet_ptag_t libnet_build_ospfv2_lsu(uint32_t num, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Definition: libnet_build_ospf.c:261
LIBNET_API libnet_ptag_t libnet_autobuild_ethernet(const uint8_t *dst, uint16_t type, libnet_t *l)
Autobuilds an Ethernet header.
Definition: libnet_build_ethernet.c:94
LIBNET_API uint32_t libnet_getgre_length(uint16_t fv)
Definition: libnet_build_gre.c:135
libnet_ptag_t libnet_build_ospfv2_hello_neighbor(uint32_t netmask, uint16_t interval, uint8_t opts, uint8_t priority, uint32_t dead_int, uint32_t des_rtr, uint32_t bkup_rtr, uint32_t neighbor, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Definition: libnet_build_ospf.c:110
LIBNET_API struct libnet_ether_addr * libnet_get_hwaddr(libnet_t *l)
Returns the MAC address for the device libnet was initialized with.
Definition: libnet_link_bpf.c:257
LIBNET_API libnet_ptag_t libnet_build_ipv4_options(const uint8_t *options, uint32_t options_s, libnet_t *l, libnet_ptag_t ptag)
Builds an version 4 Internet Protocol (IP) options header.
Definition: libnet_build_ip.c:321
LIBNET_API libnet_ptag_t libnet_build_stp_tcn(uint16_t id, uint8_t version, uint8_t bpdu_type, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IEEE 802.1d Spanning Tree Protocol (STP) topology change notification header.
Definition: libnet_build_stp.c:142
LIBNET_API int libnet_getfd(libnet_t *l)
Returns the FILENO of the file descriptor used for packet injection.
Definition: libnet_init.c:165
LIBNET_API void libnet_stats(libnet_t *l, struct libnet_stats *ls)
Fills in a libnet_stats structure with packet injection statistics (packets written, bytes written, packet sending errors).
Definition: libnet_init.c:152
LIBNET_API libnet_t * libnet_cq_next(void)
[Context Queue] Get next context from the context queue.
Definition: libnet_cq.c:375
LIBNET_API libnet_ptag_t libnet_build_802_1x(uint8_t eap_ver, uint8_t eap_type, uint16_t length, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IEEE 802.1x extended authentication protocol header.
Definition: libnet_build_802.1x.c:36
LIBNET_API libnet_t * libnet_cq_find_by_label(char *label)
[Context Queue] Locates a libnet context from the queue, indexed by a canonical label.
Definition: libnet_cq.c:313
LIBNET_API int libnet_in6_is_error(struct libnet_in6_addr addr)
Check a libnet_in6_addr structure for identity with in6addr_error.
Definition: libnet_resolve.c:232
LIBNET_API libnet_ptag_t libnet_build_ipv6_destopts(uint8_t nh, uint8_t len, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds a version 6 RFC 2460 Internet Protocol (IP) destination options header.
Definition: libnet_build_ip.c:609
LIBNET_API struct libnet_in6_addr libnet_get_ipaddr6(libnet_t *l)
Returns the IPv6 address for the device libnet was initialized with.
Definition: libnet_resolve.c:349
LIBNET_API libnet_ptag_t libnet_build_ethernet(const uint8_t *dst, const uint8_t *src, uint16_t type, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an Ethernet header.
Definition: libnet_build_ethernet.c:36
LIBNET_API int libnet_plist_chain_dump(libnet_plist_t *plist)
Runs through the port list and prints the contents of the port list chain list to stdout...
Definition: libnet_port_list.c:215
LIBNET_API libnet_ptag_t libnet_autobuild_link(const uint8_t *dst, const uint8_t *oui, uint16_t type, libnet_t *l)
Automatically builds a link layer header for an initialized l.
Definition: libnet_build_link.c:60
Definition: libnet-headers.h:746
LIBNET_API libnet_ptag_t libnet_build_stp_conf(uint16_t id, uint8_t version, uint8_t bpdu_type, uint8_t flags, const uint8_t *root_id, uint32_t root_pc, const uint8_t *bridge_id, uint16_t port_id, uint16_t message_age, uint16_t max_age, uint16_t hello_time, uint16_t f_delay, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IEEE 802.1d Spanning Tree Protocol (STP) configuration header.
Definition: libnet_build_stp.c:36
LIBNET_API void libnet_diag_dump_pblock(libnet_t *l)
[Diagnostic] Prints the contents of every pblock.
Definition: libnet_internal.c:121
LIBNET_API libnet_ptag_t libnet_build_fddi(uint8_t fc, const uint8_t *dst, const uint8_t *src, uint8_t dsap, uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds a Fiber Distributed Data Interface (FDDI) header.
Definition: libnet_build_fddi.c:35
Definition: libnet-structures.h:178
LIBNET_API libnet_ptag_t libnet_autobuild_arp(uint16_t op, const uint8_t *sha, const uint8_t *spa, const uint8_t *tha, const uint8_t *tpa, libnet_t *l)
Autouilds an Address Resolution Protocol (ARP) header.
Definition: libnet_build_arp.c:111
LIBNET_API libnet_ptag_t libnet_build_ipv4(uint16_t ip_len, uint8_t tos, uint16_t id, uint16_t frag, uint8_t ttl, uint8_t prot, uint16_t sum, uint32_t src, uint32_t dst, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds a version 4 RFC 791 Internet Protocol (IP) header.
Definition: libnet_build_ip.c:37
LIBNET_API libnet_ptag_t libnet_build_802_2snap(uint8_t dsap, uint8_t ssap, uint8_t control, uint8_t *oui, uint16_t type, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IEEE 802.2 LLC SNAP header.
Definition: libnet_build_802.2.c:83
LIBNET_API int libnet_plist_chain_new(libnet_t *l, libnet_plist_t **plist, char *token_list)
Creates a new port list.
Definition: libnet_port_list.c:38
LIBNET_API libnet_ptag_t libnet_build_ipv6_routing(uint8_t nh, uint8_t len, uint8_t rtype, uint8_t segments, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds a version 6 RFC 2460 Internet Protocol (IP) routing header.
Definition: libnet_build_ip.c:540
LIBNET_API libnet_ptag_t libnet_build_ospfv2(uint16_t len, uint8_t type, uint32_t rtr_id, uint32_t area_id, uint16_t sum, uint16_t autype, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Definition: libnet_build_ospf.c:39
LIBNET_API libnet_ptag_t libnet_build_ipsec_esp_ftr(uint8_t len, uint8_t nh, int8_t *auth, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an Internet Protocol Security Encapsulating Security Payload footer.
Definition: libnet_build_ipsec.c:85
LIBNET_API libnet_ptag_t libnet_build_tcp_options(const uint8_t *options, uint32_t options_s, libnet_t *l, libnet_ptag_t ptag)
Builds an RFC 793 Transmission Control Protocol (TCP) options header.
Definition: libnet_build_tcp.c:181
LIBNET_API libnet_ptag_t libnet_build_cdp(uint8_t version, uint8_t ttl, uint16_t sum, uint16_t type, uint16_t value_s, const uint8_t *value, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds a Cisco Discovery Protocol (CDP) header.
Definition: libnet_build_cdp.c:36
LIBNET_API libnet_ptag_t libnet_autobuild_ipv6(uint16_t len, uint8_t nh, struct libnet_in6_addr dst, libnet_t *l, libnet_ptag_t ptag)
Autobuilds a version 6 RFC 2460 Internet Protocol (IP) header.
Definition: libnet_build_ip.c:741
LIBNET_API libnet_ptag_t libnet_build_ospfv2_hello(uint32_t netmask, uint16_t interval, uint8_t opts, uint8_t priority, uint32_t dead_int, uint32_t des_rtr, uint32_t bkup_rtr, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Definition: libnet_build_ospf.c:100
LIBNET_API libnet_ptag_t libnet_build_vrrp(uint8_t version, uint8_t type, uint8_t vrouter_id, uint8_t priority, uint8_t ip_count, uint8_t auth_type, uint8_t advert_int, uint16_t sum, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an RFC 2338 Virtual Router Redundacy Protool (VRRP) header.
Definition: libnet_build_vrrp.c:36
LIBNET_API libnet_t * libnet_cq_remove_by_label(char *label)
[Context Queue] Removes a specified context from the libnet context queue by specifying the canonical...
Definition: libnet_cq.c:214
LIBNET_API libnet_ptag_t libnet_build_hsrp(uint8_t version, uint8_t opcode, uint8_t state, uint8_t hello_time, uint8_t hold_time, uint8_t priority, uint8_t group, uint8_t reserved, uint8_t authdata[HSRP_AUTHDATA_LENGTH], uint32_t virtual_ip, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds a HSRP header.
Definition: libnet_build_hsrp.c:35
LIBNET_API int libnet_seed_prand(libnet_t *l)
Seeds the pseudo-random number generator.
Definition: libnet_prand.c:43
LIBNET_API int libnet_adv_cull_header(libnet_t *l, libnet_ptag_t ptag, uint8_t **header, uint32_t *header_s)
[Advanced Interface] Pulls the header from the specified ptag from the given libnet context...
Definition: libnet_advanced.c:53
LIBNET_API libnet_ptag_t libnet_build_egre(uint16_t fv, uint16_t type, uint16_t sum, uint16_t offset, uint32_t key, uint32_t seq, uint16_t len, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Generic Routing Encapsulation (GRE - RFC 1701) is used to encapsulate any protocol.
Definition: libnet_build_gre.c:265
LIBNET_API libnet_ptag_t libnet_build_ipv6(uint8_t tc, uint32_t fl, uint16_t len, uint8_t nh, uint8_t hl, struct libnet_in6_addr src, struct libnet_in6_addr dst, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds a version 6 RFC 2460 Internet Protocol (IP) header.
Definition: libnet_build_ip.c:410
LIBNET_API int libnet_plist_chain_free(libnet_plist_t *plist)
Frees all memory associated with port list chain.
Definition: libnet_port_list.c:268
LIBNET_API libnet_ptag_t libnet_build_tcp(uint16_t sp, uint16_t dp, uint32_t seq, uint32_t ack, uint8_t control, uint16_t win, uint16_t sum, uint16_t urg, uint16_t len, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an RFC 793 Transmission Control Protocol (TCP) header.
Definition: libnet_build_tcp.c:36
LIBNET_API libnet_ptag_t libnet_autobuild_fddi(uint8_t fc, const uint8_t *dst, uint8_t dsap, uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type, libnet_t *l)
Autobuilds a Fiber Distributed Data Interface (FDDI) header.
Definition: libnet_build_fddi.c:103
LIBNET_API libnet_ptag_t libnet_build_bgp4_header(uint8_t marker[LIBNET_BGP4_MARKER_SIZE], uint16_t len, uint8_t type, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an RFC 1771 Border Gateway Protocol 4 (BGP-4) header.
Definition: libnet_build_bgp.c:36
LIBNET_API libnet_ptag_t libnet_build_icmpv4_timestamp(uint8_t type, uint8_t code, uint16_t sum, uint16_t id, uint16_t seq, uint32_t otime, uint32_t rtime, uint32_t ttime, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IP version 4 RFC 792 Internet Control Message Protocol (ICMP) timestamp request/reply heade...
Definition: libnet_build_icmp.c:189
LIBNET_API libnet_ptag_t libnet_build_arp(uint16_t hrd, uint16_t pro, uint8_t hln, uint8_t pln, uint16_t op, const uint8_t *sha, const uint8_t *spa, const uint8_t *tha, const uint8_t *tpa, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an Address Resolution Protocol (ARP) header.
Definition: libnet_build_arp.c:37
LIBNET_API uint32_t libnet_name2addr4(libnet_t *l, const char *host_name, uint8_t use_name)
Takes a dotted decimal string or a canonical DNS name and returns a network byte ordered IPv4 address...
Definition: libnet_resolve.c:113
LIBNET_API libnet_ptag_t libnet_build_ospfv2_lsa(uint16_t age, uint8_t opts, uint8_t type, uint32_t lsid, uint32_t advrtr, uint32_t seqnum, uint16_t sum, uint16_t len, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Definition: libnet_build_ospf.c:307
LIBNET_API void libnet_cq_destroy(void)
[Context Queue] Destroys the entire context queue, calling libnet_destroy() on each member context...
Definition: libnet_cq.c:328
LIBNET_API libnet_ptag_t libnet_build_ipsec_ah(uint8_t nh, uint8_t len, uint16_t res, uint32_t spi, uint32_t seq, uint32_t auth, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an Internet Protocol Security Authentication header.
Definition: libnet_build_ipsec.c:135
LIBNET_API libnet_ptag_t libnet_build_gre(uint16_t fv, uint16_t type, uint16_t sum, uint16_t offset, uint32_t key, uint32_t seq, uint16_t len, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Generic Routing Encapsulation (GRE - RFC 1701) is used to encapsulate any protocol.
Definition: libnet_build_gre.c:168
LIBNET_API uint32_t libnet_cq_size(void)
[Context Queue] Function returns the number of libnet contexts that are in the queue.
Definition: libnet_cq.c:387
LIBNET_API libnet_ptag_t libnet_build_ospfv2_lsa_sum(uint32_t nmask, uint32_t metric, uint32_t tos, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Definition: libnet_build_ospf.c:472
LIBNET_API libnet_ptag_t libnet_build_icmpv4_mask(uint8_t type, uint8_t code, uint16_t sum, uint16_t id, uint16_t seq, uint32_t mask, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IP version 4 RFC 792 Internet Control Message Protocol (ICMP) IP netmask request/reply head...
Definition: libnet_build_icmp.c:129
Definition: getopt.h:63
LIBNET_API int libnet_toggle_checksum(libnet_t *l, libnet_ptag_t ptag, int mode)
If a given protocol header is built with the checksum field set to "0", by default libnet will calcul...
Definition: libnet_checksum.c:65
LIBNET_API uint32_t libnet_get_ipaddr4(libnet_t *l)
Returns the IP address for the device libnet was initialized with.
Definition: libnet_resolve.c:359
LIBNET_API libnet_ptag_t libnet_build_ospfv2_lsa_as(uint32_t nmask, uint32_t metric, uint32_t fwdaddr, uint32_t tag, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Definition: libnet_build_ospf.c:521
LIBNET_API libnet_ptag_t libnet_build_ipsec_esp_hdr(uint32_t spi, uint32_t seq, uint32_t iv, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an Internet Protocol Security Encapsulating Security Payload header.
Definition: libnet_build_ipsec.c:37
LIBNET_API void libnet_addr2name6_r(struct libnet_in6_addr addr, uint8_t use_name, char *host_name, int host_name_len)
Should document this baby right here.
Definition: libnet_resolve.c:196
Definition: libnet-structures.h:69
LIBNET_API libnet_ptag_t libnet_autobuild_ipv4(uint16_t len, uint8_t prot, uint32_t dst, libnet_t *l)
Autobuilds a version 4 Internet Protocol (IP) header.
Definition: libnet_build_ip.c:241
LIBNET_API uint32_t libnet_getpacket_size(libnet_t *l)
Returns the sum of the size of all of the pblocks inside of l (this should be the resulting packet si...
Definition: libnet_init.c:231
LIBNET_API libnet_ptag_t libnet_build_udp(uint16_t sp, uint16_t dp, uint16_t len, uint16_t sum, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an RFC 768 User Datagram Protocol (UDP) header.
Definition: libnet_build_udp.c:36
LIBNET_API libnet_ptag_t libnet_build_icmpv6_ndp_nsol(uint8_t type, uint8_t code, uint16_t sum, struct libnet_in6_addr target, uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IP version 6 RFC 2461 Internet Control Message Protocol (ICMP) NDP neighbour solicitation h...
Definition: libnet_build_icmp.c:504
int libnet_cq_add(libnet_t *l, char *label)
[Context Queue] Adds a new context to the libnet context queue.
Definition: libnet_cq.c:71
LIBNET_API char * libnet_diag_dump_pblock_type(uint8_t type)
[Diagnostic] Returns the canonical name of the pblock type.
Definition: libnet_internal.c:166
LIBNET_API libnet_ptag_t libnet_build_icmpv6_unreach(uint8_t type, uint8_t code, uint16_t sum, uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IP version 6 RFC 4443 Internet Control Message Protocol (ICMP) unreachable header...
Definition: libnet_build_icmp.c:465
Definition: libnet-structures.h:50
LIBNET_API void libnet_clear_packet(libnet_t *l)
Clears the current packet referenced and frees all pblocks.
Definition: libnet_init.c:133
LIBNET_API libnet_ptag_t libnet_build_802_3(const uint8_t *dst, const uint8_t *src, uint16_t len, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IEEE 802.3 header.
Definition: libnet_build_802.3.c:36
LIBNET_API char * libnet_geterror(libnet_t *l)
Returns the last error set inside of the referenced libnet context.
Definition: libnet_error.c:36
LIBNET_API libnet_ptag_t libnet_build_icmpv6_ndp_nadv(uint8_t type, uint8_t code, uint16_t sum, uint32_t flags, struct libnet_in6_addr target, uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IP version 6 RFC 2461 Internet Control Message Protocol (ICMP) NDP neighbour advertisement ...
Definition: libnet_build_icmp.c:524
LIBNET_API int libnet_adv_cull_packet(libnet_t *l, uint8_t **packet, uint32_t *packet_s)
[Advanced Interface] Yanks a prebuilt, wire-ready packet from the given libnet context.
Definition: libnet_advanced.c:36
LIBNET_API void libnet_destroy(libnet_t *l)
Shuts down the libnet session referenced by l.
Definition: libnet_init.c:120
LIBNET_API libnet_ptag_t libnet_build_dnsv4(uint16_t h_len, uint16_t id, uint16_t flags, uint16_t num_q, uint16_t num_anws_rr, uint16_t num_auth_rr, uint16_t num_addi_rr, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an RFC 1035 version 4 DNS header.
Definition: libnet_build_dns.c:37
LIBNET_API libnet_t * libnet_cq_remove(libnet_t *l)
[Context Queue] Removes a specified context from the libnet context queue by specifying the libnet co...
Definition: libnet_cq.c:158
LIBNET_API const char * libnet_cq_getlabel(libnet_t *l)
[Context Queue] Returns the canonical label associated with the context.
Definition: libnet_cq.c:322
LIBNET_API libnet_t * libnet_cq_head(void)
[Context Queue] Intiailizes the interator interface and set a write lock on the entire queue...
Definition: libnet_cq.c:345
LIBNET_API libnet_ptag_t libnet_build_ospfv2_lsa_rtr(uint16_t flags, uint16_t num, uint32_t id, uint32_t data, uint8_t type, uint8_t tos, uint16_t metric, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Definition: libnet_build_ospf.c:370
LIBNET_API libnet_ptag_t libnet_build_rip(uint8_t cmd, uint8_t version, uint16_t rd, uint16_t af, uint16_t rt, uint32_t addr, uint32_t mask, uint32_t next_hop, uint32_t metric, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds a Routing Information Protocol header (RFCs 1058 and 2453).
Definition: libnet_build_rip.c:36
LIBNET_API void libnet_adv_free_packet(libnet_t *l, uint8_t *packet)
[Advanced Interface] Frees the memory allocated when libnet_adv_cull_packet() is called.
Definition: libnet_advanced.c:150
LIBNET_API uint8_t * libnet_getpbuf(libnet_t *l, libnet_ptag_t ptag)
Returns the pblock buffer contents for the specified ptag; a subsequent call to libnet_getpbuf_size()...
Definition: libnet_init.c:187
LIBNET_API libnet_ptag_t libnet_build_isl(uint8_t *dhost, uint8_t type, uint8_t user, uint8_t *shost, uint16_t len, const uint8_t *snap, uint16_t vid, uint16_t portindex, uint16_t reserved, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds a Cisco Inter-Switch Link (ISL) header.
Definition: libnet_build_isl.c:36
LIBNET_API libnet_ptag_t libnet_autobuild_token_ring(uint8_t ac, uint8_t fc, const uint8_t *dst, uint8_t dsap, uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type, libnet_t *l)
Auto-builds a token ring header.
Definition: libnet_build_token_ring.c:102
LIBNET_API libnet_ptag_t libnet_build_data(const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds a generic libnet protocol header.
Definition: libnet_build_data.c:37
LIBNET_API libnet_ptag_t libnet_build_token_ring(uint8_t ac, uint8_t fc, const uint8_t *dst, const uint8_t *src, uint8_t dsap, uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds a token ring header.
Definition: libnet_build_token_ring.c:35
LIBNET_API libnet_ptag_t libnet_build_ipv6_hbhopts(uint8_t nh, uint8_t len, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds a version 6 RFC 2460 Internet Protocol (IP) hop by hop options header.
Definition: libnet_build_ip.c:675
LIBNET_API libnet_ptag_t libnet_build_rpc_call(uint32_t rm, uint32_t xid, uint32_t prog_num, uint32_t prog_vers, uint32_t procedure, uint32_t cflavor, uint32_t clength, uint8_t *cdata, uint32_t vflavor, uint32_t vlength, const uint8_t *vdata, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an Remote Procedure Call (Version 2) Call message header as specified in RFC 1831...
Definition: libnet_build_rpc.c:36
LIBNET_API int libnet_plist_chain_next_pair(libnet_plist_t *plist, uint16_t *bport, uint16_t *eport)
Returns the next port list chain pair from the port list chain plist.
Definition: libnet_port_list.c:184
LIBNET_API libnet_ptag_t libnet_build_icmpv4_echo(uint8_t type, uint8_t code, uint16_t sum, uint16_t id, uint16_t seq, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IP version 4 RFC 792 Internet Control Message Protocol (ICMP) echo request/reply header...
Definition: libnet_build_icmp.c:70
LIBNET_API uint32_t libnet_cq_end_loop(void)
[Context Queue]
Definition: libnet_cq.c:393
LIBNET_API libnet_ptag_t libnet_build_ospfv2_lsr(uint32_t type, uint32_t lsid, uint32_t advrtr, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Definition: libnet_build_ospf.c:213
LIBNET_API int libnet_adv_write_raw_ipv4(libnet_t *l, const uint8_t *packet, uint32_t packet_s)
[Advanced Interface] Writes a packet the network at the raw socket layer.
Definition: libnet_advanced.c:116
LIBNET_API libnet_t * libnet_init(int injection_type, const char *device, char *err_buf)
Creates the libnet environment.
Definition: libnet_init.c:36
LIBNET_API uint8_t * libnet_hex_aton(const char *s, int *len)
Takes a colon separated hexidecimal address (from the command line) and returns a bytestring suitable...
Definition: libnet_resolve.c:426
LIBNET_API uint32_t libnet_getpbuf_size(libnet_t *l, libnet_ptag_t ptag)
Returns the pblock buffer size for the specified ptag; a previous call to libnet_getpbuf() should be ...
Definition: libnet_init.c:209
LIBNET_API libnet_ptag_t libnet_build_bootpv4(uint8_t opcode, uint8_t htype, uint8_t hlen, uint8_t hopcount, uint32_t xid, uint16_t secs, uint16_t flags, uint32_t cip, uint32_t yip, uint32_t sip, uint32_t gip, const uint8_t *chaddr, const char *sname, const char *file, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Definition: libnet_build_dhcp.c:124
LIBNET_API const char * libnet_version(void)
Returns the version of libnet.
Definition: libnet_version.c:38
LIBNET_API libnet_ptag_t libnet_build_link(const uint8_t *dst, const uint8_t *src, const uint8_t *oui, uint16_t type, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds a link layer header for an initialized l.
Definition: libnet_build_link.c:37
LIBNET_API int libnet_cq_last(void)
[Context Queue] Check whether the iterator is at the last context in the queue.
Definition: libnet_cq.c:362
LIBNET_API libnet_ptag_t libnet_build_bgp4_open(uint8_t version, uint16_t src_as, uint16_t hold_time, uint32_t bgp_id, uint8_t opt_len, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an RFC 1771 Border Gateway Protocol 4 (BGP-4) OPEN header.
Definition: libnet_build_bgp.c:84
LIBNET_API libnet_ptag_t libnet_build_icmpv6_ndp_opt(uint8_t type, uint8_t *option, uint32_t option_s, libnet_t *l, libnet_ptag_t ptag)
Builds ICMPv6 NDP options.
Definition: libnet_build_icmp.c:544
void libnet_diag_dump_hex(const uint8_t *packet, uint32_t len, int swap, FILE *stream)
[Diagnostic] Function prints the contents of the supplied buffer to the supplied stream pointer...
Definition: libnet_internal.c:36
LIBNET_API const char * libnet_getdevice(libnet_t *l)
Returns the canonical name of the device used for packet injection.
Definition: libnet_init.c:176
LIBNET_API libnet_ptag_t libnet_build_sebek(uint32_t magic, uint16_t version, uint16_t type, uint32_t counter, uint32_t time_sec, uint32_t time_usec, uint32_t pid, uint32_t uid, uint32_t fd, uint8_t cmd[SEBEK_CMD_LENGTH], uint32_t length, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds a Sebek header.
Definition: libnet_build_sebek.c:35
LIBNET_API libnet_ptag_t libnet_build_ospfv2_lsa_net(uint32_t nmask, uint32_t rtrid, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Definition: libnet_build_ospf.c:424
LIBNET_API void libnet_diag_dump_context(libnet_t *l)
[Diagnostic] Prints the contents of the given context.
Definition: libnet_internal.c:70
LIBNET_API libnet_ptag_t libnet_build_icmpv6_echo(uint8_t type, uint8_t code, uint16_t sum, uint16_t id, uint16_t seq, uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IP version 6 RFC 4443 Internet Control Message Protocol (ICMP) echo or echo reply header...
Definition: libnet_build_icmp.c:483
LIBNET_API int libnet_adv_write_link(libnet_t *l, const uint8_t *packet, uint32_t packet_s)
[Advanced Interface] Writes a packet the network at the link layer.
Definition: libnet_advanced.c:82
Definition: libnet-structures.h:39
LIBNET_API struct libnet_in6_addr libnet_name2addr6(libnet_t *l, const char *host_name, uint8_t use_name)
Takes a dotted decimal string or a canonical DNS name and returns a network byte ordered IPv6 address...
Definition: libnet_resolve.c:238
LIBNET_API libnet_ptag_t libnet_build_icmpv4_redirect(uint8_t type, uint8_t code, uint16_t sum, uint32_t gateway, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IP version 4 RFC 792 Internet Message Control Protocol (ICMP) redirect header.
Definition: libnet_build_icmp.c:346
LIBNET_API libnet_ptag_t libnet_build_gre_sre(uint16_t af, uint8_t offset, uint8_t length, uint8_t *routing, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Definition: libnet_build_gre.c:292
LIBNET_API libnet_ptag_t libnet_build_icmpv4_unreach(uint8_t type, uint8_t code, uint16_t sum, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IP version 4 RFC 792 Internet Control Message Protocol (ICMP) unreachable header...
Definition: libnet_build_icmp.c:251
LIBNET_API libnet_ptag_t libnet_build_dhcpv4(uint8_t opcode, uint8_t htype, uint8_t hlen, uint8_t hopcount, uint32_t xid, uint16_t secs, uint16_t flags, uint32_t cip, uint32_t yip, uint32_t sip, uint32_t gip, const uint8_t *chaddr, const char *sname, const char *file, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Definition: libnet_build_dhcp.c:36
LIBNET_API libnet_ptag_t libnet_build_icmpv4_timeexceed(uint8_t type, uint8_t code, uint16_t sum, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IP version 4 RFC 792 Internet Control Message Protocol (ICMP) time exceeded header...
Definition: libnet_build_icmp.c:298
LIBNET_API libnet_ptag_t libnet_build_802_2(uint8_t dsap, uint8_t ssap, uint8_t control, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an IEEE 802.2 LLC header.
Definition: libnet_build_802.2.c:36
Definition: libnet-headers.h:535
LIBNET_API libnet_ptag_t libnet_build_mpls(uint32_t label, uint8_t experimental, uint8_t bos, uint8_t ttl, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an RFC 3032 Multi-Protocol Label Switching (MPLS) header.
Definition: libnet_build_mpls.c:36
LIBNET_API char * libnet_addr2name4(uint32_t in, uint8_t use_name)
Takes a network byte ordered IPv4 address and returns a pointer to either a canonical DNS name (if it...
Definition: libnet_resolve.c:42
LIBNET_API libnet_ptag_t libnet_build_ntp(uint8_t leap_indicator, uint8_t version, uint8_t mode, uint8_t stratum, uint8_t poll, uint8_t precision, uint16_t delay_int, uint16_t delay_frac, uint16_t dispersion_int, uint16_t dispersion_frac, uint32_t reference_id, uint32_t ref_ts_int, uint32_t ref_ts_frac, uint32_t orig_ts_int, uint32_t orig_ts_frac, uint32_t rec_ts_int, uint32_t rec_ts_frac, uint32_t xmt_ts_int, uint32_t xmt_ts_frac, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an RFC 958 Network Time Protocol (NTP) header.
Definition: libnet_build_ntp.c:36
LIBNET_API libnet_ptag_t libnet_build_gre_last_sre(libnet_t *l, libnet_ptag_t ptag)
Definition: libnet_build_gre.c:356
LIBNET_API char * libnet_plist_chain_dump_string(libnet_plist_t *plist)
Runs through the port list and prints the contents of the port list chain list to string...
Definition: libnet_port_list.c:238
LIBNET_API libnet_ptag_t libnet_build_ipv6_frag(uint8_t nh, uint8_t reserved, uint16_t frag, uint32_t id, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds a version 6 RFC 2460 Internet Protocol (IP) fragmentation header.
Definition: libnet_build_ip.c:474
LIBNET_API uint32_t libnet_get_prand(int mod)
Generates an unsigned pseudo-random value within the range specified by mod.
Definition: libnet_prand.c:78