Ticket #1050: modified_bsd_headers.patch

File modified_bsd_headers.patch, 26.8 KB (added by tqh, 16 years ago)

modifications to src/libs/compat/freebsd_network/

  • src/libs/compat/freebsd_network/compat/machine/atomic.h

     
    2020
    2121#define atomic_set_int(ptr, value) \
    2222    atomic_or((int32 *)(ptr), value);
    23 
     23   
     24//Untested but suggested by Ingo /TQH
     25//Compare
     26// http://fxr.watson.org/fxr/source/i386/include/atomic.h?im=bigexcerpts#L145
     27//to
     28// http://haiku.it.su.se:8180/source/xref/src/system/libroot/os/arch/x86/atomic.S
     29static inline int
     30atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src)
     31{
     32    return atomic_test_and_set((vint32*)dst, src, exp) == exp;
     33}
     34   
    2435#endif  /* _FBSD_COMPAT_MACHINE_ATOMIC_H_ */
  • src/libs/compat/freebsd_network/compat/net/if_media.h

     
    11/*  $NetBSD: if_media.h,v 1.3 1997/03/26 01:19:27 thorpej Exp $ */
    2 /* $FreeBSD: src/sys/net/if_media.h,v 1.30.2.3 2006/08/10 10:21:00 glebius Exp $ */
     2/* $FreeBSD: src/sys/net/if_media.h,v 1.42 2008/04/20 16:17:44 antoine Exp $ */
    33
    44/*-
    55 * Copyright (c) 1997
     
    144144#define IFM_10G_LR  18      /* 10GBase-LR 1310nm Single-mode */
    145145#define IFM_10G_SR  19      /* 10GBase-SR 850nm Multi-mode */
    146146#define IFM_10G_CX4 20      /* 10GBase CX4 copper */
     147#define IFM_2500_SX 21      /* 2500BaseSX - multi-mode fiber */
    147148
    148149/* note 31 is the max! */
    149150
     
    198199#define IFM_IEEE80211_OFDM72    18  /* OFDM 72Mbps */
    199200#define IFM_IEEE80211_DS354k    19  /* Direct Sequence 354Kbps */
    200201#define IFM_IEEE80211_DS512k    20  /* Direct Sequence 512Kbps */
     202#define IFM_IEEE80211_OFDM3 21  /* OFDM 3Mbps */
     203#define IFM_IEEE80211_OFDM4 22  /* OFDM 4.5Mbps */
     204#define IFM_IEEE80211_OFDM27    23  /* OFDM 27Mbps */
     205/* NB: not enough bits to express MCS fully */
     206#define IFM_IEEE80211_MCS   24  /* HT MCS rate */
    201207
    202208#define IFM_IEEE80211_ADHOC 0x00000100  /* Operate in Adhoc mode */
    203209#define IFM_IEEE80211_HOSTAP    0x00000200  /* Operate in Host AP mode */
    204210#define IFM_IEEE80211_IBSS  0x00000400  /* Operate in IBSS mode */
    205 #define IFM_IEEE80211_IBSSMASTER 0x00000800 /* Operate as an IBSS master */
     211#define IFM_IEEE80211_WDS   0x00000800  /* Operate in WDS mode */
    206212#define IFM_IEEE80211_TURBO 0x00001000  /* Operate in turbo mode */
    207213#define IFM_IEEE80211_MONITOR   0x00002000  /* Operate in monitor mode */
    208214
     
    211217#define IFM_IEEE80211_11B   0x00020000  /* Direct Sequence mode */
    212218#define IFM_IEEE80211_11G   0x00030000  /* 2Ghz, CCK mode */
    213219#define IFM_IEEE80211_FH    0x00040000  /* 2Ghz, GFSK mode */
     220#define IFM_IEEE80211_11NA  0x00050000  /* 5Ghz, HT mode */
     221#define IFM_IEEE80211_11NG  0x00060000  /* 2Ghz, HT mode */
    214222
    215223/*
    216224 * ATM
     
    336344    { IFM_1000_LX,  "1000baseLX" },                 \
    337345    { IFM_1000_CX,  "1000baseCX" },                 \
    338346    { IFM_1000_T,   "1000baseTX" },                 \
    339     { IFM_1000_T,   "1000baseT" },                  \
    340347    { IFM_HPNA_1,   "homePNA" },                    \
    341348    { IFM_10G_LR,   "10Gbase-LR" },                 \
    342349    { IFM_10G_SR,   "10Gbase-SR" },                 \
    343350    { IFM_10G_CX4,  "10Gbase-CX4" },                \
     351    { IFM_2500_SX,  "2500BaseSX" },                 \
    344352    { 0, NULL },                            \
    345353}
    346354
     
    360368    { IFM_1000_SX,  "1000SX" },                 \
    361369    { IFM_1000_LX,  "1000LX" },                 \
    362370    { IFM_1000_CX,  "1000CX" },                 \
     371    { IFM_1000_T,   "1000baseT" },                  \
    363372    { IFM_1000_T,   "1000TX" },                 \
    364373    { IFM_1000_T,   "1000T" },                  \
     374    { IFM_2500_SX,  "2500SX" },                 \
    365375    { 0, NULL },                            \
    366376}
    367377
     
    437447    { IFM_IEEE80211_OFDM72, "OFDM/72Mbps" },            \
    438448    { IFM_IEEE80211_DS354k, "DS/354Kbps" },             \
    439449    { IFM_IEEE80211_DS512k, "DS/512Kbps" },             \
     450    { IFM_IEEE80211_OFDM3, "OFDM/3Mbps" },              \
     451    { IFM_IEEE80211_OFDM4, "OFDM/4.5Mbps" },            \
     452    { IFM_IEEE80211_OFDM27, "OFDM/27Mbps" },            \
    440453    { 0, NULL },                            \
    441454}
    442455
     
    472485    { IFM_IEEE80211_DS354k, "DirectSequence/354Kbps" },     \
    473486    { IFM_IEEE80211_DS512k, "DS512K" },             \
    474487    { IFM_IEEE80211_DS512k, "DirectSequence/512Kbps" },     \
     488    { IFM_IEEE80211_OFDM3, "OFDM3" },               \
     489    { IFM_IEEE80211_OFDM4, "OFDM4.5" },             \
     490    { IFM_IEEE80211_OFDM27, "OFDM27" },             \
    475491    { 0, NULL },                            \
    476492}
    477493
     
    479495    { IFM_IEEE80211_ADHOC, "adhoc" },               \
    480496    { IFM_IEEE80211_HOSTAP, "hostap" },             \
    481497    { IFM_IEEE80211_IBSS, "ibss" },                 \
    482     { IFM_IEEE80211_IBSSMASTER, "ibss-master" },            \
     498    { IFM_IEEE80211_WDS, "wds" },                   \
    483499    { IFM_IEEE80211_TURBO, "turbo" },               \
    484500    { IFM_IEEE80211_MONITOR, "monitor" },               \
    485501    { 0, NULL },                            \
     
    491507    { IFM_IEEE80211_11B, "11b" },                   \
    492508    { IFM_IEEE80211_11G, "11g" },                   \
    493509    { IFM_IEEE80211_FH, "fh" },                 \
     510    { IFM_IEEE80211_11NA, "11na" },                 \
     511    { IFM_IEEE80211_11NG, "11ng" },                 \
    494512    { 0, NULL },                            \
    495513}
    496514
     
    584602    { IFM_ETHER | IFM_10G_LR,   IF_Gbps(10ULL) },       \
    585603    { IFM_ETHER | IFM_10G_SR,   IF_Gbps(10ULL) },       \
    586604    { IFM_ETHER | IFM_10G_CX4,  IF_Gbps(10ULL) },       \
     605    { IFM_ETHER | IFM_2500_SX,  IF_Mbps(2500ULL) },     \
    587606                                    \
    588607    { IFM_TOKEN | IFM_TOK_STP4, IF_Mbps(4) },           \
    589608    { IFM_TOKEN | IFM_TOK_STP16,    IF_Mbps(16) },          \
  • src/libs/compat/freebsd_network/compat/net/bpf.h

     
    1414    return 0;
    1515}
    1616
     17typedef int32_t   bpf_int32;
     18typedef u_int32_t bpf_u_int32;
     19
     20/*
     21 * Data-link level type codes.
     22 */
     23#define DLT_NULL    0   /* BSD loopback encapsulation */
     24#define DLT_EN10MB  1   /* Ethernet (10Mb) */
     25#define DLT_EN3MB   2   /* Experimental Ethernet (3Mb) */
     26#define DLT_AX25    3   /* Amateur Radio AX.25 */
     27#define DLT_PRONET  4   /* Proteon ProNET Token Ring */
     28#define DLT_CHAOS   5   /* Chaos */
     29#define DLT_IEEE802 6   /* IEEE 802 Networks */
     30#define DLT_ARCNET  7   /* ARCNET */
     31#define DLT_SLIP    8   /* Serial Line IP */
     32#define DLT_PPP     9   /* Point-to-point Protocol */
     33#define DLT_FDDI    10  /* FDDI */
     34#define DLT_ATM_RFC1483 11  /* LLC/SNAP encapsulated atm */
     35#define DLT_RAW     12  /* raw IP */
     36
     37/*
     38 * These are values from BSD/OS's "bpf.h".
     39 * These are not the same as the values from the traditional libpcap
     40 * "bpf.h"; however, these values shouldn't be generated by any
     41 * OS other than BSD/OS, so the correct values to use here are the
     42 * BSD/OS values.
     43 *
     44 * Platforms that have already assigned these values to other
     45 * DLT_ codes, however, should give these codes the values
     46 * from that platform, so that programs that use these codes will
     47 * continue to compile - even though they won't correctly read
     48 * files of these types.
     49 */
     50#define DLT_SLIP_BSDOS  15  /* BSD/OS Serial Line IP */
     51#define DLT_PPP_BSDOS   16  /* BSD/OS Point-to-point Protocol */
     52
     53#define DLT_ATM_CLIP    19  /* Linux Classical-IP over ATM */
     54
     55/*
     56 * These values are defined by NetBSD; other platforms should refrain from
     57 * using them for other purposes, so that NetBSD savefiles with link
     58 * types of 50 or 51 can be read as this type on all platforms.
     59 */
     60#define DLT_PPP_SERIAL  50  /* PPP over serial with HDLC encapsulation */
     61#define DLT_PPP_ETHER   51  /* PPP over Ethernet */
     62
     63/*
     64 * Reserved for the Symantec Enterprise Firewall.
     65 */
     66#define DLT_SYMANTEC_FIREWALL   99
     67
     68
     69/*
     70 * This value was defined by libpcap 0.5; platforms that have defined
     71 * it with a different value should define it here with that value -
     72 * a link type of 104 in a save file will be mapped to DLT_C_HDLC,
     73 * whatever value that happens to be, so programs will correctly
     74 * handle files with that link type regardless of the value of
     75 * DLT_C_HDLC.
     76 *
     77 * The name DLT_C_HDLC was used by BSD/OS; we use that name for source
     78 * compatibility with programs written for BSD/OS.
     79 *
     80 * libpcap 0.5 defined it as DLT_CHDLC; we define DLT_CHDLC as well,
     81 * for source compatibility with programs written for libpcap 0.5.
     82 */
     83#define DLT_C_HDLC  104 /* Cisco HDLC */
     84#define DLT_CHDLC   DLT_C_HDLC
     85
     86#define DLT_IEEE802_11  105 /* IEEE 802.11 wireless */
     87
     88/*
     89 * Values between 106 and 107 are used in capture file headers as
     90 * link-layer types corresponding to DLT_ types that might differ
     91 * between platforms; don't use those values for new DLT_ new types.
     92 */
     93
     94/*
     95 * Frame Relay; BSD/OS has a DLT_FR with a value of 11, but that collides
     96 * with other values.
     97 * DLT_FR and DLT_FRELAY packets start with the Q.922 Frame Relay header
     98 * (DLCI, etc.).
     99 */
     100#define DLT_FRELAY  107
     101
     102/*
     103 * OpenBSD DLT_LOOP, for loopback devices; it's like DLT_NULL, except
     104 * that the AF_ type in the link-layer header is in network byte order.
     105 *
     106 * OpenBSD defines it as 12, but that collides with DLT_RAW, so we
     107 * define it as 108 here.  If OpenBSD picks up this file, it should
     108 * define DLT_LOOP as 12 in its version, as per the comment above -
     109 * and should not use 108 as a DLT_ value.
     110 */
     111#define DLT_LOOP    108
     112
     113/*
     114 * Values between 109 and 112 are used in capture file headers as
     115 * link-layer types corresponding to DLT_ types that might differ
     116 * between platforms; don't use those values for new DLT_ new types.
     117 */
     118
     119/*
     120 * Encapsulated packets for IPsec; DLT_ENC is 13 in OpenBSD, but that's
     121 * DLT_SLIP_BSDOS in NetBSD, so we don't use 13 for it in OSes other
     122 * than OpenBSD.
     123 */
     124#define DLT_ENC 109
     125
     126/*
     127 * This is for Linux cooked sockets.
     128 */
     129#define DLT_LINUX_SLL   113
     130
     131/*
     132 * Apple LocalTalk hardware.
     133 */
     134#define DLT_LTALK   114
     135
     136/*
     137 * Acorn Econet.
     138 */
     139#define DLT_ECONET  115
     140
     141/*
     142 * Reserved for use with OpenBSD ipfilter.
     143 */
     144#define DLT_IPFILTER    116
     145
     146/*
     147 * Reserved for use in capture-file headers as a link-layer type
     148 * corresponding to OpenBSD DLT_PFLOG; DLT_PFLOG is 17 in OpenBSD,
     149 * but that's DLT_LANE8023 in SuSE 6.3, so we can't use 17 for it
     150 * in capture-file headers.
     151 */
     152#define DLT_PFLOG   117
     153
     154/*
     155 * Registered for Cisco-internal use.
     156 */
     157#define DLT_CISCO_IOS   118
     158
     159/*
     160 * Reserved for 802.11 cards using the Prism II chips, with a link-layer
     161 * header including Prism monitor mode information plus an 802.11
     162 * header.
     163 */
     164#define DLT_PRISM_HEADER    119
     165
     166/*
     167 * Reserved for Aironet 802.11 cards, with an Aironet link-layer header
     168 * (see Doug Ambrisko's FreeBSD patches).
     169 */
     170#define DLT_AIRONET_HEADER  120
     171
     172/*
     173 * Reserved for use by OpenBSD's pfsync device.
     174 */
     175#define DLT_PFSYNC  121
     176
     177/*
     178 * Reserved for Siemens HiPath HDLC. XXX
     179 */
     180#define DLT_HHDLC   121
     181
     182/*
     183 * Reserved for RFC 2625 IP-over-Fibre Channel.
     184 */
     185#define DLT_IP_OVER_FC  122
     186
     187/*
     188 * Reserved for Full Frontal ATM on Solaris.
     189 */
     190#define DLT_SUNATM  123
     191
     192/*
     193 * Reserved as per request from Kent Dahlgren <kent@praesum.com>
     194 * for private use.
     195 */
     196#define DLT_RIO     124 /* RapidIO */
     197#define DLT_PCI_EXP 125 /* PCI Express */
     198#define DLT_AURORA  126 /* Xilinx Aurora link layer */
     199
     200/*
     201 * BSD header for 802.11 plus a number of bits of link-layer information
     202 * including radio information.
     203 */
     204#ifndef DLT_IEEE802_11_RADIO
     205#define DLT_IEEE802_11_RADIO    127
     206#endif
     207
     208/*
     209 * Reserved for TZSP encapsulation.
     210 */
     211#define DLT_TZSP        128 /* Tazmen Sniffer Protocol */
     212
     213/*
     214 * Reserved for Linux ARCNET.
     215 */
     216#define DLT_ARCNET_LINUX    129
     217
     218/*
     219 * Juniper-private data link types.
     220 */
     221#define DLT_JUNIPER_MLPPP   130
     222#define DLT_JUNIPER_MLFR    131
     223#define DLT_JUNIPER_ES      132
     224#define DLT_JUNIPER_GGSN    133
     225#define DLT_JUNIPER_MFR     134
     226#define DLT_JUNIPER_ATM2    135
     227#define DLT_JUNIPER_SERVICES    136
     228#define DLT_JUNIPER_ATM1    137
     229
     230/*
     231 * Apple IP-over-IEEE 1394, as per a request from Dieter Siegmund
     232 * <dieter@apple.com>.  The header that's presented is an Ethernet-like
     233 * header:
     234 *
     235 *  #define FIREWIRE_EUI64_LEN  8
     236 *  struct firewire_header {
     237 *      u_char  firewire_dhost[FIREWIRE_EUI64_LEN];
     238 *      u_char  firewire_shost[FIREWIRE_EUI64_LEN];
     239 *      u_short firewire_type;
     240 *  };
     241 *
     242 * with "firewire_type" being an Ethernet type value, rather than,
     243 * for example, raw GASP frames being handed up.
     244 */
     245#define DLT_APPLE_IP_OVER_IEEE1394  138
     246
     247/*
     248 * Various SS7 encapsulations, as per a request from Jeff Morriss
     249 * <jeff.morriss[AT]ulticom.com> and subsequent discussions.
     250 */
     251#define DLT_MTP2_WITH_PHDR  139 /* pseudo-header with various info, followed by MTP2 */
     252#define DLT_MTP2        140 /* MTP2, without pseudo-header */
     253#define DLT_MTP3        141 /* MTP3, without pseudo-header or MTP2 */
     254#define DLT_SCCP        142 /* SCCP, without pseudo-header or MTP2 or MTP3 */
     255
     256/*
     257 * Reserved for DOCSIS.
     258 */
     259#define DLT_DOCSIS  143
     260
     261/*
     262 * Reserved for Linux IrDA.
     263 */
     264#define DLT_LINUX_IRDA  144
     265
     266/*
     267 * Reserved for IBM SP switch and IBM Next Federation switch.
     268 */
     269#define DLT_IBM_SP  145
     270#define DLT_IBM_SN  146
     271
     272/*
     273 * Reserved for private use.  If you have some link-layer header type
     274 * that you want to use within your organization, with the capture files
     275 * using that link-layer header type not ever be sent outside your
     276 * organization, you can use these values.
     277 *
     278 * No libpcap release will use these for any purpose, nor will any
     279 * tcpdump release use them, either.
     280 *
     281 * Do *NOT* use these in capture files that you expect anybody not using
     282 * your private versions of capture-file-reading tools to read; in
     283 * particular, do *NOT* use them in products, otherwise you may find that
     284 * people won't be able to use tcpdump, or snort, or Ethereal, or... to
     285 * read capture files from your firewall/intrusion detection/traffic
     286 * monitoring/etc. appliance, or whatever product uses that DLT_ value,
     287 * and you may also find that the developers of those applications will
     288 * not accept patches to let them read those files.
     289 *
     290 * Also, do not use them if somebody might send you a capture using them
     291 * for *their* private type and tools using them for *your* private type
     292 * would have to read them.
     293 *
     294 * Instead, ask "tcpdump-workers@tcpdump.org" for a new DLT_ value,
     295 * as per the comment above, and use the type you're given.
     296 */
     297#define DLT_USER0       147
     298#define DLT_USER1       148
     299#define DLT_USER2       149
     300#define DLT_USER3       150
     301#define DLT_USER4       151
     302#define DLT_USER5       152
     303#define DLT_USER6       153
     304#define DLT_USER7       154
     305#define DLT_USER8       155
     306#define DLT_USER9       156
     307#define DLT_USER10      157
     308#define DLT_USER11      158
     309#define DLT_USER12      159
     310#define DLT_USER13      160
     311#define DLT_USER14      161
     312#define DLT_USER15      162
     313
     314/*
     315 * For future use with 802.11 captures - defined by AbsoluteValue
     316 * Systems to store a number of bits of link-layer information
     317 * including radio information:
     318 *
     319 *  http://www.shaftnet.org/~pizza/software/capturefrm.txt
     320 *
     321 * but it might be used by some non-AVS drivers now or in the
     322 * future.
     323 */
     324#define DLT_IEEE802_11_RADIO_AVS 163    /* 802.11 plus AVS radio header */
     325
     326/*
     327 * Juniper-private data link type, as per request from
     328 * Hannes Gredler <hannes@juniper.net>.  The DLT_s are used
     329 * for passing on chassis-internal metainformation such as
     330 * QOS profiles, etc..
     331 */
     332#define DLT_JUNIPER_MONITOR     164
     333
     334/*
     335 * Reserved for BACnet MS/TP.
     336 */
     337#define DLT_BACNET_MS_TP    165
     338
     339/*
     340 * Another PPP variant as per request from Karsten Keil <kkeil@suse.de>.
     341 *
     342 * This is used in some OSes to allow a kernel socket filter to distinguish
     343 * between incoming and outgoing packets, on a socket intended to
     344 * supply pppd with outgoing packets so it can do dial-on-demand and
     345 * hangup-on-lack-of-demand; incoming packets are filtered out so they
     346 * don't cause pppd to hold the connection up (you don't want random
     347 * input packets such as port scans, packets from old lost connections,
     348 * etc. to force the connection to stay up).
     349 *
     350 * The first byte of the PPP header (0xff03) is modified to accomodate
     351 * the direction - 0x00 = IN, 0x01 = OUT.
     352 */
     353#define DLT_PPP_PPPD        166
     354
     355/*
     356 * Names for backwards compatibility with older versions of some PPP
     357 * software; new software should use DLT_PPP_PPPD.
     358 */
     359#define DLT_PPP_WITH_DIRECTION  DLT_PPP_PPPD
     360#define DLT_LINUX_PPP_WITHDIRECTION DLT_PPP_PPPD
     361
     362/*
     363 * Juniper-private data link type, as per request from
     364 * Hannes Gredler <hannes@juniper.net>.  The DLT_s are used
     365 * for passing on chassis-internal metainformation such as
     366 * QOS profiles, cookies, etc..
     367 */
     368#define DLT_JUNIPER_PPPOE       167
     369#define DLT_JUNIPER_PPPOE_ATM   168
     370
     371#define DLT_GPRS_LLC        169 /* GPRS LLC */
     372#define DLT_GPF_T       170 /* GPF-T (ITU-T G.7041/Y.1303) */
     373#define DLT_GPF_F       171 /* GPF-F (ITU-T G.7041/Y.1303) */
     374
     375/*
     376 * Requested by Oolan Zimmer <oz@gcom.com> for use in Gcom's T1/E1 line
     377 * monitoring equipment.
     378 */
     379#define DLT_GCOM_T1E1       172
     380#define DLT_GCOM_SERIAL     173
     381
     382/*
     383 * Juniper-private data link type, as per request from
     384 * Hannes Gredler <hannes@juniper.net>.  The DLT_ is used
     385 * for internal communication to Physical Interface Cards (PIC)
     386 */
     387#define DLT_JUNIPER_PIC_PEER    174
     388
     389/*
     390 * Link types requested by Gregor Maier <gregor@endace.com> of Endace
     391 * Measurement Systems.  They add an ERF header (see
     392 * http://www.endace.com/support/EndaceRecordFormat.pdf) in front of
     393 * the link-layer header.
     394 */
     395#define DLT_ERF_ETH     175 /* Ethernet */
     396#define DLT_ERF_POS     176 /* Packet-over-SONET */
     397
     398/*
     399 * Requested by Daniele Orlandi <daniele@orlandi.com> for raw LAPD
     400 * for vISDN (http://www.orlandi.com/visdn/).  Its link-layer header
     401 * includes additional information before the LAPD header, so it's
     402 * not necessarily a generic LAPD header.
     403 */
     404#define DLT_LINUX_LAPD      177
     405
     406/*
     407 * Juniper-private data link type, as per request from
     408 * Hannes Gredler <hannes@juniper.net>.
     409 * The DLT_ are used for prepending meta-information
     410 * like interface index, interface name
     411 * before standard Ethernet, PPP, Frelay & C-HDLC Frames
     412 */
     413#define DLT_JUNIPER_ETHER       178
     414#define DLT_JUNIPER_PPP         179
     415#define DLT_JUNIPER_FRELAY      180
     416#define DLT_JUNIPER_CHDLC       181
     417
     418/*
     419 * Multi Link Frame Relay (FRF.16)
     420 */
     421#define DLT_MFR                 182
     422
     423/*
     424 * Juniper-private data link type, as per request from
     425 * Hannes Gredler <hannes@juniper.net>.
     426 * The DLT_ is used for internal communication with a
     427 * voice Adapter Card (PIC)
     428 */
     429#define DLT_JUNIPER_VP          183
     430
     431/*
     432 * Arinc 429 frames.
     433 * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.
     434 * Every frame contains a 32bit A429 label.
     435 * More documentation on Arinc 429 can be found at
     436 * http://www.condoreng.com/support/downloads/tutorials/ARINCTutorial.pdf
     437 */
     438#define DLT_A429                184
     439
     440/*
     441 * Arinc 653 Interpartition Communication messages.
     442 * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.
     443 * Please refer to the A653-1 standard for more information.
     444 */
     445#define DLT_A653_ICM            185
     446
     447/*
     448 * USB packets, beginning with a USB setup header; requested by
     449 * Paolo Abeni <paolo.abeni@email.it>.
     450 */
     451#define DLT_USB         186
     452
     453/*
     454 * Bluetooth HCI UART transport layer (part H:4); requested by
     455 * Paolo Abeni.
     456 */
     457#define DLT_BLUETOOTH_HCI_H4    187
     458
     459/*
     460 * IEEE 802.16 MAC Common Part Sublayer; requested by Maria Cruz
     461 * <cruz_petagay@bah.com>.
     462 */
     463#define DLT_IEEE802_16_MAC_CPS  188
     464
     465/*
     466 * USB packets, beginning with a Linux USB header; requested by
     467 * Paolo Abeni <paolo.abeni@email.it>.
     468 */
     469#define DLT_USB_LINUX       189
     470
     471/*
     472 * Controller Area Network (CAN) v. 2.0B packets.
     473 * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.
     474 * Used to dump CAN packets coming from a CAN Vector board.
     475 * More documentation on the CAN v2.0B frames can be found at
     476 * http://www.can-cia.org/downloads/?269
     477 */
     478#define DLT_CAN20B              190
     479
     480/*
     481 * IEEE 802.15.4, with address fields padded, as is done by Linux
     482 * drivers; requested by Juergen Schimmer.
     483 */
     484#define DLT_IEEE802_15_4_LINUX  191
     485
     486/*
     487 * Per Packet Information encapsulated packets.
     488 * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.
     489 */
     490#define DLT_PPI         192
     491
     492/*
     493 * Header for 802.16 MAC Common Part Sublayer plus a radiotap radio header;
     494 * requested by Charles Clancy.
     495 */
     496#define DLT_IEEE802_16_MAC_CPS_RADIO    193
     497
     498/*
     499 * Juniper-private data link type, as per request from
     500 * Hannes Gredler <hannes@juniper.net>.
     501 * The DLT_ is used for internal communication with a
     502 * integrated service module (ISM).
     503 */
     504#define DLT_JUNIPER_ISM         194
     505
     506/*
     507 * IEEE 802.15.4, exactly as it appears in the spec (no padding, no
     508 * nothing); requested by Mikko Saarnivala <mikko.saarnivala@sensinode.com>.
     509 */
     510#define DLT_IEEE802_15_4    195
     511
     512/*
     513 * Various link-layer types, with a pseudo-header, for SITA
     514 * (http://www.sita.aero/); requested by Fulko Hew (fulko.hew@gmail.com).
     515 */
     516#define DLT_SITA        196
     517
     518/*
     519 * Various link-layer types, with a pseudo-header, for Endace DAG cards;
     520 * encapsulates Endace ERF records.  Requested by Stephen Donnelly
     521 * <stephen@endace.com>.
     522 */
     523#define DLT_ERF         197
     524
     525/*
     526 * Special header prepended to Ethernet packets when capturing from a
     527 * u10 Networks board.  Requested by Phil Mulholland
     528 * <phil@u10networks.com>.
     529 */
     530#define DLT_RAIF1       198
     531
     532/*
     533 * IPMB packet for IPMI, beginning with the I2C slave address, followed
     534 * by the netFn and LUN, etc..  Requested by Chanthy Toeung
     535 * <chanthy.toeung@ca.kontron.com>.
     536 */
     537#define DLT_IPMB        199
     538
     539/*
     540 * Juniper-private data link type, as per request from
     541 * Hannes Gredler <hannes@juniper.net>.
     542 * The DLT_ is used for capturing data on a secure tunnel interface.
     543 */
     544#define DLT_JUNIPER_ST          200
     545
     546/*
     547 * Bluetooth HCI UART transport layer (part H:4), with pseudo-header
     548 * that includes direction information; requested by Paolo Abeni.
     549 */
     550#define DLT_BLUETOOTH_HCI_H4_WITH_PHDR  201
     551
     552/*
     553 * The instruction encodings.
     554 */
     555/* instruction classes */
     556#define BPF_CLASS(code) ((code) & 0x07)
     557#define     BPF_LD      0x00
     558#define     BPF_LDX     0x01
     559#define     BPF_ST      0x02
     560#define     BPF_STX     0x03
     561#define     BPF_ALU     0x04
     562#define     BPF_JMP     0x05
     563#define     BPF_RET     0x06
     564#define     BPF_MISC    0x07
     565
     566/* ld/ldx fields */
     567#define BPF_SIZE(code)  ((code) & 0x18)
     568#define     BPF_W       0x00
     569#define     BPF_H       0x08
     570#define     BPF_B       0x10
     571#define BPF_MODE(code)  ((code) & 0xe0)
     572#define     BPF_IMM     0x00
     573#define     BPF_ABS     0x20
     574#define     BPF_IND     0x40
     575#define     BPF_MEM     0x60
     576#define     BPF_LEN     0x80
     577#define     BPF_MSH     0xa0
     578
     579/* alu/jmp fields */
     580#define BPF_OP(code)    ((code) & 0xf0)
     581#define     BPF_ADD     0x00
     582#define     BPF_SUB     0x10
     583#define     BPF_MUL     0x20
     584#define     BPF_DIV     0x30
     585#define     BPF_OR      0x40
     586#define     BPF_AND     0x50
     587#define     BPF_LSH     0x60
     588#define     BPF_RSH     0x70
     589#define     BPF_NEG     0x80
     590#define     BPF_JA      0x00
     591#define     BPF_JEQ     0x10
     592#define     BPF_JGT     0x20
     593#define     BPF_JGE     0x30
     594#define     BPF_JSET    0x40
     595#define BPF_SRC(code)   ((code) & 0x08)
     596#define     BPF_K       0x00
     597#define     BPF_X       0x08
     598
     599/* ret - BPF_K and BPF_X also apply */
     600#define BPF_RVAL(code)  ((code) & 0x18)
     601#define     BPF_A       0x10
     602
     603/* misc */
     604#define BPF_MISCOP(code) ((code) & 0xf8)
     605#define     BPF_TAX     0x00
     606#define     BPF_TXA     0x80
     607
     608/*
     609 * The instruction data structure.
     610 */
     611struct bpf_insn {
     612    u_short     code;
     613    u_char      jt;
     614    u_char      jf;
     615    bpf_u_int32 k;
     616};
     617
     618/*
     619 * Macros for insn array initializers.
     620 */
     621#define BPF_STMT(code, k) { (u_short)(code), 0, 0, k }
     622#define BPF_JUMP(code, k, jt, jf) { (u_short)(code), jt, jf, k }
     623
     624/*
     625 * Structure to retrieve available DLTs for the interface.
     626 */
     627struct bpf_dltlist {
     628    u_int   bfl_len;    /* number of bfd_list array */
     629    u_int   *bfl_list;  /* array of DLTs */
     630};
     631
     632#ifdef _KERNEL
     633#ifdef MALLOC_DECLARE
     634MALLOC_DECLARE(M_BPF);
     635#endif
     636#ifdef SYSCTL_DECL
     637SYSCTL_DECL(_net_bpf);
     638#endif
     639
     640/*
     641 * Rotate the packet buffers in descriptor d.  Move the store buffer into the
     642 * hold slot, and the free buffer ino the store slot.  Zero the length of the
     643 * new store buffer.  Descriptor lock should be held.
     644 */
     645#define ROTATE_BUFFERS(d)   do {                    \
     646    (d)->bd_hbuf = (d)->bd_sbuf;                    \
     647    (d)->bd_hlen = (d)->bd_slen;                    \
     648    (d)->bd_sbuf = (d)->bd_fbuf;                    \
     649    (d)->bd_slen = 0;                       \
     650    (d)->bd_fbuf = NULL;                        \
     651    bpf_bufheld(d);                         \
     652} while (0)
     653
     654/*
     655 * Descriptor associated with each attached hardware interface.
     656 */
     657struct bpf_if {
     658    LIST_ENTRY(bpf_if)  bif_next;   /* list of all interfaces */
     659    LIST_HEAD(, bpf_d)  bif_dlist;  /* descriptor list */
     660    u_int bif_dlt;              /* link layer type */
     661    u_int bif_hdrlen;       /* length of header (with padding) */
     662    struct ifnet *bif_ifp;      /* corresponding interface */
     663    struct mtx  bif_mtx;    /* mutex for interface */
     664};
     665/* TQH
     666void     bpf_bufheld(struct bpf_d *d);
     667int  bpf_validate(const struct bpf_insn *, int);
     668void     bpf_tap(struct bpf_if *, u_char *, u_int);
     669void     bpf_mtap(struct bpf_if *, struct mbuf *);
     670void     bpf_mtap2(struct bpf_if *, void *, u_int, struct mbuf *);
     671void     bpfattach(struct ifnet *, u_int, u_int);
     672void     bpfattach2(struct ifnet *, u_int, u_int, struct bpf_if **);
     673void     bpfdetach(struct ifnet *);
     674
     675void     bpfilterattach(int);
     676u_int    bpf_filter(const struct bpf_insn *, u_char *, u_int, u_int);
     677*/
     678/* TODO:TQH are these better?
     679static __inline int
     680bpf_peers_present(struct bpf_if *bpf)
     681{
     682
     683    if (!LIST_EMPTY(&bpf->bif_dlist))
     684        return (1);
     685    return (0);
     686}
     687
     688#define BPF_TAP(_ifp,_pkt,_pktlen) do {             \
     689    if (bpf_peers_present((_ifp)->if_bpf))          \
     690        bpf_tap((_ifp)->if_bpf, (_pkt), (_pktlen)); \
     691} while (0)
     692#define BPF_MTAP(_ifp,_m) do {                  \
     693    if (bpf_peers_present((_ifp)->if_bpf)) {        \
     694        M_ASSERTVALID(_m);              \
     695        bpf_mtap((_ifp)->if_bpf, (_m));         \
     696    }                           \
     697} while (0)
     698#define BPF_MTAP2(_ifp,_data,_dlen,_m) do {         \
     699    if (bpf_peers_present((_ifp)->if_bpf)) {        \
     700        M_ASSERTVALID(_m);              \
     701        bpf_mtap2((_ifp)->if_bpf,(_data),(_dlen),(_m)); \
     702    }                           \
     703} while (0)
     704*/
     705#endif
     706
     707/*
     708 * Number of scratch memory words (for BPF_LD|BPF_MEM and BPF_ST).
     709 */
     710#define BPF_MEMWORDS 16
    17711#endif  /* _FBSD_COMPAT_NET_BPF_H_ */
  • src/libs/compat/freebsd_network/compat/sys/mbuf.h

     
    129129    void (*freeHook)(void *, void *), void *args, int flags, int type);
    130130
    131131
    132 #define mtod(m, type)   (type)((m)->m_data)
     132#define mtod(m, type)   ((type)((m)->m_data))
    133133
    134134#define m_tag_delete(mb, tag) \
    135135    panic("m_tag_delete unsupported.");
     
    144144
    145145extern int max_linkhdr;
    146146extern int max_protohdr;
     147extern int max_hdr;
    147148
    148149#include <sys/mbuf-fbsd.h>
    149150
  • src/libs/compat/freebsd_network/compat/sys/systm.h

     
    1717
    1818#include <machine/atomic.h>
    1919
     20#define ovbcopy(f, t, l) \
     21    memmove((t), (f), (l))
    2022
    2123#define DELAY(n) \
    2224    do {                \
  • src/libs/compat/freebsd_network/mbuf.c

     
    2525int max_linkhdr = 16;
    2626int max_protohdr = 40 + 20; /* ip6 + tcp */
    2727
     28/* max_linkhdr + max_protohdr, but that's not allowed by gcc. */
     29int max_hdr = 16 + 40 + 20;
    2830
    2931static int
    3032m_to_oc_flags(int how)