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 
104 #ifdef SO_SNDBUF
105 
111 LIBNET_API
112 int
113 libnet_setfd_max_sndbuf(libnet_t *l, int max_bytes);
114 #endif /* SO_SNDBUF */
115 
122 LIBNET_API
123 const char *
125 
134 LIBNET_API
135 uint8_t *
136 libnet_getpbuf(libnet_t *l, libnet_ptag_t ptag);
137 
146 LIBNET_API
147 uint32_t
148 libnet_getpbuf_size(libnet_t *l, libnet_ptag_t ptag);
149 
157 LIBNET_API
158 char *
160 
167 LIBNET_API
168 uint32_t
170 
177 LIBNET_API
178 int
180 
195 LIBNET_API
196 uint32_t
197 libnet_get_prand(int mod);
198 
221 LIBNET_API
222 int
223 libnet_toggle_checksum(libnet_t *l, libnet_ptag_t ptag, int mode);
224 
237 LIBNET_API
238 char *
239 libnet_addr2name4(uint32_t in, uint8_t use_name);
240 
255 LIBNET_API
256 uint32_t
257 libnet_name2addr4(libnet_t *l, const char *host_name, uint8_t use_name);
258 
259 extern const struct libnet_in6_addr in6addr_error;
260 
267 LIBNET_API
268 int
270 
284 LIBNET_API
285 struct libnet_in6_addr
286 libnet_name2addr6(libnet_t *l, const char *host_name, uint8_t use_name);
287 
303 LIBNET_API
304 void
305 libnet_addr2name6_r(struct libnet_in6_addr addr, uint8_t use_name,
306  char *host_name, int host_name_len);
307 
324 LIBNET_API
325 int
326 libnet_plist_chain_new(libnet_t *l, libnet_plist_t **plist, char *token_list);
327 
341 LIBNET_API
342 int
343 libnet_plist_chain_next_pair(libnet_plist_t *plist, uint16_t *bport,
344 uint16_t *eport);
345 
353 LIBNET_API
354 int
356 
364 LIBNET_API
365 char *
367 
374 LIBNET_API
375 int
377 
466 LIBNET_API
467 libnet_ptag_t
468 libnet_build_802_1q(const uint8_t *dst, const uint8_t *src, uint16_t tpi,
469 uint8_t priority, uint8_t cfi, uint16_t vlan_id, uint16_t len_proto,
470 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
471 
484 LIBNET_API
485 libnet_ptag_t
486 libnet_build_802_1x(uint8_t eap_ver, uint8_t eap_type, uint16_t length,
487 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
488 
501 LIBNET_API
502 libnet_ptag_t
503 libnet_build_802_2(uint8_t dsap, uint8_t ssap, uint8_t control,
504 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
505 
520 LIBNET_API
521 libnet_ptag_t
522 libnet_build_802_2snap(uint8_t dsap, uint8_t ssap, uint8_t control,
523 uint8_t *oui, uint16_t type, const uint8_t* payload, uint32_t payload_s,
524 libnet_t *l, libnet_ptag_t ptag);
525 
542 LIBNET_API
543 libnet_ptag_t
544 libnet_build_802_3(const uint8_t *dst, const uint8_t *src, uint16_t len,
545 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
546 
563 LIBNET_API
564 libnet_ptag_t
565 libnet_build_ethernet(const uint8_t *dst, const uint8_t *src, uint16_t type,
566 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
567 
580 LIBNET_API
581 libnet_ptag_t
582 libnet_autobuild_ethernet(const uint8_t *dst, uint16_t type, libnet_t *l);
583 
601 LIBNET_API
602 libnet_ptag_t
603 libnet_build_fddi(uint8_t fc, const uint8_t *dst, const uint8_t *src, uint8_t dsap,
604 uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type, const uint8_t* payload,
605 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
606 
620 LIBNET_API
621 libnet_ptag_t
622 libnet_autobuild_fddi(uint8_t fc, const uint8_t *dst, uint8_t dsap, uint8_t ssap,
623 uint8_t cf, const uint8_t *oui, uint16_t type, libnet_t *l);
624 
645 LIBNET_API
646 libnet_ptag_t
647 libnet_build_arp(uint16_t hrd, uint16_t pro, uint8_t hln, uint8_t pln,
648 uint16_t op, const uint8_t *sha, const uint8_t *spa, const uint8_t *tha, const uint8_t *tpa,
649 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
650 
664 LIBNET_API
665 libnet_ptag_t
666 libnet_autobuild_arp(uint16_t op, const uint8_t *sha, const uint8_t *spa, const uint8_t *tha,
667 const uint8_t *tpa, libnet_t *l);
668 
687 LIBNET_API
688 libnet_ptag_t
689 libnet_build_tcp(uint16_t sp, uint16_t dp, uint32_t seq, uint32_t ack,
690 uint8_t control, uint16_t win, uint16_t sum, uint16_t urg, uint16_t len,
691 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
692 
709 LIBNET_API
710 libnet_ptag_t
711 libnet_build_tcp_options(const uint8_t *options, uint32_t options_s, libnet_t *l,
712 libnet_ptag_t ptag);
713 
727 LIBNET_API
728 libnet_ptag_t
729 libnet_build_udp(uint16_t sp, uint16_t dp, uint16_t len, uint16_t sum,
730 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
731 
752 LIBNET_API
753 libnet_ptag_t
754 libnet_build_cdp(uint8_t version, uint8_t ttl, uint16_t sum, uint16_t type,
755 uint16_t value_s, const uint8_t *value, const uint8_t* payload, uint32_t payload_s,
756 libnet_t *l, libnet_ptag_t ptag);
757 
768 LIBNET_API
769 libnet_ptag_t libnet_build_lldp_chassis(const uint8_t subtype,
770 const uint8_t *value, const uint8_t value_s,
771 libnet_t *l, libnet_ptag_t ptag);
772 
783 LIBNET_API
784 libnet_ptag_t libnet_build_lldp_port(const uint8_t subtype,
785 const uint8_t *value, const uint8_t value_s,
786 libnet_t *l, libnet_ptag_t ptag);
787 
796 LIBNET_API
797 libnet_ptag_t libnet_build_lldp_ttl(const uint16_t ttl,
798 libnet_t *l, libnet_ptag_t ptag);
799 
809 LIBNET_API
810 libnet_ptag_t libnet_build_lldp_end(libnet_t *l, libnet_ptag_t ptag);
811 
821 LIBNET_API
822 libnet_ptag_t libnet_build_lldp_org_spec(const uint8_t *value,
823 const uint16_t value_s, libnet_t *l, libnet_ptag_t ptag);
824 
831 //libnet_ptag_t libnet_build_lldp(libnet_t *l, libnet_ptag_t ptag);
832 
848 LIBNET_API
849 libnet_ptag_t
850 libnet_build_icmpv4_echo(uint8_t type, uint8_t code, uint16_t sum,
851 uint16_t id, uint16_t seq, const uint8_t* payload, uint32_t payload_s,
852 libnet_t *l, libnet_ptag_t ptag);
853 
870 LIBNET_API
871 libnet_ptag_t
872 libnet_build_icmpv4_mask(uint8_t type, uint8_t code, uint16_t sum,
873 uint16_t id, uint16_t seq, uint32_t mask, const uint8_t* payload,
874 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
875 
890 LIBNET_API
891 libnet_ptag_t
892 libnet_build_icmpv4_unreach(uint8_t type, uint8_t code, uint16_t sum,
893 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
894 
910 LIBNET_API
911 libnet_ptag_t
912 libnet_build_icmpv4_redirect(uint8_t type, uint8_t code, uint16_t sum,
913 uint32_t gateway, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
914 libnet_ptag_t ptag);
915 
931 LIBNET_API
932 libnet_ptag_t
933 libnet_build_icmpv4_timeexceed(uint8_t type, uint8_t code, uint16_t sum,
934 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
935 
955 LIBNET_API
956 libnet_ptag_t
957 libnet_build_icmpv4_timestamp(uint8_t type, uint8_t code, uint16_t sum,
958 uint16_t id, uint16_t seq, uint32_t otime, uint32_t rtime, uint32_t ttime,
959 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
960 
977 LIBNET_API
978 libnet_ptag_t libnet_build_icmpv6_echo(uint8_t type, uint8_t code, uint16_t
979  sum, uint16_t id, uint16_t seq, uint8_t *payload, uint32_t payload_s,
980  libnet_t *l, libnet_ptag_t ptag);
981 
997 LIBNET_API
998 libnet_ptag_t
999 libnet_build_icmpv6_unreach(uint8_t type, uint8_t code, uint16_t sum,
1000 uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1001 
1017 LIBNET_API
1018 libnet_ptag_t libnet_build_icmpv6_ndp_nsol(uint8_t type, uint8_t code,
1019  uint16_t sum, struct libnet_in6_addr target, uint8_t *payload, uint32_t
1020  payload_s, libnet_t* l, libnet_ptag_t ptag);
1021 
1038 LIBNET_API
1039 libnet_ptag_t libnet_build_icmpv6_ndp_nadv(uint8_t type, uint8_t code,
1040  uint16_t sum, uint32_t flags, struct libnet_in6_addr target, uint8_t
1041  *payload, uint32_t payload_s, libnet_t* l, libnet_ptag_t ptag);
1042 
1053 LIBNET_API
1054 libnet_ptag_t libnet_build_icmpv6_ndp_opt(uint8_t type, uint8_t* option,
1055  uint32_t option_s, libnet_t* l, libnet_ptag_t ptag);
1056 
1072 LIBNET_API
1073 libnet_ptag_t
1074 libnet_build_igmp(uint8_t type, uint8_t reserved, uint16_t sum, uint32_t ip,
1075 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1076 
1097 LIBNET_API
1098 libnet_ptag_t
1099 libnet_build_ipv4(uint16_t ip_len, uint8_t tos, uint16_t id, uint16_t frag,
1100 uint8_t ttl, uint8_t prot, uint16_t sum, uint32_t src, uint32_t dst,
1101 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1102 
1122 LIBNET_API
1123 libnet_ptag_t
1124 libnet_build_ipv4_options(const uint8_t *options, uint32_t options_s, libnet_t *l,
1125 libnet_ptag_t ptag);
1126 
1141 LIBNET_API
1142 libnet_ptag_t
1143 libnet_autobuild_ipv4(uint16_t len, uint8_t prot, uint32_t dst, libnet_t *l);
1144 
1161 LIBNET_API
1162 libnet_ptag_t
1163 libnet_build_ipv6(uint8_t tc, uint32_t fl, uint16_t len, uint8_t nh,
1164 uint8_t hl, struct libnet_in6_addr src, struct libnet_in6_addr dst,
1165 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1166 
1180 LIBNET_API
1181 libnet_ptag_t
1182 libnet_build_ipv6_frag(uint8_t nh, uint8_t reserved, uint16_t frag,
1183 uint32_t id, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1184 libnet_ptag_t ptag);
1185 
1204 LIBNET_API
1205 libnet_ptag_t
1206 libnet_build_ipv6_routing(uint8_t nh, uint8_t len, uint8_t rtype,
1207 uint8_t segments, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1208 libnet_ptag_t ptag);
1209 
1224 LIBNET_API
1225 libnet_ptag_t
1226 libnet_build_ipv6_destopts(uint8_t nh, uint8_t len, const uint8_t* payload,
1227 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1228 
1244 LIBNET_API
1245 libnet_ptag_t
1246 libnet_build_ipv6_hbhopts(uint8_t nh, uint8_t len, 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_autobuild_ipv6(uint16_t len, uint8_t nh, struct libnet_in6_addr dst,
1269 libnet_t *l, libnet_ptag_t ptag);
1270 
1289 LIBNET_API
1290 libnet_ptag_t
1291 libnet_build_isl(uint8_t *dhost, uint8_t type, uint8_t user,
1292 uint8_t *shost, uint16_t len, const uint8_t *snap, uint16_t vid,
1293 uint16_t portindex, uint16_t reserved, const uint8_t* payload,
1294 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1295 
1308 LIBNET_API
1309 libnet_ptag_t
1310 libnet_build_ipsec_esp_hdr(uint32_t spi, uint32_t seq, uint32_t iv,
1311 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1312 
1325 LIBNET_API
1326 libnet_ptag_t
1327 libnet_build_ipsec_esp_ftr(uint8_t len, uint8_t nh, int8_t *auth,
1328 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1329 
1345 LIBNET_API
1346 libnet_ptag_t
1347 libnet_build_ipsec_ah(uint8_t nh, uint8_t len, uint16_t res,
1348 uint32_t spi, uint32_t seq, uint32_t auth, const uint8_t* payload,
1349 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1350 
1368 LIBNET_API
1369 libnet_ptag_t
1370 libnet_build_dnsv4(uint16_t h_len, uint16_t id, uint16_t flags,
1371 uint16_t num_q, uint16_t num_anws_rr, uint16_t num_auth_rr,
1372 uint16_t num_addi_rr, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1373 libnet_ptag_t ptag);
1374 
1393 LIBNET_API
1394 libnet_ptag_t
1395 libnet_build_rip(uint8_t cmd, uint8_t version, uint16_t rd, uint16_t af,
1396 uint16_t rt, uint32_t addr, uint32_t mask, uint32_t next_hop,
1397 uint32_t metric, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1398 libnet_ptag_t ptag);
1399 
1423 LIBNET_API
1424 libnet_ptag_t
1425 libnet_build_rpc_call(uint32_t rm, uint32_t xid, uint32_t prog_num,
1426 uint32_t prog_vers, uint32_t procedure, uint32_t cflavor, uint32_t clength,
1427 uint8_t *cdata, uint32_t vflavor, uint32_t vlength, const uint8_t *vdata,
1428 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1429 
1453 LIBNET_API
1454 libnet_ptag_t
1455 libnet_build_stp_conf(uint16_t id, uint8_t version, uint8_t bpdu_type,
1456 uint8_t flags, const uint8_t *root_id, uint32_t root_pc, const uint8_t *bridge_id,
1457 uint16_t port_id, uint16_t message_age, uint16_t max_age,
1458 uint16_t hello_time, uint16_t f_delay, const uint8_t* payload,
1459 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1460 
1475 LIBNET_API
1476 libnet_ptag_t
1477 libnet_build_stp_tcn(uint16_t id, uint8_t version, uint8_t bpdu_type,
1478 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1479 
1495 LIBNET_API
1496 libnet_ptag_t
1497 libnet_build_udld_hdr(uint8_t version, uint8_t opcode, uint8_t flags, uint8_t checksum,
1498 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1499 
1509 LIBNET_API
1510 libnet_ptag_t
1511 libnet_build_udld_device_id(const uint8_t *value, const uint8_t value_s,
1512 libnet_t *l, libnet_ptag_t ptag);
1513 
1523 LIBNET_API
1524 libnet_ptag_t
1525 libnet_build_udld_port_id(const uint8_t *value, const uint8_t value_s,
1526 libnet_t *l, libnet_ptag_t ptag);
1527 
1537 LIBNET_API
1538 libnet_ptag_t
1539 libnet_build_udld_echo(const uint8_t *value, const uint8_t value_s,
1540 libnet_t *l, libnet_ptag_t ptag);
1541 
1550 LIBNET_API
1551 libnet_ptag_t
1552 libnet_build_udld_message_interval(const uint8_t *value, libnet_t *l,
1553 libnet_ptag_t ptag);
1554 
1563 LIBNET_API
1564 libnet_ptag_t
1565 libnet_build_udld_timeout_interval(const uint8_t *value, libnet_t *l,
1566 libnet_ptag_t ptag);
1567 
1577 LIBNET_API
1578 libnet_ptag_t
1579 libnet_build_udld_device_name(const uint8_t *value, const uint8_t value_s,
1580 libnet_t *l, libnet_ptag_t ptag);
1581 
1590 LIBNET_API
1591 libnet_ptag_t
1592 libnet_build_udld_sequence_number(const uint8_t *value, libnet_t *l,
1593 libnet_ptag_t ptag);
1594 
1613 LIBNET_API
1614 libnet_ptag_t
1615 libnet_build_token_ring(uint8_t ac, uint8_t fc, const uint8_t *dst, const uint8_t *src,
1616 uint8_t dsap, uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type,
1617 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1618 
1633 LIBNET_API
1634 libnet_ptag_t
1635 libnet_autobuild_token_ring(uint8_t ac, uint8_t fc, const uint8_t *dst,
1636 uint8_t dsap, uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type,
1637 libnet_t *l);
1638 
1659 LIBNET_API
1660 libnet_ptag_t
1661 libnet_build_vrrp(uint8_t version, uint8_t type, uint8_t vrouter_id,
1662 uint8_t priority, uint8_t ip_count, uint8_t auth_type, uint8_t advert_int,
1663 uint16_t sum, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1664 libnet_ptag_t ptag);
1665 
1679 LIBNET_API
1680 libnet_ptag_t
1681 libnet_build_mpls(uint32_t label, uint8_t experimental, uint8_t bos,
1682 uint8_t ttl, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1683 libnet_ptag_t ptag);
1684 
1713 LIBNET_API
1714 libnet_ptag_t
1715 libnet_build_ntp(uint8_t leap_indicator, uint8_t version, uint8_t mode,
1716 uint8_t stratum, uint8_t poll, uint8_t precision, uint16_t delay_int,
1717 uint16_t delay_frac, uint16_t dispersion_int, uint16_t dispersion_frac,
1718 uint32_t reference_id, uint32_t ref_ts_int, uint32_t ref_ts_frac,
1719 uint32_t orig_ts_int, uint32_t orig_ts_frac, uint32_t rec_ts_int,
1720 uint32_t rec_ts_frac, uint32_t xmt_ts_int, uint32_t xmt_ts_frac,
1721 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1722 
1737 LIBNET_API
1738 libnet_ptag_t
1739 libnet_build_ospfv2(uint16_t len, uint8_t type, uint32_t rtr_id,
1740 uint32_t area_id, uint16_t sum, uint16_t autype, const uint8_t* payload,
1741 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1742 
1758 LIBNET_API
1759 libnet_ptag_t
1760 libnet_build_ospfv2_hello(uint32_t netmask, uint16_t interval, uint8_t opts,
1761 uint8_t priority, uint32_t dead_int, uint32_t des_rtr, uint32_t bkup_rtr,
1762 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1763 
1780 libnet_ptag_t
1781 libnet_build_ospfv2_hello_neighbor(uint32_t netmask, uint16_t interval, uint8_t opts,
1782 uint8_t priority, uint32_t dead_int, uint32_t des_rtr, uint32_t bkup_rtr, uint32_t neighbor,
1783 const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1784 
1797 LIBNET_API
1798 libnet_ptag_t
1799 libnet_build_ospfv2_dbd(uint16_t dgram_len, uint8_t opts, uint8_t type,
1800 uint32_t seqnum, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1801 libnet_ptag_t ptag);
1802 
1814 LIBNET_API
1815 libnet_ptag_t
1816 libnet_build_ospfv2_lsr(uint32_t type, uint32_t lsid, uint32_t advrtr,
1817 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1818 
1828 LIBNET_API
1829 libnet_ptag_t
1830 libnet_build_ospfv2_lsu(uint32_t num, const uint8_t* payload, uint32_t payload_s,
1831 libnet_t *l, libnet_ptag_t ptag);
1832 
1849 LIBNET_API
1850 libnet_ptag_t
1851 libnet_build_ospfv2_lsa(uint16_t age, uint8_t opts, uint8_t type,
1852 uint32_t lsid, uint32_t advrtr, uint32_t seqnum, uint16_t sum, uint16_t len,
1853 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1854 
1870 LIBNET_API
1871 libnet_ptag_t
1872 libnet_build_ospfv2_lsa_rtr(uint16_t flags, uint16_t num, uint32_t id,
1873 uint32_t data, uint8_t type, uint8_t tos, uint16_t metric, const uint8_t* payload,
1874 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1875 
1886 LIBNET_API
1887 libnet_ptag_t
1888 libnet_build_ospfv2_lsa_net(uint32_t nmask, uint32_t rtrid, const uint8_t* payload,
1889 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1890 
1902 LIBNET_API
1903 libnet_ptag_t
1904 libnet_build_ospfv2_lsa_sum(uint32_t nmask, uint32_t metric, uint32_t tos,
1905 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
1906 
1919 LIBNET_API
1920 libnet_ptag_t
1921 libnet_build_ospfv2_lsa_as(uint32_t nmask, uint32_t metric, uint32_t fwdaddr,
1922 uint32_t tag, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1923 libnet_ptag_t ptag);
1924 
1937 LIBNET_API
1938 libnet_ptag_t
1939 libnet_build_data(const uint8_t* payload, uint32_t payload_s, libnet_t *l,
1940 libnet_ptag_t ptag);
1941 
1964 LIBNET_API
1965 libnet_ptag_t
1966 libnet_build_dhcpv4(uint8_t opcode, uint8_t htype, uint8_t hlen,
1967 uint8_t hopcount, uint32_t xid, uint16_t secs, uint16_t flags,
1968 uint32_t cip, uint32_t yip, uint32_t sip, uint32_t gip, const uint8_t *chaddr,
1969 const char *sname, const char *file, const uint8_t* payload, uint32_t payload_s,
1970 libnet_t *l, libnet_ptag_t ptag);
1971 
1994 LIBNET_API
1995 libnet_ptag_t
1996 libnet_build_bootpv4(uint8_t opcode, uint8_t htype, uint8_t hlen,
1997 uint8_t hopcount, uint32_t xid, uint16_t secs, uint16_t flags,
1998 uint32_t cip, uint32_t yip, uint32_t sip, uint32_t gip, const uint8_t *chaddr,
1999 const char *sname, const char *file, const uint8_t* payload, uint32_t payload_s,
2000 libnet_t *l, libnet_ptag_t ptag);
2001 
2007 LIBNET_API
2008 uint32_t
2009 libnet_getgre_length(uint16_t fv);
2010 
2034 LIBNET_API
2035 libnet_ptag_t
2036 libnet_build_gre(uint16_t fv, uint16_t type, uint16_t sum,
2037 uint16_t offset, uint32_t key, uint32_t seq, uint16_t len,
2038 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
2039 
2062 LIBNET_API
2063 libnet_ptag_t
2064 libnet_build_egre(uint16_t fv, uint16_t type, uint16_t sum,
2065 uint16_t offset, uint32_t key, uint32_t seq, uint16_t len,
2066 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
2067 
2080 LIBNET_API
2081 libnet_ptag_t
2082 libnet_build_gre_sre(uint16_t af, uint8_t offset, uint8_t length,
2083 uint8_t *routing, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
2084 libnet_ptag_t ptag);
2085 
2092 LIBNET_API
2093 libnet_ptag_t
2094 libnet_build_gre_last_sre(libnet_t *l, libnet_ptag_t ptag);
2095 
2118 LIBNET_API
2119 libnet_ptag_t
2120 libnet_build_bgp4_header(uint8_t marker[LIBNET_BGP4_MARKER_SIZE],
2121 uint16_t len, uint8_t type, const uint8_t* payload, uint32_t payload_s,
2122 libnet_t *l, libnet_ptag_t ptag);
2123 
2141 LIBNET_API
2142 libnet_ptag_t
2143 libnet_build_bgp4_open(uint8_t version, uint16_t src_as, uint16_t hold_time,
2144 uint32_t bgp_id, uint8_t opt_len, const uint8_t* payload, uint32_t payload_s,
2145 libnet_t *l, libnet_ptag_t ptag);
2146 
2163 LIBNET_API
2164 libnet_ptag_t
2165 libnet_build_bgp4_update(uint16_t unfeasible_rt_len, const uint8_t *withdrawn_rt,
2166 uint16_t total_path_attr_len, const uint8_t *path_attributes, uint16_t info_len,
2167 uint8_t *reachability_info, const uint8_t* payload, uint32_t payload_s,
2168 libnet_t *l, libnet_ptag_t ptag);
2169 
2183 LIBNET_API
2184 libnet_ptag_t
2185 libnet_build_bgp4_notification(uint8_t err_code, uint8_t err_subcode,
2186 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
2187 
2210 LIBNET_API
2211 libnet_ptag_t
2212 libnet_build_sebek(uint32_t magic, uint16_t version, uint16_t type,
2213 uint32_t counter, uint32_t time_sec, uint32_t time_usec, uint32_t pid,
2214 uint32_t uid, uint32_t fd, uint8_t cmd[SEBEK_CMD_LENGTH], uint32_t length,
2215 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
2216 
2237 LIBNET_API
2238 libnet_ptag_t
2239 libnet_build_hsrp(uint8_t version, uint8_t opcode, uint8_t state,
2240 uint8_t hello_time, uint8_t hold_time, uint8_t priority, uint8_t group,
2241 uint8_t reserved, uint8_t authdata[HSRP_AUTHDATA_LENGTH], uint32_t virtual_ip,
2242 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
2243 
2259 LIBNET_API
2260 libnet_ptag_t
2261 libnet_build_link(const uint8_t *dst, const uint8_t *src, const uint8_t *oui, uint16_t type,
2262 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
2263 
2275 LIBNET_API
2276 libnet_ptag_t
2277 libnet_autobuild_link(const uint8_t *dst, const uint8_t *oui, uint16_t type,
2278 libnet_t *l);
2279 
2293 LIBNET_API
2294 int
2296 
2306 LIBNET_API
2307 uint32_t
2309 
2319 LIBNET_API
2320 struct libnet_in6_addr
2322 
2331 LIBNET_API
2332 struct libnet_ether_addr *
2334 
2344 LIBNET_API
2345 uint8_t *
2346 libnet_hex_aton(const char *s, int *len);
2347 
2352 LIBNET_API
2353 const char *
2354 libnet_version(void);
2355 
2372 LIBNET_API
2373 int
2374 libnet_adv_cull_packet(libnet_t *l, uint8_t **packet, uint32_t *packet_s);
2375 
2389 LIBNET_API
2390 int
2391 libnet_adv_cull_header(libnet_t *l, libnet_ptag_t ptag, uint8_t **header,
2392 uint32_t *header_s);
2393 
2408 LIBNET_API
2409 int
2410 libnet_adv_write_link(libnet_t *l, const uint8_t *packet, uint32_t packet_s);
2411 
2426 LIBNET_API
2427 int
2428 libnet_adv_write_raw_ipv4(libnet_t *l, const uint8_t *packet, uint32_t packet_s);
2429 
2436 LIBNET_API
2437 void
2438 libnet_adv_free_packet(libnet_t *l, uint8_t *packet);
2439 
2454 int
2455 libnet_cq_add(libnet_t *l, char *label);
2456 
2472 LIBNET_API
2473 libnet_t *
2475 
2488 LIBNET_API
2489 libnet_t *
2490 libnet_cq_remove_by_label(char *label);
2491 
2498 LIBNET_API
2499 const char *
2501 
2509 LIBNET_API
2510 libnet_t *
2511 libnet_cq_find_by_label(char *label);
2512 
2518 LIBNET_API
2519 void
2520 libnet_cq_destroy(void);
2521 
2541 LIBNET_API
2542 libnet_t *
2543 libnet_cq_head(void);
2544 
2551 LIBNET_API
2552 int
2553 libnet_cq_last(void);
2554 
2560 LIBNET_API
2561 libnet_t *
2562 libnet_cq_next(void);
2563 
2569 LIBNET_API
2570 uint32_t
2571 libnet_cq_size(void);
2572 
2579 LIBNET_API
2580 uint32_t
2581 libnet_cq_end_loop(void);
2582 
2588 LIBNET_API
2589 void
2591 
2597 LIBNET_API
2598 void
2600 
2608 LIBNET_API
2609 char *
2610 libnet_diag_dump_pblock_type(uint8_t type);
2611 
2625 void
2626 libnet_diag_dump_hex(const uint8_t *packet, uint32_t len, int swap, FILE *stream);
2627 
2628 /*
2629  * [Internal]
2630  */
2631 LIBNET_API
2632 int
2633 libnet_write_raw_ipv4(libnet_t *l, const uint8_t *packet, uint32_t size);
2634 
2635 /*
2636  * [Internal]
2637  */
2638 LIBNET_API
2639 int
2640 libnet_write_raw_ipv6(libnet_t *l, const uint8_t *packet, uint32_t size);
2641 
2642 /*
2643  * [Internal]
2644  */
2645 LIBNET_API
2646 int
2647 libnet_write_link(libnet_t *l, const uint8_t *packet, uint32_t size);
2648 
2649 /*
2650  * [Internal]
2651  */
2652 int
2653 libnet_open_raw4(libnet_t *l);
2654 
2655 /*
2656  * [Internal]
2657  */
2658 LIBNET_API
2659 int
2660 libnet_close_raw4(libnet_t *l);
2661 
2662 /*
2663  * [Internal]
2664  */
2665 int
2666 libnet_open_raw6(libnet_t *l);
2667 
2668 /*
2669  * [Internal]
2670  */
2671 int
2672 libnet_close_raw6(libnet_t *l);
2673 
2674 /*
2675  * [Internal]
2676  */
2677 int
2678 libnet_select_device(libnet_t *l);
2679 
2680 /*
2681  * [Internal]
2682  */
2683 int
2684 libnet_open_link(libnet_t *l);
2685 
2686 /*
2687  * [Internal]
2688  */
2689 int
2690 libnet_close_link(libnet_t *l);
2691 
2692 /*
2693  * [Internal]
2694  * THIS FUNCTION IS BROKEN. IT WILL SEGFAULT OR CORRUPT MEMORY, OR JUST SILENTLY DO THE
2695  * WRONG THING IF NOT CALLED CORRECTLY, AND CALLING IT CORRECTLY IS UNDOCUMENTED, AND
2696  * ALMOST IMPOSSIBLE. YOU HAVE BEEN WARNED.
2697  */
2698 int
2699 libnet_do_checksum(libnet_t *l, uint8_t *iphdr, int protocol, int h_len);
2700 
2701 /* Calculate internet checksums.
2702  *
2703  * IP (TCP, UDP, IGMP, ICMP, etc...) checksums usually need information from
2704  * the IP header to construct the "pseudo header", this function takes a
2705  * pointer to that header, the buffer boundaries, the "h_len" (see pblock_t for
2706  * a description, it is increasingly unused, though, and I'm trying to remove it
2707  * altogether), and the protocol number for the protocol that is to be
2708  * checksummed.
2709  *
2710  * Finding that protocol requires that the IP header be well-formed... so this
2711  * won't work well for invalid packets. But then, what is the valid checksum
2712  * for a invalid packet, anyhow?
2713  *
2714  * This doesn't work well for non-inet checksums, sorry, that's an original design
2715  * flaw. pblock_t needs a pointer in it, to a packet assembly function that can be
2716  * called at runtime to do assembly and checksumming.
2717  */
2718 LIBNET_API
2719 int
2720 libnet_inet_checksum(libnet_t *l, uint8_t *iphdr, int protocol, int h_len, const uint8_t *beg, const uint8_t * end);
2721 
2722 /*
2723  * [Internal]
2724  */
2725 LIBNET_API
2726 uint32_t
2727 libnet_compute_crc(uint8_t *buf, uint32_t len);
2728 
2729 /*
2730  * [Internal]
2731  */
2732 LIBNET_API
2733 uint16_t
2734 libnet_ip_check(uint16_t *addr, int len);
2735 
2736 /*
2737  * [Internal]
2738  */
2739 LIBNET_API
2740 int
2741 libnet_in_cksum(uint16_t *addr, int len);
2742 
2743 /*
2744  * [Internal]
2745  * If ptag is 0, function will create a pblock for the protocol unit type,
2746  * append it to the list and return a pointer to it. If ptag is not 0,
2747  * function will search the pblock list for the specified protocol block
2748  * and return a pointer to it.
2749  */
2750 LIBNET_API
2752 libnet_pblock_probe(libnet_t *l, libnet_ptag_t ptag, uint32_t b_len,
2753 uint8_t type);
2754 
2755 /*
2756  * [Internal]
2757  * Function creates the pblock list if l->protocol_blocks == NULL or appends
2758  * an entry to the doubly linked list.
2759  */
2760 LIBNET_API
2762 libnet_pblock_new(libnet_t *l, uint32_t b_len);
2763 
2764 /*
2765  * [Internal]
2766  * Function swaps two pblocks in memory.
2767  */
2768 LIBNET_API
2769 int
2770 libnet_pblock_swap(libnet_t *l, libnet_ptag_t ptag1, libnet_ptag_t ptag2);
2771 
2772 /*
2773  * [Internal]
2774  * Function inserts ptag2 before ptag1 in the doubly linked list.
2775  */
2776 LIBNET_API
2777 int
2778 libnet_pblock_insert_before(libnet_t *l, libnet_ptag_t ptag1,
2779 libnet_ptag_t ptag2);
2780 
2781 /*
2782  * [Internal]
2783  * Function removes a pblock from context
2784  */
2785 LIBNET_API
2786 void
2787 libnet_pblock_delete(libnet_t *l, libnet_pblock_t *p);
2788 
2789 /*
2790  * [Internal]
2791  * Function updates the pblock meta-information. Internally it updates the
2792  * ptag with a monotonically increasing variable kept in l. This way each
2793  * pblock has a successively increasing ptag identifier.
2794  */
2795 LIBNET_API
2796 libnet_ptag_t
2797 libnet_pblock_update(libnet_t *l, libnet_pblock_t *p, uint32_t h, uint8_t type);
2798 
2799 
2800 /*
2801  * [Internal]
2802  * Function locates a given block by it's ptag.
2803  */
2804 LIBNET_API
2806 libnet_pblock_find(libnet_t *l, libnet_ptag_t ptag);
2807 
2808 /*
2809  * [Internal]
2810  * Function copies protocol block data over.
2811  */
2812 LIBNET_API
2813 int
2814 libnet_pblock_append(libnet_t *l, libnet_pblock_t *p, const void *buf, uint32_t len);
2815 
2816 /*
2817  * [Internal]
2818  * Function sets pblock flags.
2819  */
2820 LIBNET_API
2821 void
2822 libnet_pblock_setflags(libnet_pblock_t *p, uint8_t flags);
2823 
2824 /*
2825  * [Internal]
2826  * Function returns the protocol number for the protocol block type. If
2827  * the type is unknown, the function defaults to returning IPPROTO_IP.
2828  */
2829 LIBNET_API
2830 int
2831 libnet_pblock_p2p(uint8_t type);
2832 
2833 /*
2834  * [Internal]
2835  * Function assembles the protocol blocks into a packet, checksums are
2836  * calculated if that was requested.
2837  */
2838 LIBNET_API
2839 int
2840 libnet_pblock_coalesce(libnet_t *l, uint8_t **packet, uint32_t *size);
2841 
2842 #if !(__WIN32__)
2843 /*
2844  * [Internal]
2845  * By testing if we can retrieve the FLAGS of an interface
2846  * we can know if it exists or not and if it is up.
2847  */
2848 int
2849 libnet_check_iface(libnet_t *l);
2850 #endif
2851 
2852 #if defined(__WIN32__)
2853 /*
2854  * [Internal]
2855  */
2856 BYTE *
2857 libnet_win32_get_remote_mac(libnet_t *l, DWORD IP);
2858 
2859 /*
2860  * [Internal]
2861  */
2862 int
2863 libnet_close_link_interface(libnet_t *l);
2864 
2865 /*
2866  * [Internal]
2867  */
2868 BYTE *
2869 libnet_win32_read_arp_table(DWORD IP);
2870 #endif
2871 #endif /* __LIBNET_FUNCTIONS_H */
2872 
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:161
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:230
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:149
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:259
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:92
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:109
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:263
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:319
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:141
LIBNET_API int libnet_getfd(libnet_t *l)
Returns the FILENO of the file descriptor used for packet injection.
Definition: libnet_init.c:166
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:153
LIBNET_API libnet_ptag_t libnet_build_udld_hdr(uint8_t version, uint8_t opcode, uint8_t flags, uint8_t checksum, const uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag)
Builds an UniDirectional Link Detection(UDLD) header.
Definition: libnet_build_udld.c:124
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:602
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:217
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:61
Definition: libnet-headers.h:837
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 libnet_ptag_t libnet_build_lldp_port(const uint8_t subtype, const uint8_t *value, const uint8_t value_s, libnet_t *l, libnet_ptag_t ptag)
Builds a LLDP Port ID TLV.
Definition: libnet_build_lldp.c:69
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:192
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:106
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 libnet_ptag_t libnet_build_udld_timeout_interval(const uint8_t *value, libnet_t *l, libnet_ptag_t ptag)
Builds an UniDirectional Link Detection(UDLD) Timeout Interval TLV.
Definition: libnet_build_udld.c:254
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:534
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:84
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:179
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_build_udld_device_id(const uint8_t *value, const uint8_t value_s, libnet_t *l, libnet_ptag_t ptag)
Builds an UniDirectional Link Detection(UDLD) Device ID TLV.
Definition: libnet_build_udld.c:184
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:732
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:99
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_ptag_t libnet_build_udld_echo(const uint8_t *value, const uint8_t value_s, libnet_t *l, libnet_ptag_t ptag)
Builds an UniDirectional Link Detection(UDLD) Echo TLV.
Definition: libnet_build_udld.c:218
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:59
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:260
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:406
LIBNET_API int libnet_plist_chain_free(libnet_plist_t *plist)
Frees all memory associated with port list chain.
Definition: libnet_port_list.c:271
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:102
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:186
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:304
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_udld_device_name(const uint8_t *value, const uint8_t value_s, libnet_t *l, libnet_ptag_t ptag)
Builds an UniDirectional Link Detection(UDLD) Device Name TLV.
Definition: libnet_build_udld.c:273
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:134
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:467
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:126
Definition: getopt.h:46
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:515
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)
Translate an IPv6 address to a canonical DNS name or hexadecimal string.
Definition: libnet_resolve.c:196
Definition: libnet-structures.h:69
LIBNET_API libnet_ptag_t libnet_build_udld_message_interval(const uint8_t *value, libnet_t *l, libnet_ptag_t ptag)
Builds an UniDirectional Link Detection(UDLD) Message Interval TLV.
Definition: libnet_build_udld.c:235
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:240
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:252
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:501
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:462
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:134
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:521
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:367
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:162
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:208
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:101
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:667
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_inet_checksum(libnet_t *l, uint8_t *iphdr, int protocol, int h_len, const uint8_t *beg, const uint8_t *end)
Definition: libnet_checksum.c:155
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:186
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)
At the moment, this function is not implemented.
Definition: libnet_build_icmp.c:68
LIBNET_API uint32_t libnet_cq_end_loop(void)
[Context Queue] Cleanup from iterating through the context queue.
Definition: libnet_cq.c:393
LIBNET_API libnet_ptag_t libnet_build_lldp_org_spec(const uint8_t *value, const uint16_t value_s, libnet_t *l, libnet_ptag_t ptag)
Builds a LLDP Organization Specific TLV.
Definition: libnet_build_lldp.c:223
LIBNET_API libnet_ptag_t libnet_build_lldp_ttl(const uint16_t ttl, libnet_t *l, libnet_ptag_t ptag)
Builds a LLDP TTL TLV.
Definition: libnet_build_lldp.c:133
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:211
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:128
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:230
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:122
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_lldp_end(libnet_t *l, libnet_ptag_t ptag)
Builds a LLDP End of LLDPDU TLV.
Definition: libnet_build_lldp.c:185
LIBNET_API libnet_ptag_t libnet_build_udld_port_id(const uint8_t *value, const uint8_t value_s, libnet_t *l, libnet_ptag_t ptag)
Builds an UniDirectional Link Detection(UDLD) Port ID TLV.
Definition: libnet_build_udld.c:201
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:83
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:541
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:197
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_udld_sequence_number(const uint8_t *value, libnet_t *l, libnet_ptag_t ptag)
Builds an UniDirectional Link Detection(UDLD) Sequence Number TLV.
Definition: libnet_build_udld.c:291
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:420
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:480
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:94
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:343
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:287
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:248
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:295
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:626
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 libnet_ptag_t libnet_build_lldp_chassis(const uint8_t subtype, const uint8_t *value, const uint8_t value_s, libnet_t *l, libnet_ptag_t ptag)
Builds a LLDP Chassis ID TLV.
Definition: libnet_build_lldp.c:4
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:349
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:240
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:469
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