Blame doc/html/libnet-functions_8h_source.html

Packit 03b34a
Packit 03b34a
<html xmlns="http://www.w3.org/1999/xhtml">
Packit 03b34a
<head>
Packit 03b34a
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
Packit 03b34a
<title>libnet: libnet-functions.h Source File</title>
Packit 03b34a
<link href="tabs.css" rel="stylesheet" type="text/css"/>
Packit 03b34a
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
Packit 03b34a
</head>
Packit 03b34a
<body>
Packit 03b34a
Packit 03b34a
Packit 03b34a
Packit 03b34a
Packit 03b34a
 
Packit 03b34a
 
Packit 03b34a
  
Packit 03b34a
   
libnet 1.1
Packit 03b34a
  
Packit 03b34a
 
Packit 03b34a
 
Packit 03b34a
Packit 03b34a
Packit 03b34a
  
Packit 03b34a
    
    Packit 03b34a
          
  • Main Page
  • Packit 03b34a
          
  • Files
  • Packit 03b34a
        
    Packit 03b34a
      
    Packit 03b34a
      
    Packit 03b34a
        
      Packit 03b34a
            
    • File List
    • Packit 03b34a
            
    • Globals
    • Packit 03b34a
          
      Packit 03b34a
        
      Packit 03b34a
      Packit 03b34a
        
      Packit 03b34a
      libnet-functions.h
      Packit 03b34a
      Packit 03b34a
      Packit 03b34a
      Go to the documentation of this file.
      00001 /*
      Packit 03b34a
      00002  *  $Id: libnet-functions.h,v 1.43 2004/11/09 07:05:07 mike Exp $
      Packit 03b34a
      00003  *
      Packit 03b34a
      00004  *  libnet-functions.h - function prototypes
      Packit 03b34a
      00005  *
      Packit 03b34a
      00006  *  Copyright (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
      Packit 03b34a
      00007  *  All rights reserved.
      Packit 03b34a
      00008  *
      Packit 03b34a
      00009  * Redistribution and use in source and binary forms, with or without
      Packit 03b34a
      00010  * modification, are permitted provided that the following conditions
      Packit 03b34a
      00011  * are met:
      Packit 03b34a
      00012  * 1. Redistributions of source code must retain the above copyright
      Packit 03b34a
      00013  *    notice, this list of conditions and the following disclaimer.
      Packit 03b34a
      00014  * 2. Redistributions in binary form must reproduce the above copyright
      Packit 03b34a
      00015  *    notice, this list of conditions and the following disclaimer in the
      Packit 03b34a
      00016  *    documentation and/or other materials provided with the distribution.
      Packit 03b34a
      00017  *
      Packit 03b34a
      00018  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
      Packit 03b34a
      00019  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      Packit 03b34a
      00020  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      Packit 03b34a
      00021  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
      Packit 03b34a
      00022  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      Packit 03b34a
      00023  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
      Packit 03b34a
      00024  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      Packit 03b34a
      00025  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
      Packit 03b34a
      00026  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
      Packit 03b34a
      00027  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      Packit 03b34a
      00028  * SUCH DAMAGE.
      Packit 03b34a
      00029  *
      Packit 03b34a
      00030  */
      Packit 03b34a
      00031 
      Packit 03b34a
      00032 #ifndef __LIBNET_FUNCTIONS_H
      Packit 03b34a
      00033 #define __LIBNET_FUNCTIONS_H
      Packit 03b34a
      00034 
      Packit 03b34a
      00063 libnet_t *
      Packit 03b34a
      00064 libnet_init(int injection_type, const char *device, char *err_buf);
      Packit 03b34a
      00065 
      Packit 03b34a
      00071 void
      Packit 03b34a
      00072 libnet_destroy(libnet_t *l);
      Packit 03b34a
      00073 
      Packit 03b34a
      00080 void
      Packit 03b34a
      00081 libnet_clear_packet(libnet_t *l);
      Packit 03b34a
      00082 
      Packit 03b34a
      00089 void
      Packit 03b34a
      00090 libnet_stats(libnet_t *l, struct libnet_stats *ls);
      Packit 03b34a
      00091 
      Packit 03b34a
      00097 int 
      Packit 03b34a
      00098 libnet_getfd(libnet_t *l);
      Packit 03b34a
      00099 
      Packit 03b34a
      00106 const char *
      Packit 03b34a
      00107 libnet_getdevice(libnet_t *l);
      Packit 03b34a
      00108 
      Packit 03b34a
      00117 uint8_t *
      Packit 03b34a
      00118 libnet_getpbuf(libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00119 
      Packit 03b34a
      00128 uint32_t
      Packit 03b34a
      00129 libnet_getpbuf_size(libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00130 
      Packit 03b34a
      00138 char *
      Packit 03b34a
      00139 libnet_geterror(libnet_t *l);
      Packit 03b34a
      00140 
      Packit 03b34a
      00147 uint32_t
      Packit 03b34a
      00148 libnet_getpacket_size(libnet_t *l);
      Packit 03b34a
      00149 
      Packit 03b34a
      00155 int
      Packit 03b34a
      00156 libnet_seed_prand(libnet_t *l);
      Packit 03b34a
      00157 
      Packit 03b34a
      00171 uint32_t
      Packit 03b34a
      00172 libnet_get_prand(int mod);
      Packit 03b34a
      00173 
      Packit 03b34a
      00195 int
      Packit 03b34a
      00196 libnet_toggle_checksum(libnet_t *l, libnet_ptag_t ptag, int mode);
      Packit 03b34a
      00197 
      Packit 03b34a
      00210 char *
      Packit 03b34a
      00211 libnet_addr2name4(uint32_t in, uint8_t use_name);
      Packit 03b34a
      00212 
      Packit 03b34a
      00226 uint32_t
      Packit 03b34a
      00227 libnet_name2addr4(libnet_t *l, char *host_name, uint8_t use_name);
      Packit 03b34a
      00228 
      Packit 03b34a
      00229 extern const struct libnet_in6_addr in6addr_error;
      Packit 03b34a
      00230 
      Packit 03b34a
      00236 int
      Packit 03b34a
      00237 libnet_in6_is_error(struct libnet_in6_addr addr);
      Packit 03b34a
      00238 
      Packit 03b34a
      00252 struct libnet_in6_addr
      Packit 03b34a
      00253 libnet_name2addr6(libnet_t *l, const char *host_name, uint8_t use_name);
      Packit 03b34a
      00254 
      Packit 03b34a
      00258 void
      Packit 03b34a
      00259 libnet_addr2name6_r(struct libnet_in6_addr addr, uint8_t use_name,
      Packit 03b34a
      00260 char *host_name, int host_name_len);
      Packit 03b34a
      00261 
      Packit 03b34a
      00277 int
      Packit 03b34a
      00278 libnet_plist_chain_new(libnet_t *l, libnet_plist_t **plist, char *token_list);
      Packit 03b34a
      00279 
      Packit 03b34a
      00291 int
      Packit 03b34a
      00292 libnet_plist_chain_next_pair(libnet_plist_t *plist, uint16_t *bport, 
      Packit 03b34a
      00293 uint16_t *eport); 
      Packit 03b34a
      00294 
      Packit 03b34a
      00301 int
      Packit 03b34a
      00302 libnet_plist_chain_dump(libnet_plist_t *plist);
      Packit 03b34a
      00303 
      Packit 03b34a
      00312 char *
      Packit 03b34a
      00313 libnet_plist_chain_dump_string(libnet_plist_t *plist);
      Packit 03b34a
      00314 
      Packit 03b34a
      00320 int
      Packit 03b34a
      00321 libnet_plist_chain_free(libnet_plist_t *plist);
      Packit 03b34a
      00322 
      Packit 03b34a
      00410 libnet_ptag_t
      Packit 03b34a
      00411 libnet_build_802_1q(const uint8_t *dst, const uint8_t *src, uint16_t tpi,
      Packit 03b34a
      00412 uint8_t priority, uint8_t cfi, uint16_t vlan_id, uint16_t len_proto,
      Packit 03b34a
      00413 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00414 
      Packit 03b34a
      00426 libnet_ptag_t
      Packit 03b34a
      00427 libnet_build_802_1x(uint8_t eap_ver, uint8_t eap_type, uint16_t length, 
      Packit 03b34a
      00428 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00429 
      Packit 03b34a
      00441 libnet_ptag_t
      Packit 03b34a
      00442 libnet_build_802_2(uint8_t dsap, uint8_t ssap, uint8_t control,
      Packit 03b34a
      00443 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00444 
      Packit 03b34a
      00458 libnet_ptag_t
      Packit 03b34a
      00459 libnet_build_802_2snap(uint8_t dsap, uint8_t ssap, uint8_t control, 
      Packit 03b34a
      00460 uint8_t *oui, uint16_t type, const uint8_t* payload, uint32_t payload_s,
      Packit 03b34a
      00461 libnet_t *l, libnet_ptag_t ptag); 
      Packit 03b34a
      00462 
      Packit 03b34a
      00478 libnet_ptag_t
      Packit 03b34a
      00479 libnet_build_802_3(const uint8_t *dst, const uint8_t *src, uint16_t len, 
      Packit 03b34a
      00480 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00481 
      Packit 03b34a
      00497 libnet_ptag_t
      Packit 03b34a
      00498 libnet_build_ethernet(const uint8_t *dst, const uint8_t *src, uint16_t type, 
      Packit 03b34a
      00499 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00500 
      Packit 03b34a
      00512 libnet_ptag_t
      Packit 03b34a
      00513 libnet_autobuild_ethernet(const uint8_t *dst, uint16_t type, libnet_t *l);
      Packit 03b34a
      00514 
      Packit 03b34a
      00531 libnet_ptag_t
      Packit 03b34a
      00532 libnet_build_fddi(uint8_t fc, const uint8_t *dst, const uint8_t *src, uint8_t dsap,
      Packit 03b34a
      00533 uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type, const uint8_t* payload,
      Packit 03b34a
      00534 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00535 
      Packit 03b34a
      00548 libnet_ptag_t
      Packit 03b34a
      00549 libnet_autobuild_fddi(uint8_t fc, const uint8_t *dst, uint8_t dsap, uint8_t ssap,
      Packit 03b34a
      00550 uint8_t cf, const uint8_t *oui, uint16_t type, libnet_t *l);
      Packit 03b34a
      00551 
      Packit 03b34a
      00571 libnet_ptag_t
      Packit 03b34a
      00572 libnet_build_arp(uint16_t hrd, uint16_t pro, uint8_t hln, uint8_t pln,
      Packit 03b34a
      00573 uint16_t op, const uint8_t *sha, const uint8_t *spa, const uint8_t *tha, const uint8_t *tpa,
      Packit 03b34a
      00574 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00575 
      Packit 03b34a
      00588 libnet_ptag_t
      Packit 03b34a
      00589 libnet_autobuild_arp(uint16_t op, const uint8_t *sha, const uint8_t *spa, const uint8_t *tha,
      Packit 03b34a
      00590 uint8_t *tpa, libnet_t *l);
      Packit 03b34a
      00591 
      Packit 03b34a
      00609 libnet_ptag_t
      Packit 03b34a
      00610 libnet_build_tcp(uint16_t sp, uint16_t dp, uint32_t seq, uint32_t ack,
      Packit 03b34a
      00611 uint8_t control, uint16_t win, uint16_t sum, uint16_t urg, uint16_t len, 
      Packit 03b34a
      00612 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00613 
      Packit 03b34a
      00629 libnet_ptag_t
      Packit 03b34a
      00630 libnet_build_tcp_options(const uint8_t *options, uint32_t options_s, libnet_t *l,
      Packit 03b34a
      00631 libnet_ptag_t ptag);
      Packit 03b34a
      00632 
      Packit 03b34a
      00645 libnet_ptag_t
      Packit 03b34a
      00646 libnet_build_udp(uint16_t sp, uint16_t dp, uint16_t len, uint16_t sum,
      Packit 03b34a
      00647 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00648 
      Packit 03b34a
      00668 libnet_ptag_t
      Packit 03b34a
      00669 libnet_build_cdp(uint8_t version, uint8_t ttl, uint16_t sum, uint16_t type,
      Packit 03b34a
      00670 uint16_t value_s, const uint8_t *value, const uint8_t* payload, uint32_t payload_s,
      Packit 03b34a
      00671 libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00672 
      Packit 03b34a
      00687 libnet_ptag_t
      Packit 03b34a
      00688 libnet_build_icmpv4_echo(uint8_t type, uint8_t code, uint16_t sum,
      Packit 03b34a
      00689 uint16_t id, uint16_t seq, const uint8_t* payload, uint32_t payload_s,
      Packit 03b34a
      00690 libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00691 
      Packit 03b34a
      00707 libnet_ptag_t
      Packit 03b34a
      00708 libnet_build_icmpv4_mask(uint8_t type, uint8_t code, uint16_t sum,
      Packit 03b34a
      00709 uint16_t id, uint16_t seq, uint32_t mask, const uint8_t* payload,
      Packit 03b34a
      00710 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00711 
      Packit 03b34a
      00725 libnet_ptag_t
      Packit 03b34a
      00726 libnet_build_icmpv4_unreach(uint8_t type, uint8_t code, uint16_t sum,
      Packit 03b34a
      00727 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00728 
      Packit 03b34a
      00743 libnet_ptag_t
      Packit 03b34a
      00744 libnet_build_icmpv4_redirect(uint8_t type, uint8_t code, uint16_t sum,
      Packit 03b34a
      00745 uint32_t gateway, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
      Packit 03b34a
      00746 libnet_ptag_t ptag);
      Packit 03b34a
      00747 
      Packit 03b34a
      00762 libnet_ptag_t
      Packit 03b34a
      00763 libnet_build_icmpv4_timeexceed(uint8_t type, uint8_t code, uint16_t sum,
      Packit 03b34a
      00764 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00765 
      Packit 03b34a
      00783 libnet_ptag_t
      Packit 03b34a
      00784 libnet_build_icmpv4_timestamp(uint8_t type, uint8_t code, uint16_t sum,
      Packit 03b34a
      00785 uint16_t id, uint16_t seq, uint32_t otime, uint32_t rtime, uint32_t ttime,
      Packit 03b34a
      00786 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00787 
      Packit 03b34a
      00802 libnet_ptag_t libnet_build_icmpv6_echo(uint8_t type, uint8_t code, uint16_t
      Packit 03b34a
      00803         sum, uint16_t id, uint16_t seq, uint8_t *payload, uint32_t payload_s,
      Packit 03b34a
      00804         libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00805 
      Packit 03b34a
      00819 libnet_ptag_t
      Packit 03b34a
      00820 libnet_build_icmpv6_unreach(uint8_t type, uint8_t code, uint16_t sum,
      Packit 03b34a
      00821 uint8_t *payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00822 
      Packit 03b34a
      00837 libnet_ptag_t libnet_build_icmpv6_ndp_nsol(uint8_t type, uint8_t code,
      Packit 03b34a
      00838         uint16_t sum, struct libnet_in6_addr target, uint8_t *payload, uint32_t
      Packit 03b34a
      00839         payload_s, libnet_t* l, libnet_ptag_t ptag);
      Packit 03b34a
      00840 
      Packit 03b34a
      00856 libnet_ptag_t libnet_build_icmpv6_ndp_nadv(uint8_t type, uint8_t code,
      Packit 03b34a
      00857         uint16_t sum, uint32_t flags, struct libnet_in6_addr target, uint8_t
      Packit 03b34a
      00858         *payload, uint32_t payload_s, libnet_t* l, libnet_ptag_t ptag);
      Packit 03b34a
      00859 
      Packit 03b34a
      00869 libnet_ptag_t libnet_build_icmpv6_ndp_opt(uint8_t type, uint8_t* option,
      Packit 03b34a
      00870         uint32_t option_s, libnet_t* l, libnet_ptag_t ptag);
      Packit 03b34a
      00871 
      Packit 03b34a
      00886 libnet_ptag_t
      Packit 03b34a
      00887 libnet_build_igmp(uint8_t type, uint8_t reserved, uint16_t sum, uint32_t ip,
      Packit 03b34a
      00888 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00889 
      Packit 03b34a
      00909 libnet_ptag_t 
      Packit 03b34a
      00910 libnet_build_ipv4(uint16_t ip_len, uint8_t tos, uint16_t id, uint16_t frag,
      Packit 03b34a
      00911 uint8_t ttl, uint8_t prot, uint16_t sum, uint32_t src, uint32_t dst,
      Packit 03b34a
      00912 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00913 
      Packit 03b34a
      00932 libnet_ptag_t 
      Packit 03b34a
      00933 libnet_build_ipv4_options(const uint8_t *options, uint32_t options_s, libnet_t *l,
      Packit 03b34a
      00934 libnet_ptag_t ptag);
      Packit 03b34a
      00935 
      Packit 03b34a
      00949 libnet_ptag_t
      Packit 03b34a
      00950 libnet_autobuild_ipv4(uint16_t len, uint8_t prot, uint32_t dst, libnet_t *l);
      Packit 03b34a
      00951 
      Packit 03b34a
      00967 libnet_ptag_t
      Packit 03b34a
      00968 libnet_build_ipv6(uint8_t tc, uint32_t fl, uint16_t len, uint8_t nh,
      Packit 03b34a
      00969 uint8_t hl, struct libnet_in6_addr src, struct libnet_in6_addr dst, 
      Packit 03b34a
      00970 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      00971 
      Packit 03b34a
      00984 libnet_ptag_t
      Packit 03b34a
      00985 libnet_build_ipv6_frag(uint8_t nh, uint8_t reserved, uint16_t frag,
      Packit 03b34a
      00986 uint32_t id, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
      Packit 03b34a
      00987 libnet_ptag_t ptag);
      Packit 03b34a
      00988 
      Packit 03b34a
      01006 libnet_ptag_t
      Packit 03b34a
      01007 libnet_build_ipv6_routing(uint8_t nh, uint8_t len, uint8_t rtype,
      Packit 03b34a
      01008 uint8_t segments, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
      Packit 03b34a
      01009 libnet_ptag_t ptag);
      Packit 03b34a
      01010 
      Packit 03b34a
      01024 libnet_ptag_t
      Packit 03b34a
      01025 libnet_build_ipv6_destopts(uint8_t nh, uint8_t len, const uint8_t* payload,
      Packit 03b34a
      01026 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01027 
      Packit 03b34a
      01042 libnet_ptag_t
      Packit 03b34a
      01043 libnet_build_ipv6_hbhopts(uint8_t nh, uint8_t len, const uint8_t* payload,
      Packit 03b34a
      01044 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01045 
      Packit 03b34a
      01062 libnet_ptag_t
      Packit 03b34a
      01063 libnet_autobuild_ipv6(uint16_t len, uint8_t nh, struct libnet_in6_addr dst,
      Packit 03b34a
      01064 libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01065 
      Packit 03b34a
      01083 libnet_ptag_t
      Packit 03b34a
      01084 libnet_build_isl(uint8_t *dhost, uint8_t type, uint8_t user,
      Packit 03b34a
      01085 uint8_t *shost, uint16_t len, const uint8_t *snap, uint16_t vid,
      Packit 03b34a
      01086 uint16_t portindex, uint16_t reserved, const uint8_t* payload,
      Packit 03b34a
      01087 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01088 
      Packit 03b34a
      01100 libnet_ptag_t
      Packit 03b34a
      01101 libnet_build_ipsec_esp_hdr(uint32_t spi, uint32_t seq, uint32_t iv,
      Packit 03b34a
      01102 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01103 
      Packit 03b34a
      01115 libnet_ptag_t
      Packit 03b34a
      01116 libnet_build_ipsec_esp_ftr(uint8_t len, uint8_t nh, int8_t *auth,
      Packit 03b34a
      01117 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01118 
      Packit 03b34a
      01133 libnet_ptag_t
      Packit 03b34a
      01134 libnet_build_ipsec_ah(uint8_t nh, uint8_t len, uint16_t res,
      Packit 03b34a
      01135 uint32_t spi, uint32_t seq, uint32_t auth, const uint8_t* payload,
      Packit 03b34a
      01136 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01137 
      Packit 03b34a
      01154 libnet_ptag_t
      Packit 03b34a
      01155 libnet_build_dnsv4(uint16_t h_len, uint16_t id, uint16_t flags,
      Packit 03b34a
      01156 uint16_t num_q, uint16_t num_anws_rr, uint16_t num_auth_rr,
      Packit 03b34a
      01157 uint16_t num_addi_rr, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
      Packit 03b34a
      01158 libnet_ptag_t ptag);
      Packit 03b34a
      01159 
      Packit 03b34a
      01177 libnet_ptag_t
      Packit 03b34a
      01178 libnet_build_rip(uint8_t cmd, uint8_t version, uint16_t rd, uint16_t af,
      Packit 03b34a
      01179 uint16_t rt, uint32_t addr, uint32_t mask, uint32_t next_hop,
      Packit 03b34a
      01180 uint32_t metric, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
      Packit 03b34a
      01181 libnet_ptag_t ptag);
      Packit 03b34a
      01182 
      Packit 03b34a
      01205 libnet_ptag_t
      Packit 03b34a
      01206 libnet_build_rpc_call(uint32_t rm, uint32_t xid, uint32_t prog_num,
      Packit 03b34a
      01207 uint32_t prog_vers, uint32_t procedure, uint32_t cflavor, uint32_t clength,
      Packit 03b34a
      01208 uint8_t *cdata, uint32_t vflavor, uint32_t vlength, const uint8_t *vdata,
      Packit 03b34a
      01209 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01210 
      Packit 03b34a
      01233 libnet_ptag_t
      Packit 03b34a
      01234 libnet_build_stp_conf(uint16_t id, uint8_t version, uint8_t bpdu_type,
      Packit 03b34a
      01235 uint8_t flags, const uint8_t *root_id, uint32_t root_pc, const uint8_t *bridge_id,
      Packit 03b34a
      01236 uint16_t port_id, uint16_t message_age, uint16_t max_age, 
      Packit 03b34a
      01237 uint16_t hello_time, uint16_t f_delay, const uint8_t* payload,
      Packit 03b34a
      01238 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01239 
      Packit 03b34a
      01253 libnet_ptag_t
      Packit 03b34a
      01254 libnet_build_stp_tcn(uint16_t id, uint8_t version, uint8_t bpdu_type,
      Packit 03b34a
      01255 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01256 
      Packit 03b34a
      01274 libnet_ptag_t
      Packit 03b34a
      01275 libnet_build_token_ring(uint8_t ac, uint8_t fc, const uint8_t *dst, const uint8_t *src,
      Packit 03b34a
      01276 uint8_t dsap, uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type,
      Packit 03b34a
      01277 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01278 
      Packit 03b34a
      01292 libnet_ptag_t
      Packit 03b34a
      01293 libnet_autobuild_token_ring(uint8_t ac, uint8_t fc, const uint8_t *dst, 
      Packit 03b34a
      01294 uint8_t dsap, uint8_t ssap, uint8_t cf, const uint8_t *oui, uint16_t type,
      Packit 03b34a
      01295 libnet_t *l);
      Packit 03b34a
      01296 
      Packit 03b34a
      01316 libnet_ptag_t
      Packit 03b34a
      01317 libnet_build_vrrp(uint8_t version, uint8_t type, uint8_t vrouter_id,
      Packit 03b34a
      01318 uint8_t priority, uint8_t ip_count, uint8_t auth_type, uint8_t advert_int,
      Packit 03b34a
      01319 uint16_t sum, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
      Packit 03b34a
      01320 libnet_ptag_t ptag);
      Packit 03b34a
      01321 
      Packit 03b34a
      01334 libnet_ptag_t
      Packit 03b34a
      01335 libnet_build_mpls(uint32_t label, uint8_t experimental, uint8_t bos,
      Packit 03b34a
      01336 uint8_t ttl, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
      Packit 03b34a
      01337 libnet_ptag_t ptag);
      Packit 03b34a
      01338 
      Packit 03b34a
      01366 libnet_ptag_t
      Packit 03b34a
      01367 libnet_build_ntp(uint8_t leap_indicator, uint8_t version, uint8_t mode,
      Packit 03b34a
      01368 uint8_t stratum, uint8_t poll, uint8_t precision, uint16_t delay_int,
      Packit 03b34a
      01369 uint16_t delay_frac, uint16_t dispersion_int, uint16_t dispersion_frac,
      Packit 03b34a
      01370 uint32_t reference_id, uint32_t ref_ts_int, uint32_t ref_ts_frac,
      Packit 03b34a
      01371 uint32_t orig_ts_int, uint32_t orig_ts_frac, uint32_t rec_ts_int,
      Packit 03b34a
      01372 uint32_t rec_ts_frac, uint32_t xmt_ts_int, uint32_t xmt_ts_frac,
      Packit 03b34a
      01373 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01374 
      Packit 03b34a
      01388 libnet_ptag_t
      Packit 03b34a
      01389 libnet_build_ospfv2(uint16_t len, uint8_t type, uint32_t rtr_id,
      Packit 03b34a
      01390 uint32_t area_id, uint16_t sum, uint16_t autype, const uint8_t* payload,
      Packit 03b34a
      01391 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01392 
      Packit 03b34a
      01407 libnet_ptag_t
      Packit 03b34a
      01408 libnet_build_ospfv2_hello(uint32_t netmask, uint16_t interval, uint8_t opts,
      Packit 03b34a
      01409 uint8_t priority, uint dead_int, uint32_t des_rtr, uint32_t bkup_rtr,
      Packit 03b34a
      01410 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01411  
      Packit 03b34a
      01423 libnet_ptag_t
      Packit 03b34a
      01424 libnet_build_ospfv2_dbd(uint16_t dgram_len, uint8_t opts, uint8_t type,
      Packit 03b34a
      01425 uint seqnum, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
      Packit 03b34a
      01426 libnet_ptag_t ptag);
      Packit 03b34a
      01427  
      Packit 03b34a
      01438 libnet_ptag_t
      Packit 03b34a
      01439 libnet_build_ospfv2_lsr(uint type, uint lsid, uint32_t advrtr,
      Packit 03b34a
      01440 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01441  
      Packit 03b34a
      01450 libnet_ptag_t
      Packit 03b34a
      01451 libnet_build_ospfv2_lsu(uint num, const uint8_t* payload, uint32_t payload_s,
      Packit 03b34a
      01452 libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01453 
      Packit 03b34a
      01469 libnet_ptag_t
      Packit 03b34a
      01470 libnet_build_ospfv2_lsa(uint16_t age, uint8_t opts, uint8_t type,
      Packit 03b34a
      01471 uint lsid, uint32_t advrtr, uint seqnum, uint16_t sum, uint16_t len,
      Packit 03b34a
      01472 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01473  
      Packit 03b34a
      01488 libnet_ptag_t
      Packit 03b34a
      01489 libnet_build_ospfv2_lsa_rtr(uint16_t flags, uint16_t num, uint id,
      Packit 03b34a
      01490 uint data, uint8_t type, uint8_t tos, uint16_t metric, const uint8_t* payload,
      Packit 03b34a
      01491 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01492  
      Packit 03b34a
      01502 libnet_ptag_t
      Packit 03b34a
      01503 libnet_build_ospfv2_lsa_net(uint32_t nmask, uint rtrid, const uint8_t* payload,
      Packit 03b34a
      01504 uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01505  
      Packit 03b34a
      01516 libnet_ptag_t
      Packit 03b34a
      01517 libnet_build_ospfv2_lsa_sum(uint32_t nmask, uint metric, uint tos,
      Packit 03b34a
      01518 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01519  
      Packit 03b34a
      01531 libnet_ptag_t
      Packit 03b34a
      01532 libnet_build_ospfv2_lsa_as(uint32_t nmask, uint metric, uint32_t fwdaddr,
      Packit 03b34a
      01533 uint tag, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
      Packit 03b34a
      01534 libnet_ptag_t ptag);
      Packit 03b34a
      01535 
      Packit 03b34a
      01547 libnet_ptag_t
      Packit 03b34a
      01548 libnet_build_data(const uint8_t* payload, uint32_t payload_s, libnet_t *l,
      Packit 03b34a
      01549 libnet_ptag_t ptag);
      Packit 03b34a
      01550 
      Packit 03b34a
      01572 libnet_ptag_t
      Packit 03b34a
      01573 libnet_build_dhcpv4(uint8_t opcode, uint8_t htype, uint8_t hlen,
      Packit 03b34a
      01574 uint8_t hopcount, uint32_t xid, uint16_t secs, uint16_t flags,
      Packit 03b34a
      01575 uint32_t cip, uint32_t yip,  uint32_t sip, uint32_t gip, const uint8_t *chaddr,
      Packit 03b34a
      01576 const char *sname, const char *file, const uint8_t* payload, uint32_t payload_s, 
      Packit 03b34a
      01577 libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01578 
      Packit 03b34a
      01600 libnet_ptag_t
      Packit 03b34a
      01601 libnet_build_bootpv4(uint8_t opcode, uint8_t htype, uint8_t hlen,
      Packit 03b34a
      01602 uint8_t hopcount, uint32_t xid, uint16_t secs, uint16_t flags,
      Packit 03b34a
      01603 uint32_t cip, uint32_t yip,  uint32_t sip, uint32_t gip, const uint8_t *chaddr,
      Packit 03b34a
      01604 const char *sname, const char *file, const uint8_t* payload, uint32_t payload_s, 
      Packit 03b34a
      01605 libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01606 
      Packit 03b34a
      01611 uint32_t
      Packit 03b34a
      01612 libnet_getgre_length(uint16_t fv);
      Packit 03b34a
      01613 
      Packit 03b34a
      01636 libnet_ptag_t
      Packit 03b34a
      01637 libnet_build_gre(uint16_t fv, uint16_t type, uint16_t sum,
      Packit 03b34a
      01638 uint16_t offset, uint32_t key, uint32_t seq, uint16_t len,
      Packit 03b34a
      01639 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01640 
      Packit 03b34a
      01662 libnet_ptag_t
      Packit 03b34a
      01663 libnet_build_egre(uint16_t fv, uint16_t type, uint16_t sum,
      Packit 03b34a
      01664 uint16_t offset, uint32_t key, uint32_t seq, uint16_t len,
      Packit 03b34a
      01665 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01666 
      Packit 03b34a
      01678 libnet_ptag_t
      Packit 03b34a
      01679 libnet_build_gre_sre(uint16_t af, uint8_t offset, uint8_t length,
      Packit 03b34a
      01680 uint8_t *routing, const uint8_t* payload, uint32_t payload_s, libnet_t *l,
      Packit 03b34a
      01681 libnet_ptag_t ptag);
      Packit 03b34a
      01682 
      Packit 03b34a
      01688 libnet_ptag_t
      Packit 03b34a
      01689 libnet_build_gre_last_sre(libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01690 
      Packit 03b34a
      01712 libnet_ptag_t
      Packit 03b34a
      01713 libnet_build_bgp4_header(uint8_t marker[LIBNET_BGP4_MARKER_SIZE],
      Packit 03b34a
      01714 uint16_t len, uint8_t type, const uint8_t* payload, uint32_t payload_s,
      Packit 03b34a
      01715 libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01716 
      Packit 03b34a
      01733 libnet_ptag_t
      Packit 03b34a
      01734 libnet_build_bgp4_open(uint8_t version, uint16_t src_as, uint16_t hold_time,
      Packit 03b34a
      01735 uint32_t bgp_id, uint8_t opt_len, const uint8_t* payload, uint32_t payload_s,
      Packit 03b34a
      01736 libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01737 
      Packit 03b34a
      01753 libnet_ptag_t
      Packit 03b34a
      01754 libnet_build_bgp4_update(uint16_t unfeasible_rt_len, const uint8_t *withdrawn_rt,
      Packit 03b34a
      01755 uint16_t total_path_attr_len, const uint8_t *path_attributes, uint16_t info_len,
      Packit 03b34a
      01756 uint8_t *reachability_info, const uint8_t* payload, uint32_t payload_s,
      Packit 03b34a
      01757 libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01758 
      Packit 03b34a
      01771 libnet_ptag_t
      Packit 03b34a
      01772 libnet_build_bgp4_notification(uint8_t err_code, uint8_t err_subcode,
      Packit 03b34a
      01773 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01774 
      Packit 03b34a
      01796 libnet_ptag_t
      Packit 03b34a
      01797 libnet_build_sebek(uint32_t magic, uint16_t version, uint16_t type, 
      Packit 03b34a
      01798 uint32_t counter, uint32_t time_sec, uint32_t time_usec, uint32_t pid,
      Packit 03b34a
      01799 uint32_t uid, uint32_t fd, uint8_t cmd[SEBEK_CMD_LENGTH], uint32_t length, 
      Packit 03b34a
      01800 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01801 
      Packit 03b34a
      01821 libnet_ptag_t
      Packit 03b34a
      01822 libnet_build_hsrp(uint8_t version, uint8_t opcode, uint8_t state, 
      Packit 03b34a
      01823 uint8_t hello_time, uint8_t hold_time, uint8_t priority, uint8_t group,
      Packit 03b34a
      01824 uint8_t reserved, uint8_t authdata[HSRP_AUTHDATA_LENGTH], uint32_t virtual_ip,
      Packit 03b34a
      01825 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01826 
      Packit 03b34a
      01841 libnet_ptag_t
      Packit 03b34a
      01842 libnet_build_link(const uint8_t *dst, const uint8_t *src, const uint8_t *oui, uint16_t type, 
      Packit 03b34a
      01843 const uint8_t* payload, uint32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      01844 
      Packit 03b34a
      01855 libnet_ptag_t
      Packit 03b34a
      01856 libnet_autobuild_link(const uint8_t *dst, const uint8_t *oui, uint16_t type,
      Packit 03b34a
      01857 libnet_t *l);
      Packit 03b34a
      01858 
      Packit 03b34a
      01871 int
      Packit 03b34a
      01872 libnet_write(libnet_t *l);
      Packit 03b34a
      01873 
      Packit 03b34a
      01883 uint32_t
      Packit 03b34a
      01884 libnet_get_ipaddr4(libnet_t *l);
      Packit 03b34a
      01885 
      Packit 03b34a
      01895 struct libnet_in6_addr
      Packit 03b34a
      01896 libnet_get_ipaddr6(libnet_t *l);
      Packit 03b34a
      01897 
      Packit 03b34a
      01906 struct libnet_ether_addr *
      Packit 03b34a
      01907 libnet_get_hwaddr(libnet_t *l);
      Packit 03b34a
      01908 
      Packit 03b34a
      01918 uint8_t *
      Packit 03b34a
      01919 libnet_hex_aton(const char *s, int *len);
      Packit 03b34a
      01920 
      Packit 03b34a
      01925 const char *
      Packit 03b34a
      01926 libnet_version(void);
      Packit 03b34a
      01927 
      Packit 03b34a
      01943 int
      Packit 03b34a
      01944 libnet_adv_cull_packet(libnet_t *l, uint8_t **packet, uint32_t *packet_s);
      Packit 03b34a
      01945 
      Packit 03b34a
      01958 int
      Packit 03b34a
      01959 libnet_adv_cull_header(libnet_t *l, libnet_ptag_t ptag, uint8_t **header,
      Packit 03b34a
      01960 uint32_t *header_s);
      Packit 03b34a
      01961 
      Packit 03b34a
      01975 int
      Packit 03b34a
      01976 libnet_adv_write_link(libnet_t *l, const uint8_t *packet, uint32_t packet_s);
      Packit 03b34a
      01977 
      Packit 03b34a
      01991 int
      Packit 03b34a
      01992 libnet_adv_write_raw_ipv4(libnet_t *l, const uint8_t *packet, uint32_t packet_s);
      Packit 03b34a
      01993 
      Packit 03b34a
      02000 void
      Packit 03b34a
      02001 libnet_adv_free_packet(libnet_t *l, uint8_t *packet);
      Packit 03b34a
      02002 
      Packit 03b34a
      02016 int 
      Packit 03b34a
      02017 libnet_cq_add(libnet_t *l, char *label);
      Packit 03b34a
      02018 
      Packit 03b34a
      02033 libnet_t *
      Packit 03b34a
      02034 libnet_cq_remove(libnet_t *l);
      Packit 03b34a
      02035 
      Packit 03b34a
      02047 libnet_t *
      Packit 03b34a
      02048 libnet_cq_remove_by_label(char *label);
      Packit 03b34a
      02049  
      Packit 03b34a
      02056 const char *
      Packit 03b34a
      02057 libnet_cq_getlabel(libnet_t *l);
      Packit 03b34a
      02058  
      Packit 03b34a
      02065 libnet_t *
      Packit 03b34a
      02066 libnet_cq_find_by_label(char *label);
      Packit 03b34a
      02067   
      Packit 03b34a
      02073 void
      Packit 03b34a
      02074 libnet_cq_destroy(void);
      Packit 03b34a
      02075 
      Packit 03b34a
      02095 libnet_t *
      Packit 03b34a
      02096 libnet_cq_head(void);
      Packit 03b34a
      02097 
      Packit 03b34a
      02103 int
      Packit 03b34a
      02104 libnet_cq_last(void);
      Packit 03b34a
      02105 
      Packit 03b34a
      02111 libnet_t *
      Packit 03b34a
      02112 libnet_cq_next(void);
      Packit 03b34a
      02113 
      Packit 03b34a
      02119 uint32_t
      Packit 03b34a
      02120 libnet_cq_size(void);
      Packit 03b34a
      02121 
      Packit 03b34a
      02125 uint32_t
      Packit 03b34a
      02126 libnet_cq_end_loop(void);
      Packit 03b34a
      02127 
      Packit 03b34a
      02133 void
      Packit 03b34a
      02134 libnet_diag_dump_context(libnet_t *l);
      Packit 03b34a
      02135 
      Packit 03b34a
      02141 void
      Packit 03b34a
      02142 libnet_diag_dump_pblock(libnet_t *l);
      Packit 03b34a
      02143 
      Packit 03b34a
      02150 char *
      Packit 03b34a
      02151 libnet_diag_dump_pblock_type(uint8_t type);
      Packit 03b34a
      02152 
      Packit 03b34a
      02166 void
      Packit 03b34a
      02167 libnet_diag_dump_hex(const uint8_t *packet, uint32_t len, int swap, FILE *stream);
      Packit 03b34a
      02168 
      Packit 03b34a
      02169 /*
      Packit 03b34a
      02170  * [Internal] 
      Packit 03b34a
      02171  */
      Packit 03b34a
      02172 int
      Packit 03b34a
      02173 libnet_write_raw_ipv4(libnet_t *l, const uint8_t *packet, uint32_t size);
      Packit 03b34a
      02174 
      Packit 03b34a
      02175 /*
      Packit 03b34a
      02176  * [Internal] 
      Packit 03b34a
      02177  */
      Packit 03b34a
      02178 int
      Packit 03b34a
      02179 libnet_write_raw_ipv6(libnet_t *l, const uint8_t *packet, uint32_t size);
      Packit 03b34a
      02180 
      Packit 03b34a
      02181 /*
      Packit 03b34a
      02182  * [Internal] 
      Packit 03b34a
      02183  */
      Packit 03b34a
      02184 int
      Packit 03b34a
      02185 libnet_write_link(libnet_t *l, const uint8_t *packet, uint32_t size);
      Packit 03b34a
      02186 
      Packit 03b34a
      02187 #if ((__WIN32__) && !(__CYGWIN__))
      Packit 03b34a
      02188 /*
      Packit 03b34a
      02189  * [Internal] 
      Packit 03b34a
      02190  */
      Packit 03b34a
      02191 SOCKET
      Packit 03b34a
      02192 libnet_open_raw4(libnet_t *l);
      Packit 03b34a
      02193 #else
      Packit 03b34a
      02194 /*
      Packit 03b34a
      02195  * [Internal] 
      Packit 03b34a
      02196  */
      Packit 03b34a
      02197 int
      Packit 03b34a
      02198 libnet_open_raw4(libnet_t *l);
      Packit 03b34a
      02199 #endif
      Packit 03b34a
      02200 
      Packit 03b34a
      02201 /*
      Packit 03b34a
      02202  * [Internal] 
      Packit 03b34a
      02203  */
      Packit 03b34a
      02204 int
      Packit 03b34a
      02205 libnet_close_raw4(libnet_t *l);
      Packit 03b34a
      02206 
      Packit 03b34a
      02207 /*
      Packit 03b34a
      02208  * [Internal] 
      Packit 03b34a
      02209  */
      Packit 03b34a
      02210 int
      Packit 03b34a
      02211 libnet_open_raw6(libnet_t *l);
      Packit 03b34a
      02212        
      Packit 03b34a
      02213 /*
      Packit 03b34a
      02214  * [Internal] 
      Packit 03b34a
      02215  */
      Packit 03b34a
      02216 int
      Packit 03b34a
      02217 libnet_close_raw6(libnet_t *l);
      Packit 03b34a
      02218 
      Packit 03b34a
      02219 /*
      Packit 03b34a
      02220  * [Internal] 
      Packit 03b34a
      02221  */
      Packit 03b34a
      02222 int
      Packit 03b34a
      02223 libnet_select_device(libnet_t *l);
      Packit 03b34a
      02224 
      Packit 03b34a
      02225 /*
      Packit 03b34a
      02226  * [Internal] 
      Packit 03b34a
      02227  */
      Packit 03b34a
      02228 int
      Packit 03b34a
      02229 libnet_open_link(libnet_t *l);
      Packit 03b34a
      02230 
      Packit 03b34a
      02231 /*
      Packit 03b34a
      02232  * [Internal] 
      Packit 03b34a
      02233  */
      Packit 03b34a
      02234 int
      Packit 03b34a
      02235 libnet_close_link(libnet_t *l);
      Packit 03b34a
      02236 
      Packit 03b34a
      02237 /*
      Packit 03b34a
      02238  * [Internal]
      Packit 03b34a
      02239  *   THIS FUNCTION IS BROKEN. IT WILL SEGFAULT OR CORRUPT MEMORY, OR JUST SILENTLY DO THE
      Packit 03b34a
      02240  *   WRONG THING IF NOT CALLED CORRECTLY, AND CALLING IT CORRECTLY IS UNDOCUMENTED, AND
      Packit 03b34a
      02241  *   ALMOST IMPOSSIBLE. YOU HAVE BEEN WARNED.
      Packit 03b34a
      02242  */
      Packit 03b34a
      02243 int
      Packit 03b34a
      02244 libnet_do_checksum(libnet_t *l, uint8_t *iphdr, int protocol, int h_len);
      Packit 03b34a
      02245 
      Packit 03b34a
      02246 /* Calculate internet checksums.
      Packit 03b34a
      02247  *
      Packit 03b34a
      02248  * IP (TCP, UDP, IGMP, ICMP, etc...) checksums usually need information from
      Packit 03b34a
      02249  * the IP header to construct the "pseudo header", this function takes a
      Packit 03b34a
      02250  * pointer to that header, the buffer boundaries, the "h_len" (see pblock_t for
      Packit 03b34a
      02251  * a description, it is increasinly unused, though, and I'm trying to remove it
      Packit 03b34a
      02252  * altogether), and the protocol number for the protocol that is to be
      Packit 03b34a
      02253  * checksummed.
      Packit 03b34a
      02254  *
      Packit 03b34a
      02255  * Finding that protocol requires that the IP header be well-formed... so this
      Packit 03b34a
      02256  * won't work well for invalid packets. But then, what is the valid checksum
      Packit 03b34a
      02257  * for a valid packet, anyhow?
      Packit 03b34a
      02258  *
      Packit 03b34a
      02259  * This doesn't work well for non-inet checksums, sorry, that's an original design
      Packit 03b34a
      02260  * flaw. pblock_t needs a pointer in it, to a packet assembly function that can be
      Packit 03b34a
      02261  * called at runtime to do assembly and checksumming.
      Packit 03b34a
      02262  */
      Packit 03b34a
      02263 int
      Packit 03b34a
      02264 libnet_inet_checksum(libnet_t *l, uint8_t *iphdr, int protocol, int h_len, const uint8_t *beg, const uint8_t * end);
      Packit 03b34a
      02265 
      Packit 03b34a
      02266 /*
      Packit 03b34a
      02267  * [Internal] 
      Packit 03b34a
      02268  */
      Packit 03b34a
      02269 uint32_t
      Packit 03b34a
      02270 libnet_compute_crc(uint8_t *buf, uint32_t len);
      Packit 03b34a
      02271 
      Packit 03b34a
      02272 /*
      Packit 03b34a
      02273  * [Internal] 
      Packit 03b34a
      02274  */
      Packit 03b34a
      02275 uint16_t
      Packit 03b34a
      02276 libnet_ip_check(uint16_t *addr, int len);
      Packit 03b34a
      02277 
      Packit 03b34a
      02278 /*
      Packit 03b34a
      02279  * [Internal] 
      Packit 03b34a
      02280  */
      Packit 03b34a
      02281 int
      Packit 03b34a
      02282 libnet_in_cksum(uint16_t *addr, int len);
      Packit 03b34a
      02283 
      Packit 03b34a
      02284 /*
      Packit 03b34a
      02285  * [Internal] 
      Packit 03b34a
      02286  * If ptag is 0, function will create a pblock for the protocol unit type,
      Packit 03b34a
      02287  * append it to the list and return a pointer to it.  If ptag is not 0,
      Packit 03b34a
      02288  * function will search the pblock list for the specified protocol block 
      Packit 03b34a
      02289  * and return a pointer to it.
      Packit 03b34a
      02290  */
      Packit 03b34a
      02291 libnet_pblock_t *
      Packit 03b34a
      02292 libnet_pblock_probe(libnet_t *l, libnet_ptag_t ptag, uint32_t b_len, 
      Packit 03b34a
      02293 uint8_t type);
      Packit 03b34a
      02294 
      Packit 03b34a
      02295 /*
      Packit 03b34a
      02296  * [Internal] 
      Packit 03b34a
      02297  * Function creates the pblock list if l->protocol_blocks == NULL or appends
      Packit 03b34a
      02298  * an entry to the doubly linked list.
      Packit 03b34a
      02299  */
      Packit 03b34a
      02300 libnet_pblock_t *
      Packit 03b34a
      02301 libnet_pblock_new(libnet_t *l, uint32_t b_len);
      Packit 03b34a
      02302 
      Packit 03b34a
      02303 /*
      Packit 03b34a
      02304  * [Internal] 
      Packit 03b34a
      02305  * Function swaps two pblocks in memory.
      Packit 03b34a
      02306  */
      Packit 03b34a
      02307 int
      Packit 03b34a
      02308 libnet_pblock_swap(libnet_t *l, libnet_ptag_t ptag1, libnet_ptag_t ptag2);
      Packit 03b34a
      02309 
      Packit 03b34a
      02310 /*
      Packit 03b34a
      02311  * [Internal] 
      Packit 03b34a
      02312  * Function inserts ptag2 before ptag1 in the doubly linked list.
      Packit 03b34a
      02313  */
      Packit 03b34a
      02314 int
      Packit 03b34a
      02315 libnet_pblock_insert_before(libnet_t *l, libnet_ptag_t ptag1,
      Packit 03b34a
      02316 libnet_ptag_t ptag2);
      Packit 03b34a
      02317 
      Packit 03b34a
      02318 /*
      Packit 03b34a
      02319  * [Internal] 
      Packit 03b34a
      02320  * Function removes a pblock from context 
      Packit 03b34a
      02321  */
      Packit 03b34a
      02322 void
      Packit 03b34a
      02323 libnet_pblock_delete(libnet_t *l, libnet_pblock_t *p);
      Packit 03b34a
      02324 
      Packit 03b34a
      02325 /*
      Packit 03b34a
      02326  * [Internal] 
      Packit 03b34a
      02327  * Function updates the pblock meta-inforation.  Internally it updates the
      Packit 03b34a
      02328  * ptag with a monotonically increasing variable kept in l.  This way each
      Packit 03b34a
      02329  * pblock has a succesively increasing ptag identifier.
      Packit 03b34a
      02330  */
      Packit 03b34a
      02331 libnet_ptag_t
      Packit 03b34a
      02332 libnet_pblock_update(libnet_t *l, libnet_pblock_t *p, uint32_t h, uint8_t type);
      Packit 03b34a
      02333 
      Packit 03b34a
      02334 
      Packit 03b34a
      02335 /*
      Packit 03b34a
      02336  * [Internal] 
      Packit 03b34a
      02337  * Function locates a given block by it's ptag. 
      Packit 03b34a
      02338  */
      Packit 03b34a
      02339 libnet_pblock_t *
      Packit 03b34a
      02340 libnet_pblock_find(libnet_t *l, libnet_ptag_t ptag);
      Packit 03b34a
      02341 
      Packit 03b34a
      02342 /*
      Packit 03b34a
      02343  * [Internal] 
      Packit 03b34a
      02344  * Function copies protocol block data over.
      Packit 03b34a
      02345  */
      Packit 03b34a
      02346 int
      Packit 03b34a
      02347 libnet_pblock_append(libnet_t *l, libnet_pblock_t *p, const void *buf, uint32_t len);
      Packit 03b34a
      02348 
      Packit 03b34a
      02349 /*
      Packit 03b34a
      02350  * [Internal] 
      Packit 03b34a
      02351  * Function sets pblock flags.
      Packit 03b34a
      02352  */
      Packit 03b34a
      02353 void
      Packit 03b34a
      02354 libnet_pblock_setflags(libnet_pblock_t *p, uint8_t flags);
      Packit 03b34a
      02355 
      Packit 03b34a
      02356 /*
      Packit 03b34a
      02357  * [Internal] 
      Packit 03b34a
      02358  * Function returns the protocol number for the protocol block type.  If
      Packit 03b34a
      02359  * the type is unknown, the function defaults to returning IPPROTO_IP.
      Packit 03b34a
      02360  */
      Packit 03b34a
      02361 int
      Packit 03b34a
      02362 libnet_pblock_p2p(uint8_t type);
      Packit 03b34a
      02363 
      Packit 03b34a
      02364 /*
      Packit 03b34a
      02365  * [Internal] 
      Packit 03b34a
      02366  * Function assembles the protocol blocks into a packet, checksums are
      Packit 03b34a
      02367  * calculated if that was requested.
      Packit 03b34a
      02368  */
      Packit 03b34a
      02369 int
      Packit 03b34a
      02370 libnet_pblock_coalesce(libnet_t *l, uint8_t **packet, uint32_t *size);
      Packit 03b34a
      02371 
      Packit 03b34a
      02372 #if !(__WIN32__)
      Packit 03b34a
      02373 /*
      Packit 03b34a
      02374  * [Internal] 
      Packit 03b34a
      02375  * By testing if we can retrieve the FLAGS of an iface
      Packit 03b34a
      02376  * we can know if it exists or not and if it is up.
      Packit 03b34a
      02377  */
      Packit 03b34a
      02378 int
      Packit 03b34a
      02379 libnet_check_iface(libnet_t *l);
      Packit 03b34a
      02380 #endif
      Packit 03b34a
      02381 
      Packit 03b34a
      02382 #if defined(__WIN32__)
      Packit 03b34a
      02383 /*
      Packit 03b34a
      02384  * [Internal] 
      Packit 03b34a
      02385  */
      Packit 03b34a
      02386 BYTE *
      Packit 03b34a
      02387 libnet_win32_get_remote_mac(libnet_t *l, DWORD IP);
      Packit 03b34a
      02388 
      Packit 03b34a
      02389 /*
      Packit 03b34a
      02390  * [Internal] 
      Packit 03b34a
      02391  */
      Packit 03b34a
      02392 int
      Packit 03b34a
      02393 libnet_close_link_interface(libnet_t *l);
      Packit 03b34a
      02394 
      Packit 03b34a
      02395 /*
      Packit 03b34a
      02396  * [Internal] 
      Packit 03b34a
      02397  */
      Packit 03b34a
      02398 BYTE * 
      Packit 03b34a
      02399 libnet_win32_read_arp_table(DWORD IP);
      Packit 03b34a
      02400 #endif
      Packit 03b34a
      02401 #endif  /* __LIBNET_FUNCTIONS_H */
      Packit 03b34a
      02402 
      Packit 03b34a
      02403 /* EOF */
      Packit 03b34a
      Packit 03b34a
      Packit 03b34a

      <address class="footer"><small>Generated on Thu Mar 29 2012 14:19:18 for libnet by 
      Packit 03b34a
      Packit 03b34a
      doxygen 1.7.4 </small></address>
      Packit 03b34a
      </body>
      Packit 03b34a
      </html>