summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Sun <smn@amazon.com>2021-10-20 15:38:35 +0800
committerAndy Sun <smn@amazon.com>2021-11-09 17:14:12 +0800
commit10d52d86b8e178b066974db36c93af56916a8740 (patch)
treeaab62991c55730d1197884b36669bf1460a67079
parent513b42eb92071300c6207e243d0a21d6ff9293fd (diff)
downloadfreertos-git-10d52d86b8e178b066974db36c93af56916a8740.tar.gz
Adjust the location of using_mbedtls and socket_wrapper
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/Packet32.h398
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/PacketData.h267
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/Win32-Extensions.h127
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/bittypes.h137
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/ip6_misc.h165
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/netif.h52
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap-bpf.h47
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap-namedb.h42
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap-stdinc.h93
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap.h45
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/bluetooth.h48
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/bpf.h934
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/namedb.h89
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/pcap.h407
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/sll.h129
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/usb.h90
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/vlan.h46
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/remote-ext.h472
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/wpcap.libbin19320 -> 0 bytes
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/MQTT_Mutual_Auth_Demo_with_BG96/WIN32.vcxproj12
-rw-r--r--FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/MQTT_Mutual_Auth_Demo_with_BG96/WIN32.vcxproj.filters18
-rw-r--r--FreeRTOS-Plus/Source/Application-Protocols/network_transport/cellular/sockets_wrapper.c (renamed from FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/mbedtls/sockets_wrapper.c)0
-rw-r--r--FreeRTOS-Plus/Source/Application-Protocols/network_transport/cellular/sockets_wrapper.h (renamed from FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/mbedtls/sockets_wrapper.h)0
-rw-r--r--FreeRTOS-Plus/Source/Application-Protocols/network_transport/cellular/using_mbedtls/using_mbedtls.c847
-rw-r--r--FreeRTOS-Plus/Source/Application-Protocols/network_transport/cellular/using_mbedtls/using_mbedtls.h218
25 files changed, 1081 insertions, 3602 deletions
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/Packet32.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/Packet32.h
deleted file mode 100644
index e8a444dee..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/Packet32.h
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy)
- * Copyright (c) 2005 - 2007 CACE Technologies, Davis (California)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Politecnico di Torino, CACE Technologies
- * nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-/** @ingroup packetapi
- * @{
- */
-
-/** @defgroup packet32h Packet.dll definitions and data structures
- * Packet32.h contains the data structures and the definitions used by packet.dll.
- * The file is used both by the Win9x and the WinNTx versions of packet.dll, and can be included
- * by the applications that use the functions of this library
- * @{
- */
-
-#ifndef __PACKET32
- #define __PACKET32
-
- #include <winsock2.h>
-
- #ifdef HAVE_AIRPCAP_API
- #include <airpcap.h>
- #else
- #if !defined( AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ )
- #define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_
- typedef struct _AirpcapHandle * PAirpcapHandle;
- #endif /* AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ */
- #endif /* HAVE_AIRPCAP_API */
-
- #ifdef HAVE_DAG_API
- #include <dagc.h>
- #endif /* HAVE_DAG_API */
-
-/* Working modes */
- #define PACKET_MODE_CAPT 0x0 /*/< Capture mode */
- #define PACKET_MODE_STAT 0x1 /*/< Statistical mode */
- #define PACKET_MODE_MON 0x2 /*/< Monitoring mode */
- #define PACKET_MODE_DUMP 0x10 /*/< Dump mode */
- #define PACKET_MODE_STAT_DUMP MODE_DUMP | MODE_STAT /*/< Statistical dump Mode */
-
-
-/*/ Alignment macro. Defines the alignment size. */
- #define Packet_ALIGNMENT sizeof( int )
-/*/ Alignment macro. Rounds up to the next even multiple of Packet_ALIGNMENT. */
- #define Packet_WORDALIGN( x ) ( ( ( x ) + ( Packet_ALIGNMENT - 1 ) ) & ~( Packet_ALIGNMENT - 1 ) )
-
- #define NdisMediumNull -1 /*/< Custom linktype: NDIS doesn't provide an equivalent */
- #define NdisMediumCHDLC -2 /*/< Custom linktype: NDIS doesn't provide an equivalent */
- #define NdisMediumPPPSerial -3 /*/< Custom linktype: NDIS doesn't provide an equivalent */
- #define NdisMediumBare80211 -4 /*/< Custom linktype: NDIS doesn't provide an equivalent */
- #define NdisMediumRadio80211 -5 /*/< Custom linktype: NDIS doesn't provide an equivalent */
- #define NdisMediumPpi -6 /*/< Custom linktype: NDIS doesn't provide an equivalent */
-
-/* Loopback behaviour definitions */
- #define NPF_DISABLE_LOOPBACK 1 /*/< Drop the packets sent by the NPF driver */
- #define NPF_ENABLE_LOOPBACK 2 /*/< Capture the packets sent by the NPF driver */
-
-/*!
- * \brief Network type structure.
- *
- * This structure is used by the PacketGetNetType() function to return information on the current adapter's type and speed.
- */
- typedef struct NetType
- {
- UINT LinkType; /*/< The MAC of the current network adapter (see function PacketGetNetType() for more information) */
- ULONGLONG LinkSpeed; /*/< The speed of the network in bits per second */
- } NetType;
-
-
-/*some definitions stolen from libpcap */
-
- #ifndef BPF_MAJOR_VERSION
-
-/*!
- * \brief A BPF pseudo-assembly program.
- *
- * The program will be injected in the kernel by the PacketSetBPF() function and applied to every incoming packet.
- */
- struct bpf_program
- {
- UINT bf_len; /*/< Indicates the number of instructions of the program, i.e. the number of struct bpf_insn that will follow. */
- struct bpf_insn * bf_insns; /*/< A pointer to the first instruction of the program. */
- };
-
-/*!
- * \brief A single BPF pseudo-instruction.
- *
- * bpf_insn contains a single instruction for the BPF register-machine. It is used to send a filter program to the driver.
- */
- struct bpf_insn
- {
- USHORT code; /*/< Instruction type and addressing mode. */
- UCHAR jt; /*/< Jump if true */
- UCHAR jf; /*/< Jump if false */
- int k; /*/< Generic field used for various purposes. */
- };
-
-/*!
- * \brief Structure that contains a couple of statistics values on the current capture.
- *
- * It is used by packet.dll to return statistics about a capture session.
- */
- struct bpf_stat
- {
- UINT bs_recv; /*/< Number of packets that the driver received from the network adapter */
- /*/< from the beginning of the current capture. This value includes the packets */
- /*/< lost by the driver. */
- UINT bs_drop; /*/< number of packets that the driver lost from the beginning of a capture. */
- /*/< Basically, a packet is lost when the the buffer of the driver is full. */
- /*/< In this situation the packet cannot be stored and the driver rejects it. */
- UINT ps_ifdrop; /*/< drops by interface. XXX not yet supported */
- UINT bs_capt; /*/< number of packets that pass the filter, find place in the kernel buffer and */
- /*/< thus reach the application. */
- };
-
-/*!
- * \brief Packet header.
- *
- * This structure defines the header associated with every packet delivered to the application.
- */
- struct bpf_hdr
- {
- struct timeval bh_tstamp; /*/< The timestamp associated with the captured packet. */
- /*/< It is stored in a TimeVal structure. */
- UINT bh_caplen; /*/< Length of captured portion. The captured portion <b>can be different</b> */
- /*/< from the original packet, because it is possible (with a proper filter) */
- /*/< to instruct the driver to capture only a portion of the packets. */
- UINT bh_datalen; /*/< Original length of packet */
- USHORT bh_hdrlen; /*/< Length of bpf header (this struct plus alignment padding). In some cases, */
- /*/< a padding could be added between the end of this structure and the packet */
- /*/< data for performance reasons. This filed can be used to retrieve the actual data */
- /*/< of the packet. */
- };
-
-/*!
- * \brief Dump packet header.
- *
- * This structure defines the header associated with the packets in a buffer to be used with PacketSendPackets().
- * It is simpler than the bpf_hdr, because it corresponds to the header associated by WinPcap and libpcap to a
- * packet in a dump file. This makes straightforward sending WinPcap dump files to the network.
- */
- struct dump_bpf_hdr
- {
- struct timeval ts; /*/< Time stamp of the packet */
- UINT caplen; /*/< Length of captured portion. The captured portion can smaller than the */
- /*/< the original packet, because it is possible (with a proper filter) to */
- /*/< instruct the driver to capture only a portion of the packets. */
- UINT len; /*/< Length of the original packet (off wire). */
- };
-
-
- #endif /* ifndef BPF_MAJOR_VERSION */
-
- struct bpf_stat;
-
- #define DOSNAMEPREFIX TEXT( "Packet_" ) /*/< Prefix added to the adapters device names to create the WinPcap devices */
- #define MAX_LINK_NAME_LENGTH 64 /*< Maximum length of the devices symbolic links */
- #define NMAX_PACKET 65535
-
-/*!
- * \brief Addresses of a network adapter.
- *
- * This structure is used by the PacketGetNetInfoEx() function to return the IP addresses associated with
- * an adapter.
- */
- typedef struct npf_if_addr
- {
- struct sockaddr_storage IPAddress; /*/< IP address. */
- struct sockaddr_storage SubnetMask; /*/< Netmask for that address. */
- struct sockaddr_storage Broadcast; /*/< Broadcast address. */
- } npf_if_addr;
-
-
- #define ADAPTER_NAME_LENGTH 256 + 12 /*/< Maximum length for the name of an adapter. The value is the same used by the IP Helper API. */
- #define ADAPTER_DESC_LENGTH 128 /*/< Maximum length for the description of an adapter. The value is the same used by the IP Helper API. */
- #define MAX_MAC_ADDR_LENGTH 8 /*/< Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API. */
- #define MAX_NETWORK_ADDRESSES 16 /*/< Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API. */
-
-
- typedef struct WAN_ADAPTER_INT WAN_ADAPTER; /*/< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API */
- typedef WAN_ADAPTER * PWAN_ADAPTER; /*/< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API */
-
- #define INFO_FLAG_NDIS_ADAPTER 0 /*/< Flag for ADAPTER_INFO: this is a traditional ndis adapter */
- #define INFO_FLAG_NDISWAN_ADAPTER 1 /*/< Flag for ADAPTER_INFO: this is a NdisWan adapter, and it's managed by WANPACKET */
- #define INFO_FLAG_DAG_CARD 2 /*/< Flag for ADAPTER_INFO: this is a DAG card */
- #define INFO_FLAG_DAG_FILE 6 /*/< Flag for ADAPTER_INFO: this is a DAG file */
- #define INFO_FLAG_DONT_EXPORT 8 /*/< Flag for ADAPTER_INFO: when this flag is set, the adapter will not be listed or openend by winpcap. This allows to prevent exporting broken network adapters, like for example FireWire ones. */
- #define INFO_FLAG_AIRPCAP_CARD 16 /*/< Flag for ADAPTER_INFO: this is an airpcap card */
- #define INFO_FLAG_NPFIM_DEVICE 32
-
-/*!
- * \brief Describes an opened network adapter.
- *
- * This structure is the most important for the functioning of packet.dll, but the great part of its fields
- * should be ignored by the user, since the library offers functions that avoid to cope with low-level parameters
- */
- typedef struct _ADAPTER
- {
- HANDLE hFile; /*/< \internal Handle to an open instance of the NPF driver. */
- CHAR SymbolicLink[ MAX_LINK_NAME_LENGTH ]; /*/< \internal A string containing the name of the network adapter currently opened. */
- int NumWrites; /*/< \internal Number of times a packets written on this adapter will be repeated */
- /*/< on the wire. */
- HANDLE ReadEvent; /*/< A notification event associated with the read calls on the adapter. */
- /*/< It can be passed to standard Win32 functions (like WaitForSingleObject */
- /*/< or WaitForMultipleObjects) to wait until the driver's buffer contains some */
- /*/< data. It is particularly useful in GUI applications that need to wait */
- /*/< concurrently on several events. In Windows NT/2000 the PacketSetMinToCopy() */
- /*/< function can be used to define the minimum amount of data in the kernel buffer */
- /*/< that will cause the event to be signalled. */
-
- UINT ReadTimeOut; /*/< \internal The amount of time after which a read on the driver will be released and */
- /*/< ReadEvent will be signaled, also if no packets were captured */
- CHAR Name[ ADAPTER_NAME_LENGTH ];
- PWAN_ADAPTER pWanAdapter;
- UINT Flags; /*/< Adapter's flags. Tell if this adapter must be treated in a different way, using the Netmon API or the dagc API. */
-
- #ifdef HAVE_AIRPCAP_API
- PAirpcapHandle AirpcapAd;
- #endif // HAVE_AIRPCAP_API
-
- #ifdef HAVE_NPFIM_API
- void * NpfImHandle;
- #endif // HAVE_NPFIM_API
-
- #ifdef HAVE_DAG_API
- dagc_t * pDagCard; /*/< Pointer to the dagc API adapter descriptor for this adapter */
- PCHAR DagBuffer; /*/< Pointer to the buffer with the packets that is received from the DAG card */
- struct timeval DagReadTimeout; /*/< Read timeout. The dagc API requires a timeval structure */
- unsigned DagFcsLen; /*/< Length of the frame check sequence attached to any packet by the card. Obtained from the registry */
- DWORD DagFastProcess; /*/< True if the user requests fast capture processing on this card. Higher level applications can use this value to provide a faster but possibly unprecise capture (for example, libpcap doesn't convert the timestamps). */
- #endif // HAVE_DAG_API
- } ADAPTER, * LPADAPTER;
-
-/*!
- * \brief Structure that contains a group of packets coming from the driver.
- *
- * This structure defines the header associated with every packet delivered to the application.
- */
- typedef struct _PACKET
- {
- HANDLE hEvent; /*/< \deprecated Still present for compatibility with old applications. */
- OVERLAPPED OverLapped; /*/< \deprecated Still present for compatibility with old applications. */
- PVOID Buffer; /*/< Buffer with containing the packets. See the PacketReceivePacket() for */
- /*/< details about the organization of the data in this buffer */
- UINT Length; /*/< Length of the buffer */
- DWORD ulBytesReceived; /*/< Number of valid bytes present in the buffer, i.e. amount of data */
- /*/< received by the last call to PacketReceivePacket() */
- BOOLEAN bIoComplete; /*/< \deprecated Still present for compatibility with old applications. */
- } PACKET, * LPPACKET;
-
-/*!
- * \brief Structure containing an OID request.
- *
- * It is used by the PacketRequest() function to send an OID to the interface card driver.
- * It can be used, for example, to retrieve the status of the error counters on the adapter, its MAC address,
- * the list of the multicast groups defined on it, and so on.
- */
- struct _PACKET_OID_DATA
- {
- ULONG Oid; /*/< OID code. See the Microsoft DDK documentation or the file ntddndis.h */
- /*/< for a complete list of valid codes. */
- ULONG Length; /*/< Length of the data field */
- UCHAR Data[ 1 ]; /*/< variable-lenght field that contains the information passed to or received */
- /*/< from the adapter. */
- };
- typedef struct _PACKET_OID_DATA PACKET_OID_DATA, * PPACKET_OID_DATA;
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
-/**
- * @}
- */
-
-/*
- * BOOLEAN QueryWinPcapRegistryStringA(CHAR *SubKeyName,
- * CHAR *Value,
- * UINT *pValueLen,
- * CHAR *DefaultVal);
- *
- * BOOLEAN QueryWinPcapRegistryStringW(WCHAR *SubKeyName,
- * WCHAR *Value,
- * UINT *pValueLen,
- * WCHAR *DefaultVal);
- */
-
-/*--------------------------------------------------------------------------- */
-/* EXPORTED FUNCTIONS */
-/*--------------------------------------------------------------------------- */
-
- PCHAR PacketGetVersion();
- PCHAR PacketGetDriverVersion();
- BOOLEAN PacketSetMinToCopy( LPADAPTER AdapterObject,
- int nbytes );
- BOOLEAN PacketSetNumWrites( LPADAPTER AdapterObject,
- int nwrites );
- BOOLEAN PacketSetMode( LPADAPTER AdapterObject,
- int mode );
- BOOLEAN PacketSetReadTimeout( LPADAPTER AdapterObject,
- int timeout );
- BOOLEAN PacketSetBpf( LPADAPTER AdapterObject,
- struct bpf_program * fp );
- BOOLEAN PacketSetLoopbackBehavior( LPADAPTER AdapterObject,
- UINT LoopbackBehavior );
- INT PacketSetSnapLen( LPADAPTER AdapterObject,
- int snaplen );
- BOOLEAN PacketGetStats( LPADAPTER AdapterObject,
- struct bpf_stat * s );
- BOOLEAN PacketGetStatsEx( LPADAPTER AdapterObject,
- struct bpf_stat * s );
- BOOLEAN PacketSetBuff( LPADAPTER AdapterObject,
- int dim );
- BOOLEAN PacketGetNetType( LPADAPTER AdapterObject,
- NetType * type );
- LPADAPTER PacketOpenAdapter( PCHAR AdapterName );
- BOOLEAN PacketSendPacket( LPADAPTER AdapterObject,
- LPPACKET pPacket,
- BOOLEAN Sync );
- INT PacketSendPackets( LPADAPTER AdapterObject,
- PVOID PacketBuff,
- ULONG Size,
- BOOLEAN Sync );
- LPPACKET PacketAllocatePacket( void );
- VOID PacketInitPacket( LPPACKET lpPacket,
- PVOID Buffer,
- UINT Length );
- VOID PacketFreePacket( LPPACKET lpPacket );
- BOOLEAN PacketReceivePacket( LPADAPTER AdapterObject,
- LPPACKET lpPacket,
- BOOLEAN Sync );
- BOOLEAN PacketSetHwFilter( LPADAPTER AdapterObject,
- ULONG Filter );
- BOOLEAN PacketGetAdapterNames( PTSTR pStr,
- PULONG BufferSize );
- BOOLEAN PacketGetNetInfoEx( PCHAR AdapterName,
- npf_if_addr * buffer,
- PLONG NEntries );
- BOOLEAN PacketRequest( LPADAPTER AdapterObject,
- BOOLEAN Set,
- PPACKET_OID_DATA OidData );
- HANDLE PacketGetReadEvent( LPADAPTER AdapterObject );
- BOOLEAN PacketSetDumpName( LPADAPTER AdapterObject,
- void * name,
- int len );
- BOOLEAN PacketSetDumpLimits( LPADAPTER AdapterObject,
- UINT maxfilesize,
- UINT maxnpacks );
- BOOLEAN PacketIsDumpEnded( LPADAPTER AdapterObject,
- BOOLEAN sync );
- BOOL PacketStopDriver();
- VOID PacketCloseAdapter( LPADAPTER lpAdapter );
- BOOLEAN PacketStartOem( PCHAR errorString,
- UINT errorStringLength );
- BOOLEAN PacketStartOemEx( PCHAR errorString,
- UINT errorStringLength,
- ULONG flags );
- PAirpcapHandle PacketGetAirPcapHandle( LPADAPTER AdapterObject );
-
-/* */
-/* Used by PacketStartOemEx */
-/* */
- #define PACKET_START_OEM_NO_NETMON 0x00000001
-
- #ifdef __cplusplus
- }
- #endif
-
-#endif //__PACKET32
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/PacketData.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/PacketData.h
deleted file mode 100644
index baf732ee9..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/PacketData.h
+++ /dev/null
@@ -1,267 +0,0 @@
-char pkt1[] = {
- 0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,
- 0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x30, 0x09, 0x9c, 0x40, 0x00, 0x80, 0x06,
- 0x6f, 0x07, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,
- 0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,
- 0xc7, 0x35, 0x00, 0x00, 0x00, 0x00, 0x70, 0x02,
- 0x40, 0x00, 0xdf, 0xab, 0x00, 0x00, 0x02, 0x04,
- 0x05, 0xb4, 0x01, 0x01, 0x04, 0x02 };
-
-char pkt2[] = {
- 0x00, 0x14, 0x22, 0xcb, 0x18, 0x2d, 0x00, 0x01,
- 0x02, 0x45, 0x09, 0x11, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x2c, 0x00, 0x01, 0x00, 0x00, 0x40, 0x06,
- 0xf8, 0xa6, 0xc0, 0xa8, 0x00, 0x0c, 0xc0, 0xa8,
- 0x00, 0xc8, 0x00, 0x50, 0x0f, 0xe2, 0x00, 0x00,
- 0x06, 0x68, 0x09, 0xe7, 0xc7, 0x36, 0x60, 0x12,
- 0x05, 0x92, 0x28, 0xca, 0x00, 0x00, 0x02, 0x04,
- 0x05, 0x92 };
-
-char pkt3[] = {
- 0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,
- 0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x28, 0x09, 0x9e, 0x40, 0x00, 0x80, 0x06,
- 0x6f, 0x0d, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,
- 0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,
- 0xc7, 0x36, 0x00, 0x00, 0x06, 0x69, 0x50, 0x10,
- 0x42, 0xd8, 0x82, 0x3f, 0x00, 0x00 };
-
-char pkt4[] = {
- 0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,
- 0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,
- 0x02, 0x27, 0x09, 0x9f, 0x40, 0x00, 0x80, 0x06,
- 0x6d, 0x0d, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,
- 0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,
- 0xc7, 0x36, 0x00, 0x00, 0x06, 0x69, 0x50, 0x18,
- 0x42, 0xd8, 0x84, 0x3e, 0x00, 0x00, 0x47, 0x45,
- 0x54, 0x20, 0x2f, 0x20, 0x48, 0x54, 0x54, 0x50,
- 0x2f, 0x31, 0x2e, 0x31, 0x0d, 0x0a, 0x41, 0x63,
- 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, 0x69, 0x6d,
- 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x2c,
- 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x78,
- 0x2d, 0x78, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x70,
- 0x2c, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f,
- 0x6a, 0x70, 0x65, 0x67, 0x2c, 0x20, 0x69, 0x6d,
- 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6a, 0x70, 0x65,
- 0x67, 0x2c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76,
- 0x6e, 0x64, 0x2e, 0x6d, 0x73, 0x2d, 0x65, 0x78,
- 0x63, 0x65, 0x6c, 0x2c, 0x20, 0x61, 0x70, 0x70,
- 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x2f, 0x6d, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x2c,
- 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x6e, 0x64,
- 0x2e, 0x6d, 0x73, 0x2d, 0x70, 0x6f, 0x77, 0x65,
- 0x72, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20,
- 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x2d, 0x6d, 0x73,
- 0x2d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x61, 0x70,
- 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x2f, 0x78, 0x2d, 0x6d, 0x73, 0x2d, 0x78,
- 0x62, 0x61, 0x70, 0x2c, 0x20, 0x61, 0x70, 0x70,
- 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x2f, 0x76, 0x6e, 0x64, 0x2e, 0x6d, 0x73, 0x2d,
- 0x78, 0x70, 0x73, 0x64, 0x6f, 0x63, 0x75, 0x6d,
- 0x65, 0x6e, 0x74, 0x2c, 0x20, 0x61, 0x70, 0x70,
- 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x2f, 0x78, 0x61, 0x6d, 0x6c, 0x2b, 0x78, 0x6d,
- 0x6c, 0x2c, 0x20, 0x2a, 0x2f, 0x2a, 0x0d, 0x0a,
- 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x4c,
- 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3a,
- 0x20, 0x65, 0x6e, 0x2d, 0x67, 0x62, 0x0d, 0x0a,
- 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x45,
- 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3a,
- 0x20, 0x67, 0x7a, 0x69, 0x70, 0x2c, 0x20, 0x64,
- 0x65, 0x66, 0x6c, 0x61, 0x74, 0x65, 0x0d, 0x0a,
- 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, 0x67, 0x65,
- 0x6e, 0x74, 0x3a, 0x20, 0x4d, 0x6f, 0x7a, 0x69,
- 0x6c, 0x6c, 0x61, 0x2f, 0x34, 0x2e, 0x30, 0x20,
- 0x28, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69,
- 0x62, 0x6c, 0x65, 0x3b, 0x20, 0x4d, 0x53, 0x49,
- 0x45, 0x20, 0x36, 0x2e, 0x30, 0x3b, 0x20, 0x57,
- 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x4e,
- 0x54, 0x20, 0x35, 0x2e, 0x31, 0x3b, 0x20, 0x53,
- 0x56, 0x31, 0x3b, 0x20, 0x47, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x54, 0x35, 0x3b, 0x20, 0x2e, 0x4e,
- 0x45, 0x54, 0x20, 0x43, 0x4c, 0x52, 0x20, 0x32,
- 0x2e, 0x30, 0x2e, 0x35, 0x30, 0x37, 0x32, 0x37,
- 0x3b, 0x20, 0x2e, 0x4e, 0x45, 0x54, 0x20, 0x43,
- 0x4c, 0x52, 0x20, 0x33, 0x2e, 0x30, 0x2e, 0x30,
- 0x34, 0x35, 0x30, 0x36, 0x2e, 0x36, 0x34, 0x38,
- 0x3b, 0x20, 0x2e, 0x4e, 0x45, 0x54, 0x20, 0x43,
- 0x4c, 0x52, 0x20, 0x33, 0x2e, 0x35, 0x2e, 0x32,
- 0x31, 0x30, 0x32, 0x32, 0x29, 0x0d, 0x0a, 0x48,
- 0x6f, 0x73, 0x74, 0x3a, 0x20, 0x31, 0x39, 0x32,
- 0x2e, 0x31, 0x36, 0x38, 0x2e, 0x30, 0x2e, 0x31,
- 0x32, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x4b,
- 0x65, 0x65, 0x70, 0x2d, 0x41, 0x6c, 0x69, 0x76,
- 0x65, 0x0d, 0x0a, 0x0d, 0x0a };
-
-char pkt5[] = {
- 0x00, 0x14, 0x22, 0xcb, 0x18, 0x2d, 0x00, 0x01,
- 0x02, 0x45, 0x09, 0x11, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x2c, 0x00, 0x02, 0x00, 0x00, 0x40, 0x06,
- 0xf8, 0xa5, 0xc0, 0xa8, 0x00, 0x0c, 0xc0, 0xa8,
- 0x00, 0xc8, 0x00, 0x50, 0x0f, 0xe2, 0x00, 0x00,
- 0x06, 0x68, 0x09, 0xe7, 0xc7, 0x36, 0x60, 0x12,
- 0x05, 0x92, 0x28, 0xca, 0x00, 0x00, 0x02, 0x04,
- 0x05, 0x92 };
-
-char pkt6[] = {
- 0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,
- 0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x28, 0x09, 0xa1, 0x40, 0x00, 0x80, 0x06,
- 0x6f, 0x0a, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,
- 0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,
- 0xc9, 0x35, 0x00, 0x00, 0x06, 0x69, 0x50, 0x10,
- 0x42, 0xd8, 0x82, 0x3f, 0x00, 0x00 };
-
-char pkt7[] = {
- 0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,
- 0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,
- 0x02, 0x27, 0x09, 0xa2, 0x40, 0x00, 0x80, 0x06,
- 0x6d, 0x0a, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,
- 0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,
- 0xc7, 0x36, 0x00, 0x00, 0x06, 0x69, 0x50, 0x18,
- 0x42, 0xd8, 0x84, 0x3e, 0x00, 0x00, 0x47, 0x45,
- 0x54, 0x20, 0x2f, 0x20, 0x48, 0x54, 0x54, 0x50,
- 0x2f, 0x31, 0x2e, 0x31, 0x0d, 0x0a, 0x41, 0x63,
- 0x63, 0x65, 0x70, 0x74, 0x3a, 0x20, 0x69, 0x6d,
- 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x2c,
- 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x78,
- 0x2d, 0x78, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x70,
- 0x2c, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f,
- 0x6a, 0x70, 0x65, 0x67, 0x2c, 0x20, 0x69, 0x6d,
- 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6a, 0x70, 0x65,
- 0x67, 0x2c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69,
- 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76,
- 0x6e, 0x64, 0x2e, 0x6d, 0x73, 0x2d, 0x65, 0x78,
- 0x63, 0x65, 0x6c, 0x2c, 0x20, 0x61, 0x70, 0x70,
- 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x2f, 0x6d, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x2c,
- 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x6e, 0x64,
- 0x2e, 0x6d, 0x73, 0x2d, 0x70, 0x6f, 0x77, 0x65,
- 0x72, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x20,
- 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x2d, 0x6d, 0x73,
- 0x2d, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x61, 0x70,
- 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x2f, 0x78, 0x2d, 0x6d, 0x73, 0x2d, 0x78,
- 0x62, 0x61, 0x70, 0x2c, 0x20, 0x61, 0x70, 0x70,
- 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x2f, 0x76, 0x6e, 0x64, 0x2e, 0x6d, 0x73, 0x2d,
- 0x78, 0x70, 0x73, 0x64, 0x6f, 0x63, 0x75, 0x6d,
- 0x65, 0x6e, 0x74, 0x2c, 0x20, 0x61, 0x70, 0x70,
- 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x2f, 0x78, 0x61, 0x6d, 0x6c, 0x2b, 0x78, 0x6d,
- 0x6c, 0x2c, 0x20, 0x2a, 0x2f, 0x2a, 0x0d, 0x0a,
- 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x4c,
- 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3a,
- 0x20, 0x65, 0x6e, 0x2d, 0x67, 0x62, 0x0d, 0x0a,
- 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2d, 0x45,
- 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3a,
- 0x20, 0x67, 0x7a, 0x69, 0x70, 0x2c, 0x20, 0x64,
- 0x65, 0x66, 0x6c, 0x61, 0x74, 0x65, 0x0d, 0x0a,
- 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, 0x67, 0x65,
- 0x6e, 0x74, 0x3a, 0x20, 0x4d, 0x6f, 0x7a, 0x69,
- 0x6c, 0x6c, 0x61, 0x2f, 0x34, 0x2e, 0x30, 0x20,
- 0x28, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69,
- 0x62, 0x6c, 0x65, 0x3b, 0x20, 0x4d, 0x53, 0x49,
- 0x45, 0x20, 0x36, 0x2e, 0x30, 0x3b, 0x20, 0x57,
- 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x4e,
- 0x54, 0x20, 0x35, 0x2e, 0x31, 0x3b, 0x20, 0x53,
- 0x56, 0x31, 0x3b, 0x20, 0x47, 0x6f, 0x6f, 0x67,
- 0x6c, 0x65, 0x54, 0x35, 0x3b, 0x20, 0x2e, 0x4e,
- 0x45, 0x54, 0x20, 0x43, 0x4c, 0x52, 0x20, 0x32,
- 0x2e, 0x30, 0x2e, 0x35, 0x30, 0x37, 0x32, 0x37,
- 0x3b, 0x20, 0x2e, 0x4e, 0x45, 0x54, 0x20, 0x43,
- 0x4c, 0x52, 0x20, 0x33, 0x2e, 0x30, 0x2e, 0x30,
- 0x34, 0x35, 0x30, 0x36, 0x2e, 0x36, 0x34, 0x38,
- 0x3b, 0x20, 0x2e, 0x4e, 0x45, 0x54, 0x20, 0x43,
- 0x4c, 0x52, 0x20, 0x33, 0x2e, 0x35, 0x2e, 0x32,
- 0x31, 0x30, 0x32, 0x32, 0x29, 0x0d, 0x0a, 0x48,
- 0x6f, 0x73, 0x74, 0x3a, 0x20, 0x31, 0x39, 0x32,
- 0x2e, 0x31, 0x36, 0x38, 0x2e, 0x30, 0x2e, 0x31,
- 0x32, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65,
- 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x4b,
- 0x65, 0x65, 0x70, 0x2d, 0x41, 0x6c, 0x69, 0x76,
- 0x65, 0x0d, 0x0a, 0x0d, 0x0a };
-
-char pkt8[] = {
- 0x00, 0x14, 0x22, 0xcb, 0x18, 0x2d, 0x00, 0x01,
- 0x02, 0x45, 0x09, 0x11, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x2c, 0x00, 0x03, 0x00, 0x00, 0x40, 0x06,
- 0xf8, 0xa4, 0xc0, 0xa8, 0x00, 0x0c, 0xc0, 0xa8,
- 0x00, 0xc8, 0x00, 0x50, 0x0f, 0xe2, 0x00, 0x00,
- 0x06, 0x68, 0x09, 0xe7, 0xc7, 0x36, 0x60, 0x12,
- 0x05, 0x92, 0x28, 0xca, 0x00, 0x00, 0x02, 0x04,
- 0x05, 0x92 };
-
-char pkt9[] = {
- 0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,
- 0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x28, 0x09, 0xa3, 0x40, 0x00, 0x80, 0x06,
- 0x6f, 0x08, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,
- 0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,
- 0xc9, 0x35, 0x00, 0x00, 0x06, 0x69, 0x50, 0x10,
- 0x42, 0xd8, 0x82, 0x3f, 0x00, 0x00 };
-
-char pkt10[] = {
- 0x00, 0x14, 0x22, 0xcb, 0x18, 0x2d, 0x00, 0x01,
- 0x02, 0x45, 0x09, 0x11, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x2c, 0x00, 0x04, 0x00, 0x00, 0x40, 0x06,
- 0xf8, 0xa3, 0xc0, 0xa8, 0x00, 0x0c, 0xc0, 0xa8,
- 0x00, 0xc8, 0x00, 0x50, 0x0f, 0xe2, 0x00, 0x00,
- 0x06, 0x68, 0x09, 0xe7, 0xc7, 0x36, 0x60, 0x12,
- 0x05, 0x92, 0x28, 0xca, 0x00, 0x00, 0x02, 0x04,
- 0x05, 0x92 };
-
-char pkt11[] = {
- 0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,
- 0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x28, 0x09, 0xa6, 0x40, 0x00, 0x80, 0x06,
- 0x6f, 0x05, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,
- 0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,
- 0xc9, 0x35, 0x00, 0x00, 0x06, 0x69, 0x50, 0x10,
- 0x42, 0xd8, 0x82, 0x3f, 0x00, 0x00 };
-
-char pkt12[] = {
- 0x00, 0x01, 0x02, 0x45, 0x09, 0x11, 0x00, 0x14,
- 0x22, 0xcb, 0x18, 0x2d, 0x08, 0x00, 0x45, 0x00,
- 0x00, 0x28, 0x09, 0xa7, 0x40, 0x00, 0x80, 0x06,
- 0x6f, 0x04, 0xc0, 0xa8, 0x00, 0xc8, 0xc0, 0xa8,
- 0x00, 0x0c, 0x0f, 0xe2, 0x00, 0x50, 0x09, 0xe7,
- 0xc9, 0x35, 0x00, 0x00, 0x06, 0x69, 0x50, 0x14,
- 0x00, 0x00, 0x43, 0xf4, 0x00, 0x00 };
-
-
-typedef struct
-{
- char * pcData;
- int iDataLen;
-} xPacketData;
-
-xPacketData xAllPackets[] =
-{
- { pkt1, sizeof( pkt1 ) },
-/* { pkt2, sizeof( pkt2 ) }, */
- { pkt3, sizeof( pkt3 ) },
- { pkt4, sizeof( pkt4 ) },
-/* { pkt5, sizeof( pkt5 ) }, */
- { pkt6, sizeof( pkt6 ) },
- { pkt7, sizeof( pkt7 ) },
- { pkt8, sizeof( pkt8 ) },
- { pkt9, sizeof( pkt9 ) },
- { pkt10, sizeof( pkt10 ) },
-/* { pkt11, sizeof( pkt11 ) }, */
-/* { pkt12, sizeof( pkt12 ) }, */
-/* { pkt13, sizeof( pkt13 ) }, */
-/* { pkt14, sizeof( pkt14 ) }, */
-/* { pkt15, sizeof( pkt15 ) }, */
-/* { pkt16, sizeof( pkt16 ) }, */
-};
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/Win32-Extensions.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/Win32-Extensions.h
deleted file mode 100644
index aad6a2866..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/Win32-Extensions.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy)
- * Copyright (c) 2005 - 2006 CACE Technologies, Davis (California)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Politecnico di Torino, CACE Technologies
- * nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-
-#ifndef __WIN32_EXTENSIONS_H__
- #define __WIN32_EXTENSIONS_H__
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
-/* Definitions */
-
-/*!
- * \brief A queue of raw packets that will be sent to the network with pcap_sendqueue_transmit().
- */
- struct pcap_send_queue
- {
- u_int maxlen; /*/< Maximum size of the the queue, in bytes. This variable contains the size of the buffer field. */
- u_int len; /*/< Current size of the queue, in bytes. */
- char * buffer; /*/< Buffer containing the packets to be sent. */
- };
-
- typedef struct pcap_send_queue pcap_send_queue;
-
-/*!
- * \brief This typedef is a support for the pcap_get_airpcap_handle() function
- */
- #if !defined( AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ )
- #define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_
- typedef struct _AirpcapHandle * PAirpcapHandle;
- #endif
-
- #define BPF_MEM_EX_IMM 0xc0
- #define BPF_MEM_EX_IND 0xe0
-
-/*used for ST*/
- #define BPF_MEM_EX 0xc0
- #define BPF_TME 0x08
-
- #define BPF_LOOKUP 0x90
- #define BPF_EXECUTE 0xa0
- #define BPF_INIT 0xb0
- #define BPF_VALIDATE 0xc0
- #define BPF_SET_ACTIVE 0xd0
- #define BPF_RESET 0xe0
- #define BPF_SET_MEMORY 0x80
- #define BPF_GET_REGISTER_VALUE 0x70
- #define BPF_SET_REGISTER_VALUE 0x60
- #define BPF_SET_WORKING 0x50
- #define BPF_SET_ACTIVE_READ 0x40
- #define BPF_SET_AUTODELETION 0x30
- #define BPF_SEPARATION 0xff
-
-/* Prototypes */
- pcap_send_queue * pcap_sendqueue_alloc( u_int memsize );
-
- void pcap_sendqueue_destroy( pcap_send_queue * queue );
-
- int pcap_sendqueue_queue( pcap_send_queue * queue,
- const struct pcap_pkthdr * pkt_header,
- const u_char * pkt_data );
-
- u_int pcap_sendqueue_transmit( pcap_t * p,
- pcap_send_queue * queue,
- int sync );
-
- HANDLE pcap_getevent( pcap_t * p );
-
- struct pcap_stat * pcap_stats_ex( pcap_t * p,
- int * pcap_stat_size );
-
- int pcap_setuserbuffer( pcap_t * p,
- int size );
-
- int pcap_live_dump( pcap_t * p,
- char * filename,
- int maxsize,
- int maxpacks );
-
- int pcap_live_dump_ended( pcap_t * p,
- int sync );
-
- int pcap_offline_filter( struct bpf_program * prog,
- const struct pcap_pkthdr * header,
- const u_char * pkt_data );
-
- int pcap_start_oem( char * err_str,
- int flags );
-
- PAirpcapHandle pcap_get_airpcap_handle( pcap_t * p );
-
- #ifdef __cplusplus
- }
- #endif
-
-#endif //__WIN32_EXTENSIONS_H__
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/bittypes.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/bittypes.h
deleted file mode 100644
index 2be3d28db..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/bittypes.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#ifndef _BITTYPES_H
-#define _BITTYPES_H
-
-#ifndef HAVE_U_INT8_T
-
- #if SIZEOF_CHAR == 1
- typedef unsigned char u_int8_t;
- typedef signed char _int8_t;
- #elif SIZEOF_INT == 1
- typedef unsigned int u_int8_t;
- typedef signed int int8_t;
- #else /* XXX */
- #error "there's no appropriate type for u_int8_t"
- #endif
- #define HAVE_U_INT8_T 1
- #define HAVE_INT8_T 1
-
-#endif /* HAVE_U_INT8_T */
-
-#ifndef HAVE_U_INT16_T
-
- #if SIZEOF_SHORT == 2
- typedef unsigned short u_int16_t;
- typedef signed short _int16_t;
- #elif SIZEOF_INT == 2
- typedef unsigned int u_int16_t;
- typedef signed int int16_t;
- #elif SIZEOF_CHAR == 2
- typedef unsigned char u_int16_t;
- typedef signed char int16_t;
- #else /* XXX */
- #error "there's no appropriate type for u_int16_t"
- #endif /* if SIZEOF_SHORT == 2 */
- #define HAVE_U_INT16_T 1
- #define HAVE_INT16_T 1
-
-#endif /* HAVE_U_INT16_T */
-
-#ifndef HAVE_U_INT32_T
-
- #if SIZEOF_INT == 4
- typedef unsigned int u_int32_t;
- typedef signed int _int32_t;
- #elif SIZEOF_LONG == 4
- typedef unsigned long u_int32_t;
- typedef signed long int32_t;
- #elif SIZEOF_SHORT == 4
- typedef unsigned short u_int32_t;
- typedef signed short int32_t;
- #else /* XXX */
- #error "there's no appropriate type for u_int32_t"
- #endif /* if SIZEOF_INT == 4 */
- #define HAVE_U_INT32_T 1
- #define HAVE_INT32_T 1
-
-#endif /* HAVE_U_INT32_T */
-
-#ifndef HAVE_U_INT64_T
- #if SIZEOF_LONG_LONG == 8
- typedef unsigned long long u_int64_t;
- typedef long long int64_t;
- #elif defined( _MSC_EXTENSIONS )
- typedef unsigned _int64 u_int64_t;
- typedef _int64 int64_t;
- #elif SIZEOF_INT == 8
- typedef unsigned int u_int64_t;
- #elif SIZEOF_LONG == 8
- typedef unsigned long u_int64_t;
- #elif SIZEOF_SHORT == 8
- typedef unsigned short u_int64_t;
- #else /* XXX */
- #error "there's no appropriate type for u_int64_t"
- #endif /* if SIZEOF_LONG_LONG == 8 */
-
-#endif /* HAVE_U_INT64_T */
-
-#ifndef PRId64
- #ifdef _MSC_EXTENSIONS
- #define PRId64 "I64d"
- #else /* _MSC_EXTENSIONS */
- #define PRId64 "lld"
- #endif /* _MSC_EXTENSIONS */
-#endif /* PRId64 */
-
-#ifndef PRIo64
- #ifdef _MSC_EXTENSIONS
- #define PRIo64 "I64o"
- #else /* _MSC_EXTENSIONS */
- #define PRIo64 "llo"
- #endif /* _MSC_EXTENSIONS */
-#endif /* PRIo64 */
-
-#ifndef PRIx64
- #ifdef _MSC_EXTENSIONS
- #define PRIx64 "I64x"
- #else /* _MSC_EXTENSIONS */
- #define PRIx64 "llx"
- #endif /* _MSC_EXTENSIONS */
-#endif /* PRIx64 */
-
-#ifndef PRIu64
- #ifdef _MSC_EXTENSIONS
- #define PRIu64 "I64u"
- #else /* _MSC_EXTENSIONS */
- #define PRIu64 "llu"
- #endif /* _MSC_EXTENSIONS */
-#endif /* PRIu64 */
-
-#endif /* _BITTYPES_H */
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/ip6_misc.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/ip6_misc.h
deleted file mode 100644
index 1b2e4337b..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/ip6_misc.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (c) 1993, 1994, 1997
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that: (1) source code distributions
- * retain the above copyright notice and this paragraph in its entirety, (2)
- * distributions including binary code include the above copyright notice and
- * this paragraph in its entirety in the documentation or other materials
- * provided with the distribution, and (3) all advertising materials mentioning
- * features or use of this software display the following acknowledgement:
- * ``This product includes software developed by the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may be used to endorse
- * or promote products derived from this software without specific prior
- * written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * @(#) $Header: /tcpdump/master/libpcap/Win32/Include/ip6_misc.h,v 1.5 2006-01-22 18:02:18 gianluca Exp $ (LBL)
- */
-
-/*
- * This file contains a collage of declarations for IPv6 from FreeBSD not present in Windows
- */
-
-#include <winsock2.h>
-
-#include <ws2tcpip.h>
-
-#ifndef __MINGW32__
- #define IN_MULTICAST( a ) IN_CLASSD( a )
-#endif
-
-#define IN_EXPERIMENTAL( a ) ( ( ( ( u_int32_t ) ( a ) ) & 0xf0000000 ) == 0xf0000000 )
-
-#define IN_LOOPBACKNET 127
-
-#if defined( __MINGW32__ ) && defined( DEFINE_ADDITIONAL_IPV6_STUFF )
-/* IPv6 address */
- struct in6_addr
- {
- union
- {
- u_int8_t u6_addr8[ 16 ];
- u_int16_t u6_addr16[ 8 ];
- u_int32_t u6_addr32[ 4 ];
- }
- in6_u;
- #define s6_addr in6_u.u6_addr8
- #define s6_addr16 in6_u.u6_addr16
- #define s6_addr32 in6_u.u6_addr32
- #define s6_addr64 in6_u.u6_addr64
- };
-
- #define IN6ADDR_ANY_INIT { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
- #define IN6ADDR_LOOPBACK_INIT { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }
-#endif /* __MINGW32__ */
-
-
-#if ( defined _MSC_VER ) || ( defined( __MINGW32__ ) && defined( DEFINE_ADDITIONAL_IPV6_STUFF ) )
- typedef unsigned short sa_family_t;
-#endif
-
-
-#if defined( __MINGW32__ ) && defined( DEFINE_ADDITIONAL_IPV6_STUFF )
-
- #define __SOCKADDR_COMMON( sa_prefix ) \
- sa_family_t sa_prefix ## family
-
-/* Ditto, for IPv6. */
- struct sockaddr_in6
- {
- __SOCKADDR_COMMON( sin6_ );
- u_int16_t sin6_port; /* Transport layer port # */
- u_int32_t sin6_flowinfo; /* IPv6 flow information */
- struct in6_addr sin6_addr; /* IPv6 address */
- };
-
- #define IN6_IS_ADDR_V4MAPPED( a ) \
- ( ( ( ( u_int32_t * ) ( a ) )[ 0 ] == 0 ) && ( ( ( u_int32_t * ) ( a ) )[ 1 ] == 0 ) && \
- ( ( ( u_int32_t * ) ( a ) )[ 2 ] == htonl( 0xffff ) ) )
-
- #define IN6_IS_ADDR_MULTICAST( a ) ( ( ( u_int8_t * ) ( a ) )[ 0 ] == 0xff )
-
- #define IN6_IS_ADDR_LINKLOCAL( a ) \
- ( ( ( ( u_int32_t * ) ( a ) )[ 0 ] & htonl( 0xffc00000 ) ) == htonl( 0xfe800000 ) )
-
- #define IN6_IS_ADDR_LOOPBACK( a ) \
- ( ( ( u_int32_t * ) ( a ) )[ 0 ] == 0 && ( ( u_int32_t * ) ( a ) )[ 1 ] == 0 && \
- ( ( u_int32_t * ) ( a ) )[ 2 ] == 0 && ( ( u_int32_t * ) ( a ) )[ 3 ] == htonl( 1 ) )
-#endif /* __MINGW32__ */
-
-#define ip6_vfc ip6_ctlun.ip6_un2_vfc
-#define ip6_flow ip6_ctlun.ip6_un1.ip6_un1_flow
-#define ip6_plen ip6_ctlun.ip6_un1.ip6_un1_plen
-#define ip6_nxt ip6_ctlun.ip6_un1.ip6_un1_nxt
-#define ip6_hlim ip6_ctlun.ip6_un1.ip6_un1_hlim
-#define ip6_hops ip6_ctlun.ip6_un1.ip6_un1_hlim
-
-#define nd_rd_type nd_rd_hdr.icmp6_type
-#define nd_rd_code nd_rd_hdr.icmp6_code
-#define nd_rd_cksum nd_rd_hdr.icmp6_cksum
-#define nd_rd_reserved nd_rd_hdr.icmp6_data32[ 0 ]
-
-/*
- * IPV6 extension headers
- */
-#define IPPROTO_HOPOPTS 0 /* IPv6 hop-by-hop options */
-#define IPPROTO_IPV6 41 /* IPv6 header. */
-#define IPPROTO_ROUTING 43 /* IPv6 routing header */
-#define IPPROTO_FRAGMENT 44 /* IPv6 fragmentation header */
-#define IPPROTO_ESP 50 /* encapsulating security payload */
-#define IPPROTO_AH 51 /* authentication header */
-#define IPPROTO_ICMPV6 58 /* ICMPv6 */
-#define IPPROTO_NONE 59 /* IPv6 no next header */
-#define IPPROTO_DSTOPTS 60 /* IPv6 destination options */
-#define IPPROTO_PIM 103 /* Protocol Independent Multicast. */
-
-#define IPV6_RTHDR_TYPE_0 0
-
-/* Option types and related macros */
-#define IP6OPT_PAD1 0x00 /* 00 0 00000 */
-#define IP6OPT_PADN 0x01 /* 00 0 00001 */
-#define IP6OPT_JUMBO 0xC2 /* 11 0 00010 = 194 */
-#define IP6OPT_JUMBO_LEN 6
-#define IP6OPT_ROUTER_ALERT 0x05 /* 00 0 00101 */
-
-#define IP6OPT_RTALERT_LEN 4
-#define IP6OPT_RTALERT_MLD 0 /* Datagram contains an MLD message */
-#define IP6OPT_RTALERT_RSVP 1 /* Datagram contains an RSVP message */
-#define IP6OPT_RTALERT_ACTNET 2 /* contains an Active Networks msg */
-#define IP6OPT_MINLEN 2
-
-#define IP6OPT_BINDING_UPDATE 0xc6 /* 11 0 00110 */
-#define IP6OPT_BINDING_ACK 0x07 /* 00 0 00111 */
-#define IP6OPT_BINDING_REQ 0x08 /* 00 0 01000 */
-#define IP6OPT_HOME_ADDRESS 0xc9 /* 11 0 01001 */
-#define IP6OPT_EID 0x8a /* 10 0 01010 */
-
-#define IP6OPT_TYPE( o ) ( ( o ) & 0xC0 )
-#define IP6OPT_TYPE_SKIP 0x00
-#define IP6OPT_TYPE_DISCARD 0x40
-#define IP6OPT_TYPE_FORCEICMP 0x80
-#define IP6OPT_TYPE_ICMP 0xC0
-
-#define IP6OPT_MUTABLE 0x20
-
-
-#if defined( __MINGW32__ ) && defined( DEFINE_ADDITIONAL_IPV6_STUFF )
- #ifndef EAI_ADDRFAMILY
- struct addrinfo
- {
- int ai_flags; /* AI_PASSIVE, AI_CANONNAME */
- int ai_family; /* PF_xxx */
- int ai_socktype; /* SOCK_xxx */
- int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
- size_t ai_addrlen; /* length of ai_addr */
- char * ai_canonname; /* canonical name for hostname */
- struct sockaddr * ai_addr; /* binary address */
- struct addrinfo * ai_next; /* next structure in linked list */
- };
- #endif /* ifndef EAI_ADDRFAMILY */
-#endif /* __MINGW32__ */
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/netif.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/netif.h
deleted file mode 100644
index 2d3c0d216..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/netif.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * FreeRTOS V202107.00
- * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of
- * this software and associated documentation files (the "Software"), to deal in
- * the Software without restriction, including without limitation the rights to
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
- * the Software, and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
- * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * http://www.FreeRTOS.org
- * http://aws.amazon.com/freertos
- *
- * 1 tab == 4 spaces!
- */
-
-#ifndef NET_IF_H
-#define NET_IF_H
-
-/*
- * Send uip_len bytes from uip_buf to the network interface selected by the
- * configNETWORK_INTERFACE_TO_USE constant (defined in FreeRTOSConfig.h).
- */
-void vNetifTx( void );
-
-/*
- * Receive bytes from the network interface selected by the
- * configNETWORK_INTERFACE_TO_USE constant (defined in FreeRTOSConfig.h). The
- * bytes are placed in uip_buf. The number of bytes copied into uip_buf is
- * returned.
- */
-UBaseType_t uxNetifRx( void );
-
-/*
- * Prepare a packet capture session. This will print out all the network
- * interfaces available, and the one actually used is set by the
- * configNETWORK_INTERFACE_TO_USE constant that is defined in
- * FreeRTOSConfig.h. */
-BaseType_t xNetifInit( void );
-
-#endif /* NET_IF_H */
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap-bpf.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap-bpf.h
deleted file mode 100644
index 2657827e0..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap-bpf.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from the Stanford/CMU enet packet filter,
- * (net/enet.c) distributed as part of 4.3BSD, and code contributed
- * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence
- * Berkeley Laboratory.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#) $Header: /tcpdump/master/libpcap/pcap-bpf.h,v 1.50 2007/04/01 21:43:55 guy Exp $ (LBL)
- */
-
-/*
- * For backwards compatibility.
- *
- * Note to OS vendors: do NOT get rid of this file! Some applications
- * might expect to be able to include <pcap-bpf.h>.
- */
-#include <pcap/bpf.h>
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap-namedb.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap-namedb.h
deleted file mode 100644
index 80a2f0040..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap-namedb.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 1994, 1996
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the Computer Systems
- * Engineering Group at Lawrence Berkeley Laboratory.
- * 4. Neither the name of the University nor of the Laboratory may be used
- * to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#) $Header: /tcpdump/master/libpcap/pcap-namedb.h,v 1.13 2006/10/04 18:13:32 guy Exp $ (LBL)
- */
-
-/*
- * For backwards compatibility.
- *
- * Note to OS vendors: do NOT get rid of this file! Some applications
- * might expect to be able to include <pcap-namedb.h>.
- */
-#include <pcap/namedb.h>
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap-stdinc.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap-stdinc.h
deleted file mode 100644
index 9cde17fb3..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap-stdinc.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2002 - 2005 NetGroup, Politecnico di Torino (Italy)
- * Copyright (c) 2005 - 2009 CACE Technologies, Inc. Davis (California)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Politecnico di Torino nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * @(#) $Header: /tcpdump/master/libpcap/pcap-stdinc.h,v 1.10.2.1 2008-10-06 15:38:39 gianluca Exp $ (LBL)
- */
-
-#define SIZEOF_CHAR 1
-#define SIZEOF_SHORT 2
-#define SIZEOF_INT 4
-#ifndef _MSC_EXTENSIONS
- #define SIZEOF_LONG_LONG 8
-#endif
-
-/*
- * Avoids a compiler warning in case this was already defined
- * (someone defined _WINSOCKAPI_ when including 'windows.h', in order
- * to prevent it from including 'winsock.h')
- */
-#ifdef _WINSOCKAPI_
- #undef _WINSOCKAPI_
-#endif
-#include <winsock2.h>
-
-#include <fcntl.h>
-
-#include "bittypes.h"
-#include <time.h>
-#include <io.h>
-
-#ifndef __MINGW32__
- #include "IP6_misc.h"
-#endif
-
-#define caddr_t char *
-
-#if _MSC_VER < 1500
- #define snprintf _snprintf
- #define vsnprintf _vsnprintf
- #define strdup _strdup
-#endif
-
-#define inline __inline
-
-#ifdef __MINGW32__
- #include <stdint.h>
-#else /*__MINGW32__*/
-/* MSVC compiler */
- #ifndef _UINTPTR_T_DEFINED
- #ifdef _WIN64
- typedef unsigned __int64 uintptr_t;
- #else
- typedef _W64 unsigned int uintptr_t;
- #endif
- #define _UINTPTR_T_DEFINED
- #endif
-
- #ifndef _INTPTR_T_DEFINED
- #ifdef _WIN64
- typedef __int64 intptr_t;
- #else
- typedef _W64 int intptr_t;
- #endif
- #define _INTPTR_T_DEFINED
- #endif
-
-#endif /*__MINGW32__*/
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap.h
deleted file mode 100644
index 935f9494c..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 1993, 1994, 1995, 1996, 1997
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the Computer Systems
- * Engineering Group at Lawrence Berkeley Laboratory.
- * 4. Neither the name of the University nor of the Laboratory may be used
- * to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#) $Header: /tcpdump/master/libpcap/pcap.h,v 1.59 2006/10/04 18:09:22 guy Exp $ (LBL)
- */
-
-/*
- * For backwards compatibility.
- *
- * Note to OS vendors: do NOT get rid of this file! Many applications
- * expect to be able to include <pcap.h>, and at least some of them
- * go through contortions in their configure scripts to try to detect
- * OSes that have "helpfully" moved pcap.h to <pcap/pcap.h> without
- * leaving behind a <pcap.h> file.
- */
-#include <pcap/pcap.h>
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/bluetooth.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/bluetooth.h
deleted file mode 100644
index 7bf65df03..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/bluetooth.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2006 Paolo Abeni (Italy)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * bluetooth data struct
- * By Paolo Abeni <paolo.abeni@email.it>
- *
- * @(#) $Header: /tcpdump/master/libpcap/pcap/bluetooth.h,v 1.1 2007/09/22 02:10:17 guy Exp $
- */
-
-#ifndef _PCAP_BLUETOOTH_STRUCTS_H__
-#define _PCAP_BLUETOOTH_STRUCTS_H__
-
-/*
- * Header prepended libpcap to each bluetooth h:4 frame.
- * fields are in network byte order
- */
-typedef struct _pcap_bluetooth_h4_header {
- u_int32_t direction; /* if first bit is set direction is incoming */
-} pcap_bluetooth_h4_header;
-
-
-#endif
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/bpf.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/bpf.h
deleted file mode 100644
index 9f4ca33e3..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/bpf.h
+++ /dev/null
@@ -1,934 +0,0 @@
-/*-
- * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from the Stanford/CMU enet packet filter,
- * (net/enet.c) distributed as part of 4.3BSD, and code contributed
- * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence
- * Berkeley Laboratory.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)bpf.h 7.1 (Berkeley) 5/7/91
- *
- * @(#) $Header: /tcpdump/master/libpcap/pcap/bpf.h,v 1.19.2.8 2008-09-22 20:16:01 guy Exp $ (LBL)
- */
-
-/*
- * This is libpcap's cut-down version of bpf.h; it includes only
- * the stuff needed for the code generator and the userland BPF
- * interpreter, and the libpcap APIs for setting filters, etc..
- *
- * "pcap-bpf.c" will include the native OS version, as it deals with
- * the OS's BPF implementation.
- *
- * XXX - should this all just be moved to "pcap.h"?
- */
-
-#ifndef BPF_MAJOR_VERSION
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* BSD style release date */
-#define BPF_RELEASE 199606
-
-#ifdef MSDOS /* must be 32-bit */
-typedef long bpf_int32;
-typedef unsigned long bpf_u_int32;
-#else
-typedef int bpf_int32;
-typedef u_int bpf_u_int32;
-#endif
-
-/*
- * Alignment macros. BPF_WORDALIGN rounds up to the next
- * even multiple of BPF_ALIGNMENT.
- */
-#ifndef __NetBSD__
-#define BPF_ALIGNMENT sizeof(bpf_int32)
-#else
-#define BPF_ALIGNMENT sizeof(long)
-#endif
-#define BPF_WORDALIGN(x) (((x)+(BPF_ALIGNMENT-1))&~(BPF_ALIGNMENT-1))
-
-#define BPF_MAXBUFSIZE 0x8000
-#define BPF_MINBUFSIZE 32
-
-/*
- * Structure for "pcap_compile()", "pcap_setfilter()", etc..
- */
-struct bpf_program {
- u_int bf_len;
- struct bpf_insn *bf_insns;
-};
-
-/*
- * Struct return by BIOCVERSION. This represents the version number of
- * the filter language described by the instruction encodings below.
- * bpf understands a program iff kernel_major == filter_major &&
- * kernel_minor >= filter_minor, that is, if the value returned by the
- * running kernel has the same major number and a minor number equal
- * equal to or less than the filter being downloaded. Otherwise, the
- * results are undefined, meaning an error may be returned or packets
- * may be accepted haphazardly.
- * It has nothing to do with the source code version.
- */
-struct bpf_version {
- u_short bv_major;
- u_short bv_minor;
-};
-/* Current version number of filter architecture. */
-#define BPF_MAJOR_VERSION 1
-#define BPF_MINOR_VERSION 1
-
-/*
- * Data-link level type codes.
- *
- * Do *NOT* add new values to this list without asking
- * "tcpdump-workers@lists.tcpdump.org" for a value. Otherwise, you run
- * the risk of using a value that's already being used for some other
- * purpose, and of having tools that read libpcap-format captures not
- * being able to handle captures with your new DLT_ value, with no hope
- * that they will ever be changed to do so (as that would destroy their
- * ability to read captures using that value for that other purpose).
- */
-
-/*
- * These are the types that are the same on all platforms, and that
- * have been defined by <net/bpf.h> for ages.
- */
-#define DLT_NULL 0 /* BSD loopback encapsulation */
-#define DLT_EN10MB 1 /* Ethernet (10Mb) */
-#define DLT_EN3MB 2 /* Experimental Ethernet (3Mb) */
-#define DLT_AX25 3 /* Amateur Radio AX.25 */
-#define DLT_PRONET 4 /* Proteon ProNET Token Ring */
-#define DLT_CHAOS 5 /* Chaos */
-#define DLT_IEEE802 6 /* 802.5 Token Ring */
-#define DLT_ARCNET 7 /* ARCNET, with BSD-style header */
-#define DLT_SLIP 8 /* Serial Line IP */
-#define DLT_PPP 9 /* Point-to-point Protocol */
-#define DLT_FDDI 10 /* FDDI */
-
-/*
- * These are types that are different on some platforms, and that
- * have been defined by <net/bpf.h> for ages. We use #ifdefs to
- * detect the BSDs that define them differently from the traditional
- * libpcap <net/bpf.h>
- *
- * XXX - DLT_ATM_RFC1483 is 13 in BSD/OS, and DLT_RAW is 14 in BSD/OS,
- * but I don't know what the right #define is for BSD/OS.
- */
-#define DLT_ATM_RFC1483 11 /* LLC-encapsulated ATM */
-
-#ifdef __OpenBSD__
-#define DLT_RAW 14 /* raw IP */
-#else
-#define DLT_RAW 12 /* raw IP */
-#endif
-
-/*
- * Given that the only OS that currently generates BSD/OS SLIP or PPP
- * is, well, BSD/OS, arguably everybody should have chosen its values
- * for DLT_SLIP_BSDOS and DLT_PPP_BSDOS, which are 15 and 16, but they
- * didn't. So it goes.
- */
-#if defined(__NetBSD__) || defined(__FreeBSD__)
-#ifndef DLT_SLIP_BSDOS
-#define DLT_SLIP_BSDOS 13 /* BSD/OS Serial Line IP */
-#define DLT_PPP_BSDOS 14 /* BSD/OS Point-to-point Protocol */
-#endif
-#else
-#define DLT_SLIP_BSDOS 15 /* BSD/OS Serial Line IP */
-#define DLT_PPP_BSDOS 16 /* BSD/OS Point-to-point Protocol */
-#endif
-
-/*
- * 17 is used for DLT_OLD_PFLOG in OpenBSD;
- * OBSOLETE: DLT_PFLOG is 117 in OpenBSD now as well. See below.
- * 18 is used for DLT_PFSYNC in OpenBSD; don't use it for anything else.
- */
-
-#define DLT_ATM_CLIP 19 /* Linux Classical-IP over ATM */
-
-/*
- * Apparently Redback uses this for its SmartEdge 400/800. I hope
- * nobody else decided to use it, too.
- */
-#define DLT_REDBACK_SMARTEDGE 32
-
-/*
- * These values are defined by NetBSD; other platforms should refrain from
- * using them for other purposes, so that NetBSD savefiles with link
- * types of 50 or 51 can be read as this type on all platforms.
- */
-#define DLT_PPP_SERIAL 50 /* PPP over serial with HDLC encapsulation */
-#define DLT_PPP_ETHER 51 /* PPP over Ethernet */
-
-/*
- * The Axent Raptor firewall - now the Symantec Enterprise Firewall - uses
- * a link-layer type of 99 for the tcpdump it supplies. The link-layer
- * header has 6 bytes of unknown data, something that appears to be an
- * Ethernet type, and 36 bytes that appear to be 0 in at least one capture
- * I've seen.
- */
-#define DLT_SYMANTEC_FIREWALL 99
-
-/*
- * Values between 100 and 103 are used in capture file headers as
- * link-layer types corresponding to DLT_ types that differ
- * between platforms; don't use those values for new DLT_ new types.
- */
-
-/*
- * This value was defined by libpcap 0.5; platforms that have defined
- * it with a different value should define it here with that value -
- * a link type of 104 in a save file will be mapped to DLT_C_HDLC,
- * whatever value that happens to be, so programs will correctly
- * handle files with that link type regardless of the value of
- * DLT_C_HDLC.
- *
- * The name DLT_C_HDLC was used by BSD/OS; we use that name for source
- * compatibility with programs written for BSD/OS.
- *
- * libpcap 0.5 defined it as DLT_CHDLC; we define DLT_CHDLC as well,
- * for source compatibility with programs written for libpcap 0.5.
- */
-#define DLT_C_HDLC 104 /* Cisco HDLC */
-#define DLT_CHDLC DLT_C_HDLC
-
-#define DLT_IEEE802_11 105 /* IEEE 802.11 wireless */
-
-/*
- * 106 is reserved for Linux Classical IP over ATM; it's like DLT_RAW,
- * except when it isn't. (I.e., sometimes it's just raw IP, and
- * sometimes it isn't.) We currently handle it as DLT_LINUX_SLL,
- * so that we don't have to worry about the link-layer header.)
- */
-
-/*
- * Frame Relay; BSD/OS has a DLT_FR with a value of 11, but that collides
- * with other values.
- * DLT_FR and DLT_FRELAY packets start with the Q.922 Frame Relay header
- * (DLCI, etc.).
- */
-#define DLT_FRELAY 107
-
-/*
- * OpenBSD DLT_LOOP, for loopback devices; it's like DLT_NULL, except
- * that the AF_ type in the link-layer header is in network byte order.
- *
- * DLT_LOOP is 12 in OpenBSD, but that's DLT_RAW in other OSes, so
- * we don't use 12 for it in OSes other than OpenBSD.
- */
-#ifdef __OpenBSD__
-#define DLT_LOOP 12
-#else
-#define DLT_LOOP 108
-#endif
-
-/*
- * Encapsulated packets for IPsec; DLT_ENC is 13 in OpenBSD, but that's
- * DLT_SLIP_BSDOS in NetBSD, so we don't use 13 for it in OSes other
- * than OpenBSD.
- */
-#ifdef __OpenBSD__
-#define DLT_ENC 13
-#else
-#define DLT_ENC 109
-#endif
-
-/*
- * Values between 110 and 112 are reserved for use in capture file headers
- * as link-layer types corresponding to DLT_ types that might differ
- * between platforms; don't use those values for new DLT_ types
- * other than the corresponding DLT_ types.
- */
-
-/*
- * This is for Linux cooked sockets.
- */
-#define DLT_LINUX_SLL 113
-
-/*
- * Apple LocalTalk hardware.
- */
-#define DLT_LTALK 114
-
-/*
- * Acorn Econet.
- */
-#define DLT_ECONET 115
-
-/*
- * Reserved for use with OpenBSD ipfilter.
- */
-#define DLT_IPFILTER 116
-
-/*
- * OpenBSD DLT_PFLOG; DLT_PFLOG is 17 in OpenBSD, but that's DLT_LANE8023
- * in SuSE 6.3, so we can't use 17 for it in capture-file headers.
- *
- * XXX: is there a conflict with DLT_PFSYNC 18 as well?
- */
-#ifdef __OpenBSD__
-#define DLT_OLD_PFLOG 17
-#define DLT_PFSYNC 18
-#endif
-#define DLT_PFLOG 117
-
-/*
- * Registered for Cisco-internal use.
- */
-#define DLT_CISCO_IOS 118
-
-/*
- * For 802.11 cards using the Prism II chips, with a link-layer
- * header including Prism monitor mode information plus an 802.11
- * header.
- */
-#define DLT_PRISM_HEADER 119
-
-/*
- * Reserved for Aironet 802.11 cards, with an Aironet link-layer header
- * (see Doug Ambrisko's FreeBSD patches).
- */
-#define DLT_AIRONET_HEADER 120
-
-/*
- * Reserved for Siemens HiPath HDLC.
- */
-#define DLT_HHDLC 121
-
-/*
- * This is for RFC 2625 IP-over-Fibre Channel.
- *
- * This is not for use with raw Fibre Channel, where the link-layer
- * header starts with a Fibre Channel frame header; it's for IP-over-FC,
- * where the link-layer header starts with an RFC 2625 Network_Header
- * field.
- */
-#define DLT_IP_OVER_FC 122
-
-/*
- * This is for Full Frontal ATM on Solaris with SunATM, with a
- * pseudo-header followed by an AALn PDU.
- *
- * There may be other forms of Full Frontal ATM on other OSes,
- * with different pseudo-headers.
- *
- * If ATM software returns a pseudo-header with VPI/VCI information
- * (and, ideally, packet type information, e.g. signalling, ILMI,
- * LANE, LLC-multiplexed traffic, etc.), it should not use
- * DLT_ATM_RFC1483, but should get a new DLT_ value, so tcpdump
- * and the like don't have to infer the presence or absence of a
- * pseudo-header and the form of the pseudo-header.
- */
-#define DLT_SUNATM 123 /* Solaris+SunATM */
-
-/*
- * Reserved as per request from Kent Dahlgren <kent@praesum.com>
- * for private use.
- */
-#define DLT_RIO 124 /* RapidIO */
-#define DLT_PCI_EXP 125 /* PCI Express */
-#define DLT_AURORA 126 /* Xilinx Aurora link layer */
-
-/*
- * Header for 802.11 plus a number of bits of link-layer information
- * including radio information, used by some recent BSD drivers as
- * well as the madwifi Atheros driver for Linux.
- */
-#define DLT_IEEE802_11_RADIO 127 /* 802.11 plus radiotap radio header */
-
-/*
- * Reserved for the TZSP encapsulation, as per request from
- * Chris Waters <chris.waters@networkchemistry.com>
- * TZSP is a generic encapsulation for any other link type,
- * which includes a means to include meta-information
- * with the packet, e.g. signal strength and channel
- * for 802.11 packets.
- */
-#define DLT_TZSP 128 /* Tazmen Sniffer Protocol */
-
-/*
- * BSD's ARCNET headers have the source host, destination host,
- * and type at the beginning of the packet; that's what's handed
- * up to userland via BPF.
- *
- * Linux's ARCNET headers, however, have a 2-byte offset field
- * between the host IDs and the type; that's what's handed up
- * to userland via PF_PACKET sockets.
- *
- * We therefore have to have separate DLT_ values for them.
- */
-#define DLT_ARCNET_LINUX 129 /* ARCNET */
-
-/*
- * Juniper-private data link types, as per request from
- * Hannes Gredler <hannes@juniper.net>. The DLT_s are used
- * for passing on chassis-internal metainformation such as
- * QOS profiles, etc..
- */
-#define DLT_JUNIPER_MLPPP 130
-#define DLT_JUNIPER_MLFR 131
-#define DLT_JUNIPER_ES 132
-#define DLT_JUNIPER_GGSN 133
-#define DLT_JUNIPER_MFR 134
-#define DLT_JUNIPER_ATM2 135
-#define DLT_JUNIPER_SERVICES 136
-#define DLT_JUNIPER_ATM1 137
-
-/*
- * Apple IP-over-IEEE 1394, as per a request from Dieter Siegmund
- * <dieter@apple.com>. The header that's presented is an Ethernet-like
- * header:
- *
- * #define FIREWIRE_EUI64_LEN 8
- * struct firewire_header {
- * u_char firewire_dhost[FIREWIRE_EUI64_LEN];
- * u_char firewire_shost[FIREWIRE_EUI64_LEN];
- * u_short firewire_type;
- * };
- *
- * with "firewire_type" being an Ethernet type value, rather than,
- * for example, raw GASP frames being handed up.
- */
-#define DLT_APPLE_IP_OVER_IEEE1394 138
-
-/*
- * Various SS7 encapsulations, as per a request from Jeff Morriss
- * <jeff.morriss[AT]ulticom.com> and subsequent discussions.
- */
-#define DLT_MTP2_WITH_PHDR 139 /* pseudo-header with various info, followed by MTP2 */
-#define DLT_MTP2 140 /* MTP2, without pseudo-header */
-#define DLT_MTP3 141 /* MTP3, without pseudo-header or MTP2 */
-#define DLT_SCCP 142 /* SCCP, without pseudo-header or MTP2 or MTP3 */
-
-/*
- * DOCSIS MAC frames.
- */
-#define DLT_DOCSIS 143
-
-/*
- * Linux-IrDA packets. Protocol defined at http://www.irda.org.
- * Those packets include IrLAP headers and above (IrLMP...), but
- * don't include Phy framing (SOF/EOF/CRC & byte stuffing), because Phy
- * framing can be handled by the hardware and depend on the bitrate.
- * This is exactly the format you would get capturing on a Linux-IrDA
- * interface (irdaX), but not on a raw serial port.
- * Note the capture is done in "Linux-cooked" mode, so each packet include
- * a fake packet header (struct sll_header). This is because IrDA packet
- * decoding is dependant on the direction of the packet (incomming or
- * outgoing).
- * When/if other platform implement IrDA capture, we may revisit the
- * issue and define a real DLT_IRDA...
- * Jean II
- */
-#define DLT_LINUX_IRDA 144
-
-/*
- * Reserved for IBM SP switch and IBM Next Federation switch.
- */
-#define DLT_IBM_SP 145
-#define DLT_IBM_SN 146
-
-/*
- * Reserved for private use. If you have some link-layer header type
- * that you want to use within your organization, with the capture files
- * using that link-layer header type not ever be sent outside your
- * organization, you can use these values.
- *
- * No libpcap release will use these for any purpose, nor will any
- * tcpdump release use them, either.
- *
- * Do *NOT* use these in capture files that you expect anybody not using
- * your private versions of capture-file-reading tools to read; in
- * particular, do *NOT* use them in products, otherwise you may find that
- * people won't be able to use tcpdump, or snort, or Ethereal, or... to
- * read capture files from your firewall/intrusion detection/traffic
- * monitoring/etc. appliance, or whatever product uses that DLT_ value,
- * and you may also find that the developers of those applications will
- * not accept patches to let them read those files.
- *
- * Also, do not use them if somebody might send you a capture using them
- * for *their* private type and tools using them for *your* private type
- * would have to read them.
- *
- * Instead, ask "tcpdump-workers@lists.tcpdump.org" for a new DLT_ value,
- * as per the comment above, and use the type you're given.
- */
-#define DLT_USER0 147
-#define DLT_USER1 148
-#define DLT_USER2 149
-#define DLT_USER3 150
-#define DLT_USER4 151
-#define DLT_USER5 152
-#define DLT_USER6 153
-#define DLT_USER7 154
-#define DLT_USER8 155
-#define DLT_USER9 156
-#define DLT_USER10 157
-#define DLT_USER11 158
-#define DLT_USER12 159
-#define DLT_USER13 160
-#define DLT_USER14 161
-#define DLT_USER15 162
-
-/*
- * For future use with 802.11 captures - defined by AbsoluteValue
- * Systems to store a number of bits of link-layer information
- * including radio information:
- *
- * http://www.shaftnet.org/~pizza/software/capturefrm.txt
- *
- * but it might be used by some non-AVS drivers now or in the
- * future.
- */
-#define DLT_IEEE802_11_RADIO_AVS 163 /* 802.11 plus AVS radio header */
-
-/*
- * Juniper-private data link type, as per request from
- * Hannes Gredler <hannes@juniper.net>. The DLT_s are used
- * for passing on chassis-internal metainformation such as
- * QOS profiles, etc..
- */
-#define DLT_JUNIPER_MONITOR 164
-
-/*
- * Reserved for BACnet MS/TP.
- */
-#define DLT_BACNET_MS_TP 165
-
-/*
- * Another PPP variant as per request from Karsten Keil <kkeil@suse.de>.
- *
- * This is used in some OSes to allow a kernel socket filter to distinguish
- * between incoming and outgoing packets, on a socket intended to
- * supply pppd with outgoing packets so it can do dial-on-demand and
- * hangup-on-lack-of-demand; incoming packets are filtered out so they
- * don't cause pppd to hold the connection up (you don't want random
- * input packets such as port scans, packets from old lost connections,
- * etc. to force the connection to stay up).
- *
- * The first byte of the PPP header (0xff03) is modified to accomodate
- * the direction - 0x00 = IN, 0x01 = OUT.
- */
-#define DLT_PPP_PPPD 166
-
-/*
- * Names for backwards compatibility with older versions of some PPP
- * software; new software should use DLT_PPP_PPPD.
- */
-#define DLT_PPP_WITH_DIRECTION DLT_PPP_PPPD
-#define DLT_LINUX_PPP_WITHDIRECTION DLT_PPP_PPPD
-
-/*
- * Juniper-private data link type, as per request from
- * Hannes Gredler <hannes@juniper.net>. The DLT_s are used
- * for passing on chassis-internal metainformation such as
- * QOS profiles, cookies, etc..
- */
-#define DLT_JUNIPER_PPPOE 167
-#define DLT_JUNIPER_PPPOE_ATM 168
-
-#define DLT_GPRS_LLC 169 /* GPRS LLC */
-#define DLT_GPF_T 170 /* GPF-T (ITU-T G.7041/Y.1303) */
-#define DLT_GPF_F 171 /* GPF-F (ITU-T G.7041/Y.1303) */
-
-/*
- * Requested by Oolan Zimmer <oz@gcom.com> for use in Gcom's T1/E1 line
- * monitoring equipment.
- */
-#define DLT_GCOM_T1E1 172
-#define DLT_GCOM_SERIAL 173
-
-/*
- * Juniper-private data link type, as per request from
- * Hannes Gredler <hannes@juniper.net>. The DLT_ is used
- * for internal communication to Physical Interface Cards (PIC)
- */
-#define DLT_JUNIPER_PIC_PEER 174
-
-/*
- * Link types requested by Gregor Maier <gregor@endace.com> of Endace
- * Measurement Systems. They add an ERF header (see
- * http://www.endace.com/support/EndaceRecordFormat.pdf) in front of
- * the link-layer header.
- */
-#define DLT_ERF_ETH 175 /* Ethernet */
-#define DLT_ERF_POS 176 /* Packet-over-SONET */
-
-/*
- * Requested by Daniele Orlandi <daniele@orlandi.com> for raw LAPD
- * for vISDN (http://www.orlandi.com/visdn/). Its link-layer header
- * includes additional information before the LAPD header, so it's
- * not necessarily a generic LAPD header.
- */
-#define DLT_LINUX_LAPD 177
-
-/*
- * Juniper-private data link type, as per request from
- * Hannes Gredler <hannes@juniper.net>.
- * The DLT_ are used for prepending meta-information
- * like interface index, interface name
- * before standard Ethernet, PPP, Frelay & C-HDLC Frames
- */
-#define DLT_JUNIPER_ETHER 178
-#define DLT_JUNIPER_PPP 179
-#define DLT_JUNIPER_FRELAY 180
-#define DLT_JUNIPER_CHDLC 181
-
-/*
- * Multi Link Frame Relay (FRF.16)
- */
-#define DLT_MFR 182
-
-/*
- * Juniper-private data link type, as per request from
- * Hannes Gredler <hannes@juniper.net>.
- * The DLT_ is used for internal communication with a
- * voice Adapter Card (PIC)
- */
-#define DLT_JUNIPER_VP 183
-
-/*
- * Arinc 429 frames.
- * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.
- * Every frame contains a 32bit A429 label.
- * More documentation on Arinc 429 can be found at
- * http://www.condoreng.com/support/downloads/tutorials/ARINCTutorial.pdf
- */
-#define DLT_A429 184
-
-/*
- * Arinc 653 Interpartition Communication messages.
- * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.
- * Please refer to the A653-1 standard for more information.
- */
-#define DLT_A653_ICM 185
-
-/*
- * USB packets, beginning with a USB setup header; requested by
- * Paolo Abeni <paolo.abeni@email.it>.
- */
-#define DLT_USB 186
-
-/*
- * Bluetooth HCI UART transport layer (part H:4); requested by
- * Paolo Abeni.
- */
-#define DLT_BLUETOOTH_HCI_H4 187
-
-/*
- * IEEE 802.16 MAC Common Part Sublayer; requested by Maria Cruz
- * <cruz_petagay@bah.com>.
- */
-#define DLT_IEEE802_16_MAC_CPS 188
-
-/*
- * USB packets, beginning with a Linux USB header; requested by
- * Paolo Abeni <paolo.abeni@email.it>.
- */
-#define DLT_USB_LINUX 189
-
-/*
- * Controller Area Network (CAN) v. 2.0B packets.
- * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.
- * Used to dump CAN packets coming from a CAN Vector board.
- * More documentation on the CAN v2.0B frames can be found at
- * http://www.can-cia.org/downloads/?269
- */
-#define DLT_CAN20B 190
-
-/*
- * IEEE 802.15.4, with address fields padded, as is done by Linux
- * drivers; requested by Juergen Schimmer.
- */
-#define DLT_IEEE802_15_4_LINUX 191
-
-/*
- * Per Packet Information encapsulated packets.
- * DLT_ requested by Gianluca Varenni <gianluca.varenni@cacetech.com>.
- */
-#define DLT_PPI 192
-
-/*
- * Header for 802.16 MAC Common Part Sublayer plus a radiotap radio header;
- * requested by Charles Clancy.
- */
-#define DLT_IEEE802_16_MAC_CPS_RADIO 193
-
-/*
- * Juniper-private data link type, as per request from
- * Hannes Gredler <hannes@juniper.net>.
- * The DLT_ is used for internal communication with a
- * integrated service module (ISM).
- */
-#define DLT_JUNIPER_ISM 194
-
-/*
- * IEEE 802.15.4, exactly as it appears in the spec (no padding, no
- * nothing); requested by Mikko Saarnivala <mikko.saarnivala@sensinode.com>.
- */
-#define DLT_IEEE802_15_4 195
-
-/*
- * Various link-layer types, with a pseudo-header, for SITA
- * (http://www.sita.aero/); requested by Fulko Hew (fulko.hew@gmail.com).
- */
-#define DLT_SITA 196
-
-/*
- * Various link-layer types, with a pseudo-header, for Endace DAG cards;
- * encapsulates Endace ERF records. Requested by Stephen Donnelly
- * <stephen@endace.com>.
- */
-#define DLT_ERF 197
-
-/*
- * Special header prepended to Ethernet packets when capturing from a
- * u10 Networks board. Requested by Phil Mulholland
- * <phil@u10networks.com>.
- */
-#define DLT_RAIF1 198
-
-/*
- * IPMB packet for IPMI, beginning with the I2C slave address, followed
- * by the netFn and LUN, etc.. Requested by Chanthy Toeung
- * <chanthy.toeung@ca.kontron.com>.
- */
-#define DLT_IPMB 199
-
-/*
- * Juniper-private data link type, as per request from
- * Hannes Gredler <hannes@juniper.net>.
- * The DLT_ is used for capturing data on a secure tunnel interface.
- */
-#define DLT_JUNIPER_ST 200
-
-/*
- * Bluetooth HCI UART transport layer (part H:4), with pseudo-header
- * that includes direction information; requested by Paolo Abeni.
- */
-#define DLT_BLUETOOTH_HCI_H4_WITH_PHDR 201
-
-/*
- * AX.25 packet with a 1-byte KISS header; see
- *
- * http://www.ax25.net/kiss.htm
- *
- * as per Richard Stearn <richard@rns-stearn.demon.co.uk>.
- */
-#define DLT_AX25_KISS 202
-
-/*
- * LAPD packets from an ISDN channel, starting with the address field,
- * with no pseudo-header.
- * Requested by Varuna De Silva <varunax@gmail.com>.
- */
-#define DLT_LAPD 203
-
-/*
- * Variants of various link-layer headers, with a one-byte direction
- * pseudo-header prepended - zero means "received by this host",
- * non-zero (any non-zero value) means "sent by this host" - as per
- * Will Barker <w.barker@zen.co.uk>.
- */
-#define DLT_PPP_WITH_DIR 204 /* PPP - don't confuse with DLT_PPP_WITH_DIRECTION */
-#define DLT_C_HDLC_WITH_DIR 205 /* Cisco HDLC */
-#define DLT_FRELAY_WITH_DIR 206 /* Frame Relay */
-#define DLT_LAPB_WITH_DIR 207 /* LAPB */
-
-/*
- * 208 is reserved for an as-yet-unspecified proprietary link-layer
- * type, as requested by Will Barker.
- */
-
-/*
- * IPMB with a Linux-specific pseudo-header; as requested by Alexey Neyman
- * <avn@pigeonpoint.com>.
- */
-#define DLT_IPMB_LINUX 209
-
-/*
- * FlexRay automotive bus - http://www.flexray.com/ - as requested
- * by Hannes Kaelber <hannes.kaelber@x2e.de>.
- */
-#define DLT_FLEXRAY 210
-
-/*
- * Media Oriented Systems Transport (MOST) bus for multimedia
- * transport - http://www.mostcooperation.com/ - as requested
- * by Hannes Kaelber <hannes.kaelber@x2e.de>.
- */
-#define DLT_MOST 211
-
-/*
- * Local Interconnect Network (LIN) bus for vehicle networks -
- * http://www.lin-subbus.org/ - as requested by Hannes Kaelber
- * <hannes.kaelber@x2e.de>.
- */
-#define DLT_LIN 212
-
-/*
- * X2E-private data link type used for serial line capture,
- * as requested by Hannes Kaelber <hannes.kaelber@x2e.de>.
- */
-#define DLT_X2E_SERIAL 213
-
-/*
- * X2E-private data link type used for the Xoraya data logger
- * family, as requested by Hannes Kaelber <hannes.kaelber@x2e.de>.
- */
-#define DLT_X2E_XORAYA 214
-
-/*
- * IEEE 802.15.4, exactly as it appears in the spec (no padding, no
- * nothing), but with the PHY-level data for non-ASK PHYs (4 octets
- * of 0 as preamble, one octet of SFD, one octet of frame length+
- * reserved bit, and then the MAC-layer data, starting with the
- * frame control field).
- *
- * Requested by Max Filippov <jcmvbkbc@gmail.com>.
- */
-#define DLT_IEEE802_15_4_NONASK_PHY 215
-
-
-/*
- * DLT and savefile link type values are split into a class and
- * a member of that class. A class value of 0 indicates a regular
- * DLT_/LINKTYPE_ value.
- */
-#define DLT_CLASS(x) ((x) & 0x03ff0000)
-
-/*
- * NetBSD-specific generic "raw" link type. The class value indicates
- * that this is the generic raw type, and the lower 16 bits are the
- * address family we're dealing with. Those values are NetBSD-specific;
- * do not assume that they correspond to AF_ values for your operating
- * system.
- */
-#define DLT_CLASS_NETBSD_RAWAF 0x02240000
-#define DLT_NETBSD_RAWAF(af) (DLT_CLASS_NETBSD_RAWAF | (af))
-#define DLT_NETBSD_RAWAF_AF(x) ((x) & 0x0000ffff)
-#define DLT_IS_NETBSD_RAWAF(x) (DLT_CLASS(x) == DLT_CLASS_NETBSD_RAWAF)
-
-
-/*
- * The instruction encodings.
- */
-/* instruction classes */
-#define BPF_CLASS(code) ((code) & 0x07)
-#define BPF_LD 0x00
-#define BPF_LDX 0x01
-#define BPF_ST 0x02
-#define BPF_STX 0x03
-#define BPF_ALU 0x04
-#define BPF_JMP 0x05
-#define BPF_RET 0x06
-#define BPF_MISC 0x07
-
-/* ld/ldx fields */
-#define BPF_SIZE(code) ((code) & 0x18)
-#define BPF_W 0x00
-#define BPF_H 0x08
-#define BPF_B 0x10
-#define BPF_MODE(code) ((code) & 0xe0)
-#define BPF_IMM 0x00
-#define BPF_ABS 0x20
-#define BPF_IND 0x40
-#define BPF_MEM 0x60
-#define BPF_LEN 0x80
-#define BPF_MSH 0xa0
-
-/* alu/jmp fields */
-#define BPF_OP(code) ((code) & 0xf0)
-#define BPF_ADD 0x00
-#define BPF_SUB 0x10
-#define BPF_MUL 0x20
-#define BPF_DIV 0x30
-#define BPF_OR 0x40
-#define BPF_AND 0x50
-#define BPF_LSH 0x60
-#define BPF_RSH 0x70
-#define BPF_NEG 0x80
-#define BPF_JA 0x00
-#define BPF_JEQ 0x10
-#define BPF_JGT 0x20
-#define BPF_JGE 0x30
-#define BPF_JSET 0x40
-#define BPF_SRC(code) ((code) & 0x08)
-#define BPF_K 0x00
-#define BPF_X 0x08
-
-/* ret - BPF_K and BPF_X also apply */
-#define BPF_RVAL(code) ((code) & 0x18)
-#define BPF_A 0x10
-
-/* misc */
-#define BPF_MISCOP(code) ((code) & 0xf8)
-#define BPF_TAX 0x00
-#define BPF_TXA 0x80
-
-/*
- * The instruction data structure.
- */
-struct bpf_insn {
- u_short code;
- u_char jt;
- u_char jf;
- bpf_u_int32 k;
-};
-
-/*
- * Macros for insn array initializers.
- */
-#define BPF_STMT(code, k) { (u_short)(code), 0, 0, k }
-#define BPF_JUMP(code, k, jt, jf) { (u_short)(code), jt, jf, k }
-
-#if __STDC__ || defined(__cplusplus)
-extern int bpf_validate(const struct bpf_insn *, int);
-extern u_int bpf_filter(const struct bpf_insn *, const u_char *, u_int, u_int);
-#else
-extern int bpf_validate();
-extern u_int bpf_filter();
-#endif
-
-/*
- * Number of scratch memory words (for BPF_LD|BPF_MEM and BPF_ST).
- */
-#define BPF_MEMWORDS 16
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/namedb.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/namedb.h
deleted file mode 100644
index 9002c7509..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/namedb.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 1994, 1996
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the Computer Systems
- * Engineering Group at Lawrence Berkeley Laboratory.
- * 4. Neither the name of the University nor of the Laboratory may be used
- * to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#) $Header: /tcpdump/master/libpcap/pcap/namedb.h,v 1.1 2006/10/04 18:09:22 guy Exp $ (LBL)
- */
-
-#ifndef lib_pcap_namedb_h
-#define lib_pcap_namedb_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * As returned by the pcap_next_etherent()
- * XXX this stuff doesn't belong in this interface, but this
- * library already must do name to address translation, so
- * on systems that don't have support for /etc/ethers, we
- * export these hooks since they'll
- */
-struct pcap_etherent {
- u_char addr[6];
- char name[122];
-};
-#ifndef PCAP_ETHERS_FILE
-#define PCAP_ETHERS_FILE "/etc/ethers"
-#endif
-struct pcap_etherent *pcap_next_etherent(FILE *);
-u_char *pcap_ether_hostton(const char*);
-u_char *pcap_ether_aton(const char *);
-
-bpf_u_int32 **pcap_nametoaddr(const char *);
-#ifdef INET6
-struct addrinfo *pcap_nametoaddrinfo(const char *);
-#endif
-bpf_u_int32 pcap_nametonetaddr(const char *);
-
-int pcap_nametoport(const char *, int *, int *);
-int pcap_nametoportrange(const char *, int *, int *, int *);
-int pcap_nametoproto(const char *);
-int pcap_nametoeproto(const char *);
-int pcap_nametollc(const char *);
-/*
- * If a protocol is unknown, PROTO_UNDEF is returned.
- * Also, pcap_nametoport() returns the protocol along with the port number.
- * If there are ambiguous entried in /etc/services (i.e. domain
- * can be either tcp or udp) PROTO_UNDEF is returned.
- */
-#define PROTO_UNDEF -1
-
-/* XXX move these to pcap-int.h? */
-int __pcap_atodn(const char *, bpf_u_int32 *);
-int __pcap_atoin(const char *, bpf_u_int32 *);
-u_short __pcap_nametodnaddr(const char *);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/pcap.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/pcap.h
deleted file mode 100644
index ad8fc40ac..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/pcap.h
+++ /dev/null
@@ -1,407 +0,0 @@
-/* -*- Mode: c; tab-width: 8; indent-tabs-mode: 1; c-basic-offset: 8; -*- */
-/*
- * Copyright (c) 1993, 1994, 1995, 1996, 1997
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the Computer Systems
- * Engineering Group at Lawrence Berkeley Laboratory.
- * 4. Neither the name of the University nor of the Laboratory may be used
- * to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#) $Header: /tcpdump/master/libpcap/pcap/pcap.h,v 1.4.2.11 2008-10-06 15:38:39 gianluca Exp $ (LBL)
- */
-
-#ifndef lib_pcap_pcap_h
-#define lib_pcap_pcap_h
-
-#if defined(WIN32)
- #include <pcap-stdinc.h>
-#elif defined(MSDOS)
- #include <sys/types.h>
- #include <sys/socket.h> /* u_int, u_char etc. */
-#else /* UN*X */
- #include <sys/types.h>
- #include <sys/time.h>
-#endif /* WIN32/MSDOS/UN*X */
-
-#ifndef PCAP_DONT_INCLUDE_PCAP_BPF_H
-#include <pcap/bpf.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef HAVE_REMOTE
- // We have to define the SOCKET here, although it has been defined in sockutils.h
- // This is to avoid the distribution of the 'sockutils.h' file around
- // (for example in the WinPcap developer's pack)
- #ifndef SOCKET
- #ifdef WIN32
- #define SOCKET unsigned int
- #else
- #define SOCKET int
- #endif
- #endif
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define PCAP_VERSION_MAJOR 2
-#define PCAP_VERSION_MINOR 4
-
-#define PCAP_ERRBUF_SIZE 256
-
-/*
- * Compatibility for systems that have a bpf.h that
- * predates the bpf typedefs for 64-bit support.
- */
-#if BPF_RELEASE - 0 < 199406
-typedef int bpf_int32;
-typedef u_int bpf_u_int32;
-#endif
-
-typedef struct pcap pcap_t;
-typedef struct pcap_dumper pcap_dumper_t;
-typedef struct pcap_if pcap_if_t;
-typedef struct pcap_addr pcap_addr_t;
-
-/*
- * The first record in the file contains saved values for some
- * of the flags used in the printout phases of tcpdump.
- * Many fields here are 32 bit ints so compilers won't insert unwanted
- * padding; these files need to be interchangeable across architectures.
- *
- * Do not change the layout of this structure, in any way (this includes
- * changes that only affect the length of fields in this structure).
- *
- * Also, do not change the interpretation of any of the members of this
- * structure, in any way (this includes using values other than
- * LINKTYPE_ values, as defined in "savefile.c", in the "linktype"
- * field).
- *
- * Instead:
- *
- * introduce a new structure for the new format, if the layout
- * of the structure changed;
- *
- * send mail to "tcpdump-workers@lists.tcpdump.org", requesting
- * a new magic number for your new capture file format, and, when
- * you get the new magic number, put it in "savefile.c";
- *
- * use that magic number for save files with the changed file
- * header;
- *
- * make the code in "savefile.c" capable of reading files with
- * the old file header as well as files with the new file header
- * (using the magic number to determine the header format).
- *
- * Then supply the changes as a patch at
- *
- * http://sourceforge.net/projects/libpcap/
- *
- * so that future versions of libpcap and programs that use it (such as
- * tcpdump) will be able to read your new capture file format.
- */
-struct pcap_file_header {
- bpf_u_int32 magic;
- u_short version_major;
- u_short version_minor;
- bpf_int32 thiszone; /* gmt to local correction */
- bpf_u_int32 sigfigs; /* accuracy of timestamps */
- bpf_u_int32 snaplen; /* max length saved portion of each pkt */
- bpf_u_int32 linktype; /* data link type (LINKTYPE_*) */
-};
-
-/*
- * Macros for the value returned by pcap_datalink_ext().
- *
- * If LT_FCS_LENGTH_PRESENT(x) is true, the LT_FCS_LENGTH(x) macro
- * gives the FCS length of packets in the capture.
- */
-#define LT_FCS_LENGTH_PRESENT(x) ((x) & 0x04000000)
-#define LT_FCS_LENGTH(x) (((x) & 0xF0000000) >> 28)
-#define LT_FCS_DATALINK_EXT(x) ((((x) & 0xF) << 28) | 0x04000000)
-
-typedef enum {
- PCAP_D_INOUT = 0,
- PCAP_D_IN,
- PCAP_D_OUT
-} pcap_direction_t;
-
-/*
- * Generic per-packet information, as supplied by libpcap.
- *
- * The time stamp can and should be a "struct timeval", regardless of
- * whether your system supports 32-bit tv_sec in "struct timeval",
- * 64-bit tv_sec in "struct timeval", or both if it supports both 32-bit
- * and 64-bit applications. The on-disk format of savefiles uses 32-bit
- * tv_sec (and tv_usec); this structure is irrelevant to that. 32-bit
- * and 64-bit versions of libpcap, even if they're on the same platform,
- * should supply the appropriate version of "struct timeval", even if
- * that's not what the underlying packet capture mechanism supplies.
- */
-struct pcap_pkthdr {
- struct timeval ts; /* time stamp */
- bpf_u_int32 caplen; /* length of portion present */
- bpf_u_int32 len; /* length this packet (off wire) */
-};
-
-/*
- * As returned by the pcap_stats()
- */
-struct pcap_stat {
- u_int ps_recv; /* number of packets received */
- u_int ps_drop; /* number of packets dropped */
- u_int ps_ifdrop; /* drops by interface XXX not yet supported */
-#ifdef HAVE_REMOTE
- u_int ps_capt; /* number of packets that are received by the application; please get rid off the Win32 ifdef */
- u_int ps_sent; /* number of packets sent by the server on the network */
- u_int ps_netdrop; /* number of packets lost on the network */
-#endif /* HAVE_REMOTE */
-};
-
-#ifdef MSDOS
-/*
- * As returned by the pcap_stats_ex()
- */
-struct pcap_stat_ex {
- u_long rx_packets; /* total packets received */
- u_long tx_packets; /* total packets transmitted */
- u_long rx_bytes; /* total bytes received */
- u_long tx_bytes; /* total bytes transmitted */
- u_long rx_errors; /* bad packets received */
- u_long tx_errors; /* packet transmit problems */
- u_long rx_dropped; /* no space in Rx buffers */
- u_long tx_dropped; /* no space available for Tx */
- u_long multicast; /* multicast packets received */
- u_long collisions;
-
- /* detailed rx_errors: */
- u_long rx_length_errors;
- u_long rx_over_errors; /* receiver ring buff overflow */
- u_long rx_crc_errors; /* recv'd pkt with crc error */
- u_long rx_frame_errors; /* recv'd frame alignment error */
- u_long rx_fifo_errors; /* recv'r fifo overrun */
- u_long rx_missed_errors; /* recv'r missed packet */
-
- /* detailed tx_errors */
- u_long tx_aborted_errors;
- u_long tx_carrier_errors;
- u_long tx_fifo_errors;
- u_long tx_heartbeat_errors;
- u_long tx_window_errors;
- };
-#endif
-
-/*
- * Item in a list of interfaces.
- */
-struct pcap_if {
- struct pcap_if *next;
- char *name; /* name to hand to "pcap_open_live()" */
- char *description; /* textual description of interface, or NULL */
- struct pcap_addr *addresses;
- bpf_u_int32 flags; /* PCAP_IF_ interface flags */
-};
-
-#define PCAP_IF_LOOPBACK 0x00000001 /* interface is loopback */
-
-/*
- * Representation of an interface address.
- */
-struct pcap_addr {
- struct pcap_addr *next;
- struct sockaddr *addr; /* address */
- struct sockaddr *netmask; /* netmask for that address */
- struct sockaddr *broadaddr; /* broadcast address for that address */
- struct sockaddr *dstaddr; /* P2P destination address for that address */
-};
-
-typedef void (*pcap_handler)(u_char *, const struct pcap_pkthdr *,
- const u_char *);
-
-/*
- * Error codes for the pcap API.
- * These will all be negative, so you can check for the success or
- * failure of a call that returns these codes by checking for a
- * negative value.
- */
-#define PCAP_ERROR -1 /* generic error code */
-#define PCAP_ERROR_BREAK -2 /* loop terminated by pcap_breakloop */
-#define PCAP_ERROR_NOT_ACTIVATED -3 /* the capture needs to be activated */
-#define PCAP_ERROR_ACTIVATED -4 /* the operation can't be performed on already activated captures */
-#define PCAP_ERROR_NO_SUCH_DEVICE -5 /* no such device exists */
-#define PCAP_ERROR_RFMON_NOTSUP -6 /* this device doesn't support rfmon (monitor) mode */
-#define PCAP_ERROR_NOT_RFMON -7 /* operation supported only in monitor mode */
-#define PCAP_ERROR_PERM_DENIED -8 /* no permission to open the device */
-#define PCAP_ERROR_IFACE_NOT_UP -9 /* interface isn't up */
-
-/*
- * Warning codes for the pcap API.
- * These will all be positive and non-zero, so they won't look like
- * errors.
- */
-#define PCAP_WARNING 1 /* generic warning code */
-#define PCAP_WARNING_PROMISC_NOTSUP 2 /* this device doesn't support promiscuous mode */
-
-char *pcap_lookupdev(char *);
-int pcap_lookupnet(const char *, bpf_u_int32 *, bpf_u_int32 *, char *);
-
-pcap_t *pcap_create(const char *, char *);
-int pcap_set_snaplen(pcap_t *, int);
-int pcap_set_promisc(pcap_t *, int);
-int pcap_can_set_rfmon(pcap_t *);
-int pcap_set_rfmon(pcap_t *, int);
-int pcap_set_timeout(pcap_t *, int);
-int pcap_set_buffer_size(pcap_t *, int);
-int pcap_activate(pcap_t *);
-
-pcap_t *pcap_open_live(const char *, int, int, int, char *);
-pcap_t *pcap_open_dead(int, int);
-pcap_t *pcap_open_offline(const char *, char *);
-#if defined(WIN32)
-pcap_t *pcap_hopen_offline(intptr_t, char *);
-#if !defined(LIBPCAP_EXPORTS)
-#define pcap_fopen_offline(f,b) \
- pcap_hopen_offline(_get_osfhandle(_fileno(f)), b)
-#else /*LIBPCAP_EXPORTS*/
-static pcap_t *pcap_fopen_offline(FILE *, char *);
-#endif
-#else /*WIN32*/
-pcap_t *pcap_fopen_offline(FILE *, char *);
-#endif /*WIN32*/
-
-void pcap_close(pcap_t *);
-int pcap_loop(pcap_t *, int, pcap_handler, u_char *);
-int pcap_dispatch(pcap_t *, int, pcap_handler, u_char *);
-const u_char*
- pcap_next(pcap_t *, struct pcap_pkthdr *);
-int pcap_next_ex(pcap_t *, struct pcap_pkthdr **, const u_char **);
-void pcap_breakloop(pcap_t *);
-int pcap_stats(pcap_t *, struct pcap_stat *);
-int pcap_setfilter(pcap_t *, struct bpf_program *);
-int pcap_setdirection(pcap_t *, pcap_direction_t);
-int pcap_getnonblock(pcap_t *, char *);
-int pcap_setnonblock(pcap_t *, int, char *);
-int pcap_inject(pcap_t *, const void *, size_t);
-int pcap_sendpacket(pcap_t *, const u_char *, int);
-const char *pcap_statustostr(int);
-const char *pcap_strerror(int);
-char *pcap_geterr(pcap_t *);
-void pcap_perror(pcap_t *, char *);
-int pcap_compile(pcap_t *, struct bpf_program *, const char *, int,
- bpf_u_int32);
-int pcap_compile_nopcap(int, int, struct bpf_program *,
- const char *, int, bpf_u_int32);
-void pcap_freecode(struct bpf_program *);
-int pcap_offline_filter(struct bpf_program *, const struct pcap_pkthdr *,
- const u_char *);
-int pcap_datalink(pcap_t *);
-int pcap_datalink_ext(pcap_t *);
-int pcap_list_datalinks(pcap_t *, int **);
-int pcap_set_datalink(pcap_t *, int);
-void pcap_free_datalinks(int *);
-int pcap_datalink_name_to_val(const char *);
-const char *pcap_datalink_val_to_name(int);
-const char *pcap_datalink_val_to_description(int);
-int pcap_snapshot(pcap_t *);
-int pcap_is_swapped(pcap_t *);
-int pcap_major_version(pcap_t *);
-int pcap_minor_version(pcap_t *);
-
-/* XXX */
-FILE *pcap_file(pcap_t *);
-int pcap_fileno(pcap_t *);
-
-pcap_dumper_t *pcap_dump_open(pcap_t *, const char *);
-pcap_dumper_t *pcap_dump_fopen(pcap_t *, FILE *fp);
-FILE *pcap_dump_file(pcap_dumper_t *);
-long pcap_dump_ftell(pcap_dumper_t *);
-int pcap_dump_flush(pcap_dumper_t *);
-void pcap_dump_close(pcap_dumper_t *);
-void pcap_dump(u_char *, const struct pcap_pkthdr *, const u_char *);
-
-int pcap_findalldevs(pcap_if_t **, char *);
-void pcap_freealldevs(pcap_if_t *);
-
-const char *pcap_lib_version(void);
-
-/* XXX this guy lives in the bpf tree */
-u_int bpf_filter(const struct bpf_insn *, const u_char *, u_int, u_int);
-int bpf_validate(const struct bpf_insn *f, int len);
-char *bpf_image(const struct bpf_insn *, int);
-void bpf_dump(const struct bpf_program *, int);
-
-#if defined(WIN32)
-
-/*
- * Win32 definitions
- */
-
-int pcap_setbuff(pcap_t *p, int dim);
-int pcap_setmode(pcap_t *p, int mode);
-int pcap_setmintocopy(pcap_t *p, int size);
-
-#ifdef WPCAP
-/* Include file with the wpcap-specific extensions */
-#include <Win32-Extensions.h>
-#endif /* WPCAP */
-
-#define MODE_CAPT 0
-#define MODE_STAT 1
-#define MODE_MON 2
-
-#elif defined(MSDOS)
-
-/*
- * MS-DOS definitions
- */
-
-int pcap_stats_ex (pcap_t *, struct pcap_stat_ex *);
-void pcap_set_wait (pcap_t *p, void (*yield)(void), int wait);
-u_long pcap_mac_packets (void);
-
-#else /* UN*X */
-
-/*
- * UN*X definitions
- */
-
-int pcap_get_selectable_fd(pcap_t *);
-
-#endif /* WIN32/MSDOS/UN*X */
-
-#ifdef HAVE_REMOTE
-/* Includes most of the public stuff that is needed for the remote capture */
-#include <remote-ext.h>
-#endif /* HAVE_REMOTE */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/sll.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/sll.h
deleted file mode 100644
index e9d5452af..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/sll.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*-
- * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from the Stanford/CMU enet packet filter,
- * (net/enet.c) distributed as part of 4.3BSD, and code contributed
- * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence
- * Berkeley Laboratory.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#) $Header: /tcpdump/master/libpcap/pcap/sll.h,v 1.2.2.1 2008-05-30 01:36:06 guy Exp $ (LBL)
- */
-
-/*
- * For captures on Linux cooked sockets, we construct a fake header
- * that includes:
- *
- * a 2-byte "packet type" which is one of:
- *
- * LINUX_SLL_HOST packet was sent to us
- * LINUX_SLL_BROADCAST packet was broadcast
- * LINUX_SLL_MULTICAST packet was multicast
- * LINUX_SLL_OTHERHOST packet was sent to somebody else
- * LINUX_SLL_OUTGOING packet was sent *by* us;
- *
- * a 2-byte Ethernet protocol field;
- *
- * a 2-byte link-layer type;
- *
- * a 2-byte link-layer address length;
- *
- * an 8-byte source link-layer address, whose actual length is
- * specified by the previous value.
- *
- * All fields except for the link-layer address are in network byte order.
- *
- * DO NOT change the layout of this structure, or change any of the
- * LINUX_SLL_ values below. If you must change the link-layer header
- * for a "cooked" Linux capture, introduce a new DLT_ type (ask
- * "tcpdump-workers@lists.tcpdump.org" for one, so that you don't give it
- * a value that collides with a value already being used), and use the
- * new header in captures of that type, so that programs that can
- * handle DLT_LINUX_SLL captures will continue to handle them correctly
- * without any change, and so that capture files with different headers
- * can be told apart and programs that read them can dissect the
- * packets in them.
- */
-
-#ifndef lib_pcap_sll_h
-#define lib_pcap_sll_h
-
-/*
- * A DLT_LINUX_SLL fake link-layer header.
- */
-#define SLL_HDR_LEN 16 /* total header length */
-#define SLL_ADDRLEN 8 /* length of address field */
-
-struct sll_header {
- u_int16_t sll_pkttype; /* packet type */
- u_int16_t sll_hatype; /* link-layer address type */
- u_int16_t sll_halen; /* link-layer address length */
- u_int8_t sll_addr[SLL_ADDRLEN]; /* link-layer address */
- u_int16_t sll_protocol; /* protocol */
-};
-
-/*
- * The LINUX_SLL_ values for "sll_pkttype"; these correspond to the
- * PACKET_ values on Linux, but are defined here so that they're
- * available even on systems other than Linux, and so that they
- * don't change even if the PACKET_ values change.
- */
-#define LINUX_SLL_HOST 0
-#define LINUX_SLL_BROADCAST 1
-#define LINUX_SLL_MULTICAST 2
-#define LINUX_SLL_OTHERHOST 3
-#define LINUX_SLL_OUTGOING 4
-
-/*
- * The LINUX_SLL_ values for "sll_protocol"; these correspond to the
- * ETH_P_ values on Linux, but are defined here so that they're
- * available even on systems other than Linux. We assume, for now,
- * that the ETH_P_ values won't change in Linux; if they do, then:
- *
- * if we don't translate them in "pcap-linux.c", capture files
- * won't necessarily be readable if captured on a system that
- * defines ETH_P_ values that don't match these values;
- *
- * if we do translate them in "pcap-linux.c", that makes life
- * unpleasant for the BPF code generator, as the values you test
- * for in the kernel aren't the values that you test for when
- * reading a capture file, so the fixup code run on BPF programs
- * handed to the kernel ends up having to do more work.
- *
- * Add other values here as necessary, for handling packet types that
- * might show up on non-Ethernet, non-802.x networks. (Not all the ones
- * in the Linux "if_ether.h" will, I suspect, actually show up in
- * captures.)
- */
-#define LINUX_SLL_P_802_3 0x0001 /* Novell 802.3 frames without 802.2 LLC header */
-#define LINUX_SLL_P_802_2 0x0004 /* 802.2 frames (not D/I/X Ethernet) */
-
-#endif
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/usb.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/usb.h
deleted file mode 100644
index adcd19c05..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/usb.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2006 Paolo Abeni (Italy)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Basic USB data struct
- * By Paolo Abeni <paolo.abeni@email.it>
- *
- * @(#) $Header: /tcpdump/master/libpcap/pcap/usb.h,v 1.6 2007/09/22 02:06:08 guy Exp $
- */
-
-#ifndef _PCAP_USB_STRUCTS_H__
-#define _PCAP_USB_STRUCTS_H__
-
-/*
- * possible transfer mode
- */
-#define URB_TRANSFER_IN 0x80
-#define URB_ISOCHRONOUS 0x0
-#define URB_INTERRUPT 0x1
-#define URB_CONTROL 0x2
-#define URB_BULK 0x3
-
-/*
- * possible event type
- */
-#define URB_SUBMIT 'S'
-#define URB_COMPLETE 'C'
-#define URB_ERROR 'E'
-
-/*
- * USB setup header as defined in USB specification.
- * Appears at the front of each packet in DLT_USB captures.
- */
-typedef struct _usb_setup {
- u_int8_t bmRequestType;
- u_int8_t bRequest;
- u_int16_t wValue;
- u_int16_t wIndex;
- u_int16_t wLength;
-} pcap_usb_setup;
-
-
-/*
- * Header prepended by linux kernel to each event.
- * Appears at the front of each packet in DLT_USB_LINUX captures.
- */
-typedef struct _usb_header {
- u_int64_t id;
- u_int8_t event_type;
- u_int8_t transfer_type;
- u_int8_t endpoint_number;
- u_int8_t device_address;
- u_int16_t bus_id;
- char setup_flag;/*if !=0 the urb setup header is not present*/
- char data_flag; /*if !=0 no urb data is present*/
- int64_t ts_sec;
- int32_t ts_usec;
- int32_t status;
- u_int32_t urb_len;
- u_int32_t data_len; /* amount of urb data really present in this event*/
- pcap_usb_setup setup;
-} pcap_usb_header;
-
-
-#endif
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/vlan.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/vlan.h
deleted file mode 100644
index b0cb7949b..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/pcap/vlan.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*-
- * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#) $Header: /tcpdump/master/libpcap/pcap/vlan.h,v 1.1.2.2 2008-08-06 07:45:59 guy Exp $
- */
-
-#ifndef lib_pcap_vlan_h
-#define lib_pcap_vlan_h
-
-struct vlan_tag {
- u_int16_t vlan_tpid; /* ETH_P_8021Q */
- u_int16_t vlan_tci; /* VLAN TCI */
-};
-
-#define VLAN_TAG_LEN 4
-
-#endif
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/remote-ext.h b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/remote-ext.h
deleted file mode 100644
index 580dea589..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/remote-ext.h
+++ /dev/null
@@ -1,472 +0,0 @@
-/*
- * Copyright (c) 2002 - 2003
- * NetGroup, Politecnico di Torino (Italy)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the Politecnico di Torino nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-
-#ifndef __REMOTE_EXT_H__
- #define __REMOTE_EXT_H__
-
-
- #ifndef HAVE_REMOTE
- #error Please do not include this file directly. Just define HAVE_REMOTE and then include pcap.h
- #endif
-
-/* Definition for Microsoft Visual Studio */
- #if _MSC_VER > 1000
- #pragma once
- #endif
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
-/*!
- * \file remote-ext.h
- *
- * The goal of this file it to include most of the new definitions that should be
- * placed into the pcap.h file.
- *
- * It includes all new definitions (structures and functions like pcap_open().
- * Some of the functions are not really a remote feature, but, right now,
- * they are placed here.
- */
-
-
-
-/* All this stuff is public */
-
-/*! \addtogroup remote_struct
- \{
- */
-
-
-
-/*!
- * \brief Defines the maximum buffer size in which address, port, interface names are kept.
- *
- * In case the adapter name or such is larger than this value, it is truncated.
- * This is not used by the user; however it must be aware that an hostname / interface
- * name longer than this value will be truncated.
- */
- #define PCAP_BUF_SIZE 1024
-
-
-/*! \addtogroup remote_source_ID
- \{
- */
-
-
-/*!
- * \brief Internal representation of the type of source in use (file,
- * remote/local interface).
- *
- * This indicates a file, i.e. the user want to open a capture from a local file.
- */
- #define PCAP_SRC_FILE 2
-
-/*!
- * \brief Internal representation of the type of source in use (file,
- * remote/local interface).
- *
- * This indicates a local interface, i.e. the user want to open a capture from
- * a local interface. This does not involve the RPCAP protocol.
- */
- #define PCAP_SRC_IFLOCAL 3
-
-/*!
- * \brief Internal representation of the type of source in use (file,
- * remote/local interface).
- *
- * This indicates a remote interface, i.e. the user want to open a capture from
- * an interface on a remote host. This does involve the RPCAP protocol.
- */
- #define PCAP_SRC_IFREMOTE 4
-
-/*!
- \}
- */
-
-
-
-/*! \addtogroup remote_source_string
- *
- * The formats allowed by the pcap_open() are the following:
- * - file://path_and_filename [opens a local file]
- * - rpcap://devicename [opens the selected device devices available on the local host, without using the RPCAP protocol]
- * - rpcap://host/devicename [opens the selected device available on a remote host]
- * - rpcap://host:port/devicename [opens the selected device available on a remote host, using a non-standard port for RPCAP]
- * - adaptername [to open a local adapter; kept for compability, but it is strongly discouraged]
- * - (NULL) [to open the first local adapter; kept for compability, but it is strongly discouraged]
- *
- * The formats allowed by the pcap_findalldevs_ex() are the following:
- * - file://folder/ [lists all the files in the given folder]
- * - rpcap:// [lists all local adapters]
- * - rpcap://host:port/ [lists the devices available on a remote host]
- *
- * Referring to the 'host' and 'port' paramters, they can be either numeric or literal. Since
- * IPv6 is fully supported, these are the allowed formats:
- *
- * - host (literal): e.g. host.foo.bar
- * - host (numeric IPv4): e.g. 10.11.12.13
- * - host (numeric IPv4, IPv6 style): e.g. [10.11.12.13]
- * - host (numeric IPv6): e.g. [1:2:3::4]
- * - port: can be either numeric (e.g. '80') or literal (e.g. 'http')
- *
- * Here you find some allowed examples:
- * - rpcap://host.foo.bar/devicename [everything literal, no port number]
- * - rpcap://host.foo.bar:1234/devicename [everything literal, with port number]
- * - rpcap://10.11.12.13/devicename [IPv4 numeric, no port number]
- * - rpcap://10.11.12.13:1234/devicename [IPv4 numeric, with port number]
- * - rpcap://[10.11.12.13]:1234/devicename [IPv4 numeric with IPv6 format, with port number]
- * - rpcap://[1:2:3::4]/devicename [IPv6 numeric, no port number]
- * - rpcap://[1:2:3::4]:1234/devicename [IPv6 numeric, with port number]
- * - rpcap://[1:2:3::4]:http/devicename [IPv6 numeric, with literal port number]
- *
- \{
- */
-
-
-/*!
- * \brief String that will be used to determine the type of source in use (file,
- * remote/local interface).
- *
- * This string will be prepended to the interface name in order to create a string
- * that contains all the information required to open the source.
- *
- * This string indicates that the user wants to open a capture from a local file.
- */
- #define PCAP_SRC_FILE_STRING "file://"
-
-/*!
- * \brief String that will be used to determine the type of source in use (file,
- * remote/local interface).
- *
- * This string will be prepended to the interface name in order to create a string
- * that contains all the information required to open the source.
- *
- * This string indicates that the user wants to open a capture from a network interface.
- * This string does not necessarily involve the use of the RPCAP protocol. If the
- * interface required resides on the local host, the RPCAP protocol is not involved
- * and the local functions are used.
- */
- #define PCAP_SRC_IF_STRING "rpcap://"
-
-/*!
- \}
- */
-
-
-
-/*!
- * \addtogroup remote_open_flags
- \{
- */
-
-/*!
- * \brief Defines if the adapter has to go in promiscuous mode.
- *
- * It is '1' if you have to open the adapter in promiscuous mode, '0' otherwise.
- * Note that even if this parameter is false, the interface could well be in promiscuous
- * mode for some other reason (for example because another capture process with
- * promiscuous mode enabled is currently using that interface).
- * On on Linux systems with 2.2 or later kernels (that have the "any" device), this
- * flag does not work on the "any" device; if an argument of "any" is supplied,
- * the 'promisc' flag is ignored.
- */
- #define PCAP_OPENFLAG_PROMISCUOUS 1
-
-/*!
- * \brief Defines if the data trasfer (in case of a remote
- * capture) has to be done with UDP protocol.
- *
- * If it is '1' if you want a UDP data connection, '0' if you want
- * a TCP data connection; control connection is always TCP-based.
- * A UDP connection is much lighter, but it does not guarantee that all
- * the captured packets arrive to the client workstation. Moreover,
- * it could be harmful in case of network congestion.
- * This flag is meaningless if the source is not a remote interface.
- * In that case, it is simply ignored.
- */
- #define PCAP_OPENFLAG_DATATX_UDP 2
-
-
-/*!
- * \brief Defines if the remote probe will capture its own generated traffic.
- *
- * In case the remote probe uses the same interface to capture traffic and to send
- * data back to the caller, the captured traffic includes the RPCAP traffic as well.
- * If this flag is turned on, the RPCAP traffic is excluded from the capture, so that
- * the trace returned back to the collector is does not include this traffic.
- */
- #define PCAP_OPENFLAG_NOCAPTURE_RPCAP 4
-
-/*!
- * \brief Defines if the local adapter will capture its own generated traffic.
- *
- * This flag tells the underlying capture driver to drop the packets that were sent by itself.
- * This is usefult when building applications like bridges, that should ignore the traffic
- * they just sent.
- */
- #define PCAP_OPENFLAG_NOCAPTURE_LOCAL 8
-
-/*!
- * \brief This flag configures the adapter for maximum responsiveness.
- *
- * In presence of a large value for nbytes, WinPcap waits for the arrival of several packets before
- * copying the data to the user. This guarantees a low number of system calls, i.e. lower processor usage,
- * i.e. better performance, which is good for applications like sniffers. If the user sets the
- * PCAP_OPENFLAG_MAX_RESPONSIVENESS flag, the capture driver will copy the packets as soon as the application
- * is ready to receive them. This is suggested for real time applications (like, for example, a bridge)
- * that need the best responsiveness.*/
- #define PCAP_OPENFLAG_MAX_RESPONSIVENESS 16
-
-/*!
- \}
- */
-
-
-/*!
- * \addtogroup remote_samp_methods
- \{
- */
-
-/*!
- * \brief No sampling has to be done on the current capture.
- *
- * In this case, no sampling algorithms are applied to the current capture.
- */
- #define PCAP_SAMP_NOSAMP 0
-
-/*!
- * \brief It defines that only 1 out of N packets must be returned to the user.
- *
- * In this case, the 'value' field of the 'pcap_samp' structure indicates the
- * number of packets (minus 1) that must be discarded before one packet got accepted.
- * In other words, if 'value = 10', the first packet is returned to the caller, while
- * the following 9 are discarded.
- */
- #define PCAP_SAMP_1_EVERY_N 1
-
-/*!
- * \brief It defines that we have to return 1 packet every N milliseconds.
- *
- * In this case, the 'value' field of the 'pcap_samp' structure indicates the 'waiting
- * time' in milliseconds before one packet got accepted.
- * In other words, if 'value = 10', the first packet is returned to the caller; the next
- * returned one will be the first packet that arrives when 10ms have elapsed.
- */
- #define PCAP_SAMP_FIRST_AFTER_N_MS 2
-
-/*!
- \}
- */
-
-
-/*!
- * \addtogroup remote_auth_methods
- \{
- */
-
-/*!
- * \brief It defines the NULL authentication.
- *
- * This value has to be used within the 'type' member of the pcap_rmtauth structure.
- * The 'NULL' authentication has to be equal to 'zero', so that old applications
- * can just put every field of struct pcap_rmtauth to zero, and it does work.
- */
- #define RPCAP_RMTAUTH_NULL 0
-
-/*!
- * \brief It defines the username/password authentication.
- *
- * With this type of authentication, the RPCAP protocol will use the username/
- * password provided to authenticate the user on the remote machine. If the
- * authentication is successful (and the user has the right to open network devices)
- * the RPCAP connection will continue; otherwise it will be dropped.
- *
- * This value has to be used within the 'type' member of the pcap_rmtauth structure.
- */
- #define RPCAP_RMTAUTH_PWD 1
-
-/*!
- \}
- */
-
-
-
-/*!
- *
- * \brief This structure keeps the information needed to autheticate
- * the user on a remote machine.
- *
- * The remote machine can either grant or refuse the access according
- * to the information provided.
- * In case the NULL authentication is required, both 'username' and
- * 'password' can be NULL pointers.
- *
- * This structure is meaningless if the source is not a remote interface;
- * in that case, the functions which requires such a structure can accept
- * a NULL pointer as well.
- */
- struct pcap_rmtauth
- {
- /*!
- * \brief Type of the authentication required.
- *
- * In order to provide maximum flexibility, we can support different types
- * of authentication based on the value of this 'type' variable. The currently
- * supported authentication methods are defined into the
- * \link remote_auth_methods Remote Authentication Methods Section\endlink.
- *
- */
- int type;
-
- /*!
- * \brief Zero-terminated string containing the username that has to be
- * used on the remote machine for authentication.
- *
- * This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication
- * and it can be NULL.
- */
- char * username;
-
- /*!
- * \brief Zero-terminated string containing the password that has to be
- * used on the remote machine for authentication.
- *
- * This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication
- * and it can be NULL.
- */
- char * password;
- };
-
-
-/*!
- * \brief This structure defines the information related to sampling.
- *
- * In case the sampling is requested, the capturing device should read
- * only a subset of the packets coming from the source. The returned packets depend
- * on the sampling parameters.
- *
- * \warning The sampling process is applied <strong>after</strong> the filtering process.
- * In other words, packets are filtered first, then the sampling process selects a
- * subset of the 'filtered' packets and it returns them to the caller.
- */
- struct pcap_samp
- {
- /*!
- * Method used for sampling. Currently, the supported methods are listed in the
- * \link remote_samp_methods Sampling Methods Section\endlink.
- */
- int method;
-
- /*!
- * This value depends on the sampling method defined. For its meaning, please check
- * at the \link remote_samp_methods Sampling Methods Section\endlink.
- */
- int value;
- };
-
-
-
-/*! Maximum lenght of an host name (needed for the RPCAP active mode) */
- #define RPCAP_HOSTLIST_SIZE 1024
-
-
-/*!
- \}
- *//* end of public documentation */
-
-
-/* Exported functions */
-
-
-
-/** \name New WinPcap functions
- *
- * This section lists the new functions that are able to help considerably in writing
- * WinPcap programs because of their easiness of use.
- */
-/*\{ */
- pcap_t * pcap_open( const char * source,
- int snaplen,
- int flags,
- int read_timeout,
- struct pcap_rmtauth * auth,
- char * errbuf );
- int pcap_createsrcstr( char * source,
- int type,
- const char * host,
- const char * port,
- const char * name,
- char * errbuf );
- int pcap_parsesrcstr( const char * source,
- int * type,
- char * host,
- char * port,
- char * name,
- char * errbuf );
- int pcap_findalldevs_ex( char * source,
- struct pcap_rmtauth * auth,
- pcap_if_t ** alldevs,
- char * errbuf );
- struct pcap_samp * pcap_setsampling( pcap_t * p );
-
-/*\} */
-/* End of new winpcap functions */
-
-
-
-/** \name Remote Capture functions
- */
-/*\{ */
- SOCKET pcap_remoteact_accept( const char * address,
- const char * port,
- const char * hostlist,
- char * connectinghost,
- struct pcap_rmtauth * auth,
- char * errbuf );
- int pcap_remoteact_list( char * hostlist,
- char sep,
- int size,
- char * errbuf );
- int pcap_remoteact_close( const char * host,
- char * errbuf );
- void pcap_remoteact_cleanup();
-/*\} */
-/* End of remote capture functions */
-
- #ifdef __cplusplus
- }
- #endif
-
-
-#endif /* ifndef __REMOTE_EXT_H__ */
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/wpcap.lib b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/wpcap.lib
deleted file mode 100644
index f832e0445..000000000
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/WinPCap/wpcap.lib
+++ /dev/null
Binary files differ
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/MQTT_Mutual_Auth_Demo_with_BG96/WIN32.vcxproj b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/MQTT_Mutual_Auth_Demo_with_BG96/WIN32.vcxproj
index 71ac799ad..8dc609a87 100644
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/MQTT_Mutual_Auth_Demo_with_BG96/WIN32.vcxproj
+++ b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/MQTT_Mutual_Auth_Demo_with_BG96/WIN32.vcxproj
@@ -58,7 +58,7 @@
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
- <AdditionalIncludeDirectories>..\..\..\..\Source\FreeRTOS-Plus-Trace\Include;..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-TCP\include;..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-TCP\portable\BufferManagement;..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-TCP\portable\Compiler\MSVC;..\..\..\..\FreeRTOS-Plus\Source\Utilities\logging;..\common\WinPCap;..\..\..\..\FreeRTOS\Source\include;..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW;..\..\..\Source\Application-Protocols\coreMQTT\source\include;..\..\..\Source\Application-Protocols\coreMQTT\source\interface;..\..\..\Source\Utilities\backoff_algorithm\source\include;..\..\..\Source\Application-Protocols\network_transport\freertos_plus_tcp;..\..\..\Source\Utilities\mbedtls_freertos;..\..\..\..\Source\mbedtls_utils;..\..\..\ThirdParty\mbedtls\include;..\common;.;..\..\..\Source\FreeRTOS-Cellular-Interface\source\include;..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\common;..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\private;..\..\..\Source\FreeRTOS-Cellular-Interface\source\interface;..\..\..\Source\Application-Protocols\network_transport\freertos_plus_tcp\using_mbedtls;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>..\..\..\..\Source\FreeRTOS-Plus-Trace\Include;..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-TCP\include;..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-TCP\portable\BufferManagement;..\..\..\..\FreeRTOS-Plus\Source\FreeRTOS-Plus-TCP\portable\Compiler\MSVC;..\..\..\..\FreeRTOS-Plus\Source\Utilities\logging;..\..\common\WinPCap;..\..\..\..\FreeRTOS\Source\include;..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW;..\..\..\Source\Application-Protocols\coreMQTT\source\include;..\..\..\Source\Application-Protocols\coreMQTT\source\interface;..\..\..\Source\Utilities\backoff_algorithm\source\include;..\..\..\Source\Application-Protocols\network_transport\cellular;..\..\..\Source\Utilities\mbedtls_freertos;..\..\..\..\Source\mbedtls_utils;..\..\..\ThirdParty\mbedtls\include;..\common;.;..\..\..\Source\FreeRTOS-Cellular-Interface\source\include;..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\common;..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\private;..\..\..\Source\FreeRTOS-Cellular-Interface\source\interface;..\..\..\Source\Application-Protocols\network_transport\freertos_plus_tcp\using_mbedtls;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>MBEDTLS_CONFIG_FILE="mbedtls_config.h";WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0500;WINVER=0x400;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
@@ -89,7 +89,7 @@
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
<AdditionalDependencies>wpcap.lib;Bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>..\Common\WinPCap</AdditionalLibraryDirectories>
+ <AdditionalLibraryDirectories>..\..\Common\WinPCap</AdditionalLibraryDirectories>
<Profile>false</Profile>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
</Link>
@@ -146,7 +146,8 @@
<ClCompile Include="..\..\..\..\FreeRTOS\Source\stream_buffer.c" />
<ClCompile Include="..\..\..\..\FreeRTOS\Source\tasks.c" />
<ClCompile Include="..\..\..\..\FreeRTOS\Source\timers.c" />
- <ClCompile Include="..\..\..\Source\Application-Protocols\network_transport\freertos_plus_tcp\using_mbedtls\using_mbedtls.c" />
+ <ClCompile Include="..\..\..\Source\Application-Protocols\network_transport\cellular\sockets_wrapper.c" />
+ <ClCompile Include="..\..\..\Source\Application-Protocols\network_transport\cellular\using_mbedtls\using_mbedtls.c" />
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\bg96\cellular_bg96.c" />
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\bg96\cellular_bg96_api.c" />
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\bg96\cellular_bg96_urc_handler.c" />
@@ -496,7 +497,6 @@
<ClCompile Include="..\Common\comm_if_windows.c" />
<ClCompile Include="..\Common\main.c" />
<ClCompile Include="..\Common\mbedtls\mbedtls_freertos_port.c" />
- <ClCompile Include="..\Common\mbedtls\sockets_wrapper.c" />
<ClCompile Include="DemoTasks\MutualAuthMQTTExample.c" />
</ItemGroup>
<ItemGroup>
@@ -513,7 +513,8 @@
<ClInclude Include="..\..\..\..\FreeRTOS-Plus\Source\Utilities\logging\logging_levels.h" />
<ClInclude Include="..\..\..\..\FreeRTOS-Plus\Source\Utilities\logging\logging_stack.h" />
<ClInclude Include="..\..\..\Source\Application-Protocols\coreMQTT\source\include\core_mqtt_config_defaults.h" />
- <ClInclude Include="..\..\..\Source\Application-Protocols\network_transport\freertos_plus_tcp\using_mbedtls\using_mbedtls.h" />
+ <ClInclude Include="..\..\..\Source\Application-Protocols\network_transport\cellular\sockets_wrapper.h" />
+ <ClInclude Include="..\..\..\Source\Application-Protocols\network_transport\cellular\using_mbedtls\using_mbedtls.h" />
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\modules\bg96\cellular_bg96.h" />
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\cellular_api.h" />
<ClInclude Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\include\cellular_config_defaults.h" />
@@ -629,7 +630,6 @@
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\x509_csr.h" />
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\xtea.h" />
<ClInclude Include="..\Common\cellular_platform.h" />
- <ClInclude Include="..\Common\mbedtls\sockets_wrapper.h" />
<ClInclude Include="cellular_config.h" />
<ClInclude Include="mbedtls_config.h" />
<ClInclude Include="demo_config.h" />
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/MQTT_Mutual_Auth_Demo_with_BG96/WIN32.vcxproj.filters b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/MQTT_Mutual_Auth_Demo_with_BG96/WIN32.vcxproj.filters
index cb9eb09ed..84dbacbfe 100644
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/MQTT_Mutual_Auth_Demo_with_BG96/WIN32.vcxproj.filters
+++ b/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/MQTT_Mutual_Auth_Demo_with_BG96/WIN32.vcxproj.filters
@@ -452,16 +452,17 @@
<ClCompile Include="..\Common\mbedtls\mbedtls_freertos_port.c">
<Filter>Common\mbedtls</Filter>
</ClCompile>
- <ClCompile Include="..\Common\mbedtls\sockets_wrapper.c">
- <Filter>Common\mbedtls</Filter>
- </ClCompile>
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
<ClCompile Include="..\..\..\Source\FreeRTOS-Cellular-Interface\source\cellular_3gpp_api.c">
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\cellular</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\Source\Application-Protocols\network_transport\freertos_plus_tcp\using_mbedtls\using_mbedtls.c" />
<ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
+ <ClCompile Include="..\..\..\ThirdParty\mbedtls\library\error.c" />
+ <ClCompile Include="..\..\..\Source\Application-Protocols\network_transport\cellular\sockets_wrapper.c">
+ <Filter>Common\mbedtls</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\Source\Application-Protocols\network_transport\cellular\using_mbedtls\using_mbedtls.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\FreeRTOS\Source\include\timers.h">
@@ -865,15 +866,16 @@
<Filter>FreeRTOS+\FreeRTOS+TCP\include</Filter>
</ClInclude>
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
- <ClInclude Include="..\Common\mbedtls\sockets_wrapper.h">
- <Filter>Common\mbedtls</Filter>
- </ClInclude>
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
<ClInclude Include="..\..\..\Source\Application-Protocols\coreMQTT\source\interface\transport_interface.h">
<Filter>FreeRTOS+\FreeRTOS IoT Libraries\platform\transport</Filter>
</ClInclude>
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
- <ClInclude Include="..\..\..\Source\Application-Protocols\network_transport\freertos_plus_tcp\using_mbedtls\using_mbedtls.h" />
<ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
+ <ClInclude Include="..\..\..\ThirdParty\mbedtls\include\mbedtls\error.h" />
+ <ClInclude Include="..\..\..\Source\Application-Protocols\network_transport\cellular\sockets_wrapper.h">
+ <Filter>Common\mbedtls</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\Source\Application-Protocols\network_transport\cellular\using_mbedtls\using_mbedtls.h" />
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/mbedtls/sockets_wrapper.c b/FreeRTOS-Plus/Source/Application-Protocols/network_transport/cellular/sockets_wrapper.c
index c335e75c5..c335e75c5 100644
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/mbedtls/sockets_wrapper.c
+++ b/FreeRTOS-Plus/Source/Application-Protocols/network_transport/cellular/sockets_wrapper.c
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/mbedtls/sockets_wrapper.h b/FreeRTOS-Plus/Source/Application-Protocols/network_transport/cellular/sockets_wrapper.h
index d9c7adb2b..d9c7adb2b 100644
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Cellular_Interface_Windows_Simulator/Common/mbedtls/sockets_wrapper.h
+++ b/FreeRTOS-Plus/Source/Application-Protocols/network_transport/cellular/sockets_wrapper.h
diff --git a/FreeRTOS-Plus/Source/Application-Protocols/network_transport/cellular/using_mbedtls/using_mbedtls.c b/FreeRTOS-Plus/Source/Application-Protocols/network_transport/cellular/using_mbedtls/using_mbedtls.c
new file mode 100644
index 000000000..e0d3fff9b
--- /dev/null
+++ b/FreeRTOS-Plus/Source/Application-Protocols/network_transport/cellular/using_mbedtls/using_mbedtls.c
@@ -0,0 +1,847 @@
+/*
+ * FreeRTOS V202107.00
+ * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * https://www.FreeRTOS.org
+ * https://github.com/FreeRTOS
+ *
+ */
+
+/**
+ * @file tls_freertos.c
+ * @brief TLS transport interface implementations. This implementation uses
+ * mbedTLS.
+ */
+
+/* Standard includes. */
+#include <string.h>
+
+/* FreeRTOS includes. */
+#include "FreeRTOS.h"
+
+/* FreeRTOS+TCP includes. */
+#include "FreeRTOS_IP.h"
+#include "FreeRTOS_Sockets.h"
+
+/* TLS transport header. */
+#include "using_mbedtls.h"
+
+/* FreeRTOS Socket wrapper include. */
+#include "sockets_wrapper.h"
+
+/*-----------------------------------------------------------*/
+
+/**
+ * @brief Each compilation unit that consumes the NetworkContext must define it.
+ * It should contain a single pointer as seen below whenever the header file
+ * of this transport implementation is included to your project.
+ *
+ * @note When using multiple transports in the same compilation unit,
+ * define this pointer as void *.
+ */
+struct NetworkContext
+{
+ TlsTransportParams_t * pParams;
+};
+
+/*-----------------------------------------------------------*/
+
+/**
+ * @brief Represents string to be logged when mbedTLS returned error
+ * does not contain a high-level code.
+ */
+static const char * pNoHighLevelMbedTlsCodeStr = "<No-High-Level-Code>";
+
+/**
+ * @brief Represents string to be logged when mbedTLS returned error
+ * does not contain a low-level code.
+ */
+static const char * pNoLowLevelMbedTlsCodeStr = "<No-Low-Level-Code>";
+
+/**
+ * @brief Utility for converting the high-level code in an mbedTLS error to string,
+ * if the code-contains a high-level code; otherwise, using a default string.
+ */
+#define mbedtlsHighLevelCodeOrDefault( mbedTlsCode ) \
+ ( mbedtls_high_level_strerr( mbedTlsCode ) != NULL ) ? \
+ mbedtls_high_level_strerr( mbedTlsCode ) : pNoHighLevelMbedTlsCodeStr
+
+/**
+ * @brief Utility for converting the level-level code in an mbedTLS error to string,
+ * if the code-contains a level-level code; otherwise, using a default string.
+ */
+#define mbedtlsLowLevelCodeOrDefault( mbedTlsCode ) \
+ ( mbedtls_low_level_strerr( mbedTlsCode ) != NULL ) ? \
+ mbedtls_low_level_strerr( mbedTlsCode ) : pNoLowLevelMbedTlsCodeStr
+
+/*-----------------------------------------------------------*/
+
+/**
+ * @brief Initialize the mbed TLS structures in a network connection.
+ *
+ * @param[in] pSslContext The SSL context to initialize.
+ */
+static void sslContextInit( SSLContext_t * pSslContext );
+
+/**
+ * @brief Free the mbed TLS structures in a network connection.
+ *
+ * @param[in] pSslContext The SSL context to free.
+ */
+static void sslContextFree( SSLContext_t * pSslContext );
+
+/**
+ * @brief Add X509 certificate to the trusted list of root certificates.
+ *
+ * OpenSSL does not provide a single function for reading and loading certificates
+ * from files into stores, so the file API must be called. Start with the
+ * root certificate.
+ *
+ * @param[out] pSslContext SSL context to which the trusted server root CA is to be added.
+ * @param[in] pRootCa PEM-encoded string of the trusted server root CA.
+ * @param[in] rootCaSize Size of the trusted server root CA.
+ *
+ * @return 0 on success; otherwise, failure;
+ */
+static int32_t setRootCa( SSLContext_t * pSslContext,
+ const uint8_t * pRootCa,
+ size_t rootCaSize );
+
+/**
+ * @brief Set X509 certificate as client certificate for the server to authenticate.
+ *
+ * @param[out] pSslContext SSL context to which the client certificate is to be set.
+ * @param[in] pClientCert PEM-encoded string of the client certificate.
+ * @param[in] clientCertSize Size of the client certificate.
+ *
+ * @return 0 on success; otherwise, failure;
+ */
+static int32_t setClientCertificate( SSLContext_t * pSslContext,
+ const uint8_t * pClientCert,
+ size_t clientCertSize );
+
+/**
+ * @brief Set private key for the client's certificate.
+ *
+ * @param[out] pSslContext SSL context to which the private key is to be set.
+ * @param[in] pPrivateKey PEM-encoded string of the client private key.
+ * @param[in] privateKeySize Size of the client private key.
+ *
+ * @return 0 on success; otherwise, failure;
+ */
+static int32_t setPrivateKey( SSLContext_t * pSslContext,
+ const uint8_t * pPrivateKey,
+ size_t privateKeySize );
+
+/**
+ * @brief Passes TLS credentials to the OpenSSL library.
+ *
+ * Provides the root CA certificate, client certificate, and private key to the
+ * OpenSSL library. If the client certificate or private key is not NULL, mutual
+ * authentication is used when performing the TLS handshake.
+ *
+ * @param[out] pSslContext SSL context to which the credentials are to be imported.
+ * @param[in] pNetworkCredentials TLS credentials to be imported.
+ *
+ * @return 0 on success; otherwise, failure;
+ */
+static int32_t setCredentials( SSLContext_t * pSslContext,
+ const NetworkCredentials_t * pNetworkCredentials );
+
+/**
+ * @brief Set optional configurations for the TLS connection.
+ *
+ * This function is used to set SNI and ALPN protocols.
+ *
+ * @param[in] pSslContext SSL context to which the optional configurations are to be set.
+ * @param[in] pHostName Remote host name, used for server name indication.
+ * @param[in] pNetworkCredentials TLS setup parameters.
+ */
+static void setOptionalConfigurations( SSLContext_t * pSslContext,
+ const char * pHostName,
+ const NetworkCredentials_t * pNetworkCredentials );
+
+/**
+ * @brief Setup TLS by initializing contexts and setting configurations.
+ *
+ * @param[in] pNetworkContext Network context.
+ * @param[in] pHostName Remote host name, used for server name indication.
+ * @param[in] pNetworkCredentials TLS setup parameters.
+ *
+ * @return #TLS_TRANSPORT_SUCCESS, #TLS_TRANSPORT_INSUFFICIENT_MEMORY, #TLS_TRANSPORT_INVALID_CREDENTIALS,
+ * or #TLS_TRANSPORT_INTERNAL_ERROR.
+ */
+static TlsTransportStatus_t tlsSetup( NetworkContext_t * pNetworkContext,
+ const char * pHostName,
+ const NetworkCredentials_t * pNetworkCredentials );
+
+/**
+ * @brief Perform the TLS handshake on a TCP connection.
+ *
+ * @param[in] pNetworkContext Network context.
+ * @param[in] pNetworkCredentials TLS setup parameters.
+ *
+ * @return #TLS_TRANSPORT_SUCCESS, #TLS_TRANSPORT_HANDSHAKE_FAILED, or #TLS_TRANSPORT_INTERNAL_ERROR.
+ */
+static TlsTransportStatus_t tlsHandshake( NetworkContext_t * pNetworkContext,
+ const NetworkCredentials_t * pNetworkCredentials );
+
+/**
+ * @brief Initialize mbedTLS.
+ *
+ * @param[out] entropyContext mbed TLS entropy context for generation of random numbers.
+ * @param[out] ctrDrgbContext mbed TLS CTR DRBG context for generation of random numbers.
+ *
+ * @return #TLS_TRANSPORT_SUCCESS, or #TLS_TRANSPORT_INTERNAL_ERROR.
+ */
+static TlsTransportStatus_t initMbedtls( mbedtls_entropy_context * pEntropyContext,
+ mbedtls_ctr_drbg_context * pCtrDrgbContext );
+
+/*-----------------------------------------------------------*/
+
+static void sslContextInit( SSLContext_t * pSslContext )
+{
+ configASSERT( pSslContext != NULL );
+
+ mbedtls_ssl_config_init( &( pSslContext->config ) );
+ mbedtls_x509_crt_init( &( pSslContext->rootCa ) );
+ mbedtls_pk_init( &( pSslContext->privKey ) );
+ mbedtls_x509_crt_init( &( pSslContext->clientCert ) );
+ mbedtls_ssl_init( &( pSslContext->context ) );
+}
+/*-----------------------------------------------------------*/
+
+static void sslContextFree( SSLContext_t * pSslContext )
+{
+ configASSERT( pSslContext != NULL );
+
+ mbedtls_ssl_free( &( pSslContext->context ) );
+ mbedtls_x509_crt_free( &( pSslContext->rootCa ) );
+ mbedtls_x509_crt_free( &( pSslContext->clientCert ) );
+ mbedtls_pk_free( &( pSslContext->privKey ) );
+ mbedtls_entropy_free( &( pSslContext->entropyContext ) );
+ mbedtls_ctr_drbg_free( &( pSslContext->ctrDrgbContext ) );
+ mbedtls_ssl_config_free( &( pSslContext->config ) );
+}
+/*-----------------------------------------------------------*/
+
+static int32_t setRootCa( SSLContext_t * pSslContext,
+ const uint8_t * pRootCa,
+ size_t rootCaSize )
+{
+ int32_t mbedtlsError = -1;
+
+ configASSERT( pSslContext != NULL );
+ configASSERT( pRootCa != NULL );
+
+ /* Parse the server root CA certificate into the SSL context. */
+ mbedtlsError = mbedtls_x509_crt_parse( &( pSslContext->rootCa ),
+ pRootCa,
+ rootCaSize );
+
+ if( mbedtlsError != 0 )
+ {
+ LogError( ( "Failed to parse server root CA certificate: mbedTLSError= %s : %s.",
+ mbedtlsHighLevelCodeOrDefault( mbedtlsError ),
+ mbedtlsLowLevelCodeOrDefault( mbedtlsError ) ) );
+ }
+ else
+ {
+ mbedtls_ssl_conf_ca_chain( &( pSslContext->config ),
+ &( pSslContext->rootCa ),
+ NULL );
+ }
+
+ return mbedtlsError;
+}
+/*-----------------------------------------------------------*/
+
+static int32_t setClientCertificate( SSLContext_t * pSslContext,
+ const uint8_t * pClientCert,
+ size_t clientCertSize )
+{
+ int32_t mbedtlsError = -1;
+
+ configASSERT( pSslContext != NULL );
+ configASSERT( pClientCert != NULL );
+
+ /* Setup the client certificate. */
+ mbedtlsError = mbedtls_x509_crt_parse( &( pSslContext->clientCert ),
+ pClientCert,
+ clientCertSize );
+
+ if( mbedtlsError != 0 )
+ {
+ LogError( ( "Failed to parse the client certificate: mbedTLSError= %s : %s.",
+ mbedtlsHighLevelCodeOrDefault( mbedtlsError ),
+ mbedtlsLowLevelCodeOrDefault( mbedtlsError ) ) );
+ }
+
+ return mbedtlsError;
+}
+/*-----------------------------------------------------------*/
+
+static int32_t setPrivateKey( SSLContext_t * pSslContext,
+ const uint8_t * pPrivateKey,
+ size_t privateKeySize )
+{
+ int32_t mbedtlsError = -1;
+
+ configASSERT( pSslContext != NULL );
+ configASSERT( pPrivateKey != NULL );
+
+ /* Setup the client private key. */
+ mbedtlsError = mbedtls_pk_parse_key( &( pSslContext->privKey ),
+ pPrivateKey,
+ privateKeySize,
+ NULL,
+ 0 );
+
+ if( mbedtlsError != 0 )
+ {
+ LogError( ( "Failed to parse the client key: mbedTLSError= %s : %s.",
+ mbedtlsHighLevelCodeOrDefault( mbedtlsError ),
+ mbedtlsLowLevelCodeOrDefault( mbedtlsError ) ) );
+ }
+
+ return mbedtlsError;
+}
+/*-----------------------------------------------------------*/
+
+static int32_t setCredentials( SSLContext_t * pSslContext,
+ const NetworkCredentials_t * pNetworkCredentials )
+{
+ int32_t mbedtlsError = -1;
+
+ configASSERT( pSslContext != NULL );
+ configASSERT( pNetworkCredentials != NULL );
+
+ /* Set up the certificate security profile, starting from the default value. */
+ pSslContext->certProfile = mbedtls_x509_crt_profile_default;
+
+ /* Set SSL authmode and the RNG context. */
+ mbedtls_ssl_conf_authmode( &( pSslContext->config ),
+ MBEDTLS_SSL_VERIFY_REQUIRED );
+ mbedtls_ssl_conf_rng( &( pSslContext->config ),
+ mbedtls_ctr_drbg_random,
+ &( pSslContext->ctrDrgbContext ) );
+ mbedtls_ssl_conf_cert_profile( &( pSslContext->config ),
+ &( pSslContext->certProfile ) );
+
+ mbedtlsError = setRootCa( pSslContext,
+ pNetworkCredentials->pRootCa,
+ pNetworkCredentials->rootCaSize );
+
+ if( ( pNetworkCredentials->pClientCert != NULL ) &&
+ ( pNetworkCredentials->pPrivateKey != NULL ) )
+ {
+ if( mbedtlsError == 0 )
+ {
+ mbedtlsError = setClientCertificate( pSslContext,
+ pNetworkCredentials->pClientCert,
+ pNetworkCredentials->clientCertSize );
+ }
+
+ if( mbedtlsError == 0 )
+ {
+ mbedtlsError = setPrivateKey( pSslContext,
+ pNetworkCredentials->pPrivateKey,
+ pNetworkCredentials->privateKeySize );
+ }
+
+ if( mbedtlsError == 0 )
+ {
+ mbedtlsError = mbedtls_ssl_conf_own_cert( &( pSslContext->config ),
+ &( pSslContext->clientCert ),
+ &( pSslContext->privKey ) );
+ }
+ }
+
+ return mbedtlsError;
+}
+/*-----------------------------------------------------------*/
+
+static void setOptionalConfigurations( SSLContext_t * pSslContext,
+ const char * pHostName,
+ const NetworkCredentials_t * pNetworkCredentials )
+{
+ int32_t mbedtlsError = -1;
+
+ configASSERT( pSslContext != NULL );
+ configASSERT( pHostName != NULL );
+ configASSERT( pNetworkCredentials != NULL );
+
+ if( pNetworkCredentials->pAlpnProtos != NULL )
+ {
+ /* Include an application protocol list in the TLS ClientHello
+ * message. */
+ mbedtlsError = mbedtls_ssl_conf_alpn_protocols( &( pSslContext->config ),
+ pNetworkCredentials->pAlpnProtos );
+
+ if( mbedtlsError != 0 )
+ {
+ LogError( ( "Failed to configure ALPN protocol in mbed TLS: mbedTLSError= %s : %s.",
+ mbedtlsHighLevelCodeOrDefault( mbedtlsError ),
+ mbedtlsLowLevelCodeOrDefault( mbedtlsError ) ) );
+ }
+ }
+
+ /* Enable SNI if requested. */
+ if( pNetworkCredentials->disableSni == pdFALSE )
+ {
+ mbedtlsError = mbedtls_ssl_set_hostname( &( pSslContext->context ),
+ pHostName );
+
+ if( mbedtlsError != 0 )
+ {
+ LogError( ( "Failed to set server name: mbedTLSError= %s : %s.",
+ mbedtlsHighLevelCodeOrDefault( mbedtlsError ),
+ mbedtlsLowLevelCodeOrDefault( mbedtlsError ) ) );
+ }
+ }
+
+ /* Set Maximum Fragment Length if enabled. */
+ #ifdef MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
+
+ /* Enable the max fragment extension. 4096 bytes is currently the largest fragment size permitted.
+ * See RFC 8449 https://tools.ietf.org/html/rfc8449 for more information.
+ *
+ * Smaller values can be found in "mbedtls/include/ssl.h".
+ */
+ mbedtlsError = mbedtls_ssl_conf_max_frag_len( &( pSslContext->config ), MBEDTLS_SSL_MAX_FRAG_LEN_4096 );
+
+ if( mbedtlsError != 0 )
+ {
+ LogError( ( "Failed to maximum fragment length extension: mbedTLSError= %s : %s.",
+ mbedtlsHighLevelCodeOrDefault( mbedtlsError ),
+ mbedtlsLowLevelCodeOrDefault( mbedtlsError ) ) );
+ }
+ #endif /* ifdef MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */
+}
+/*-----------------------------------------------------------*/
+
+static TlsTransportStatus_t tlsSetup( NetworkContext_t * pNetworkContext,
+ const char * pHostName,
+ const NetworkCredentials_t * pNetworkCredentials )
+{
+ TlsTransportParams_t * pTlsTransportParams = NULL;
+ TlsTransportStatus_t returnStatus = TLS_TRANSPORT_SUCCESS;
+ int32_t mbedtlsError = 0;
+
+ configASSERT( pNetworkContext != NULL );
+ configASSERT( pNetworkContext->pParams != NULL );
+ configASSERT( pHostName != NULL );
+ configASSERT( pNetworkCredentials != NULL );
+ configASSERT( pNetworkCredentials->pRootCa != NULL );
+
+ pTlsTransportParams = pNetworkContext->pParams;
+ /* Initialize the mbed TLS context structures. */
+ sslContextInit( &( pTlsTransportParams->sslContext ) );
+
+ mbedtlsError = mbedtls_ssl_config_defaults( &( pTlsTransportParams->sslContext.config ),
+ MBEDTLS_SSL_IS_CLIENT,
+ MBEDTLS_SSL_TRANSPORT_STREAM,
+ MBEDTLS_SSL_PRESET_DEFAULT );
+
+ if( mbedtlsError != 0 )
+ {
+ LogError( ( "Failed to set default SSL configuration: mbedTLSError= %s : %s.",
+ mbedtlsHighLevelCodeOrDefault( mbedtlsError ),
+ mbedtlsLowLevelCodeOrDefault( mbedtlsError ) ) );
+
+ /* Per mbed TLS docs, mbedtls_ssl_config_defaults only fails on memory allocation. */
+ returnStatus = TLS_TRANSPORT_INSUFFICIENT_MEMORY;
+ }
+
+ if( returnStatus == TLS_TRANSPORT_SUCCESS )
+ {
+ mbedtlsError = setCredentials( &( pTlsTransportParams->sslContext ),
+ pNetworkCredentials );
+
+ if( mbedtlsError != 0 )
+ {
+ returnStatus = TLS_TRANSPORT_INVALID_CREDENTIALS;
+ }
+ else
+ {
+ /* Optionally set SNI and ALPN protocols. */
+ setOptionalConfigurations( &( pTlsTransportParams->sslContext ),
+ pHostName,
+ pNetworkCredentials );
+ }
+ }
+
+ return returnStatus;
+}
+/*-----------------------------------------------------------*/
+
+static TlsTransportStatus_t tlsHandshake( NetworkContext_t * pNetworkContext,
+ const NetworkCredentials_t * pNetworkCredentials )
+{
+ TlsTransportParams_t * pTlsTransportParams = NULL;
+ TlsTransportStatus_t returnStatus = TLS_TRANSPORT_SUCCESS;
+ int32_t mbedtlsError = 0;
+
+ configASSERT( pNetworkContext != NULL );
+ configASSERT( pNetworkContext->pParams != NULL );
+ configASSERT( pNetworkCredentials != NULL );
+
+ pTlsTransportParams = pNetworkContext->pParams;
+ /* Initialize the mbed TLS secured connection context. */
+ mbedtlsError = mbedtls_ssl_setup( &( pTlsTransportParams->sslContext.context ),
+ &( pTlsTransportParams->sslContext.config ) );
+
+ if( mbedtlsError != 0 )
+ {
+ LogError( ( "Failed to set up mbed TLS SSL context: mbedTLSError= %s : %s.",
+ mbedtlsHighLevelCodeOrDefault( mbedtlsError ),
+ mbedtlsLowLevelCodeOrDefault( mbedtlsError ) ) );
+
+ returnStatus = TLS_TRANSPORT_INTERNAL_ERROR;
+ }
+ else
+ {
+ /* Set the underlying IO for the TLS connection. */
+
+ /* MISRA Rule 11.2 flags the following line for casting the second
+ * parameter to void *. This rule is suppressed because
+ * #mbedtls_ssl_set_bio requires the second parameter as void *.
+ */
+ /* coverity[misra_c_2012_rule_11_2_violation] */
+ mbedtls_ssl_set_bio( &( pTlsTransportParams->sslContext.context ),
+ ( void * ) pTlsTransportParams->tcpSocket,
+ mbedtls_platform_send,
+ mbedtls_platform_recv,
+ NULL );
+ }
+
+ if( returnStatus == TLS_TRANSPORT_SUCCESS )
+ {
+ /* Perform the TLS handshake. */
+ do
+ {
+ mbedtlsError = mbedtls_ssl_handshake( &( pTlsTransportParams->sslContext.context ) );
+ } while( ( mbedtlsError == MBEDTLS_ERR_SSL_WANT_READ ) ||
+ ( mbedtlsError == MBEDTLS_ERR_SSL_WANT_WRITE ) );
+
+ if( mbedtlsError != 0 )
+ {
+ LogError( ( "Failed to perform TLS handshake: mbedTLSError= %s : %s.",
+ mbedtlsHighLevelCodeOrDefault( mbedtlsError ),
+ mbedtlsLowLevelCodeOrDefault( mbedtlsError ) ) );
+
+ returnStatus = TLS_TRANSPORT_HANDSHAKE_FAILED;
+ }
+ else
+ {
+ LogInfo( ( "(Network connection %p) TLS handshake successful.",
+ pNetworkContext ) );
+ }
+ }
+
+ return returnStatus;
+}
+/*-----------------------------------------------------------*/
+
+static TlsTransportStatus_t initMbedtls( mbedtls_entropy_context * pEntropyContext,
+ mbedtls_ctr_drbg_context * pCtrDrgbContext )
+{
+ TlsTransportStatus_t returnStatus = TLS_TRANSPORT_SUCCESS;
+ int32_t mbedtlsError = 0;
+
+ /* Set the mutex functions for mbed TLS thread safety. */
+ mbedtls_threading_set_alt( mbedtls_platform_mutex_init,
+ mbedtls_platform_mutex_free,
+ mbedtls_platform_mutex_lock,
+ mbedtls_platform_mutex_unlock );
+
+ /* Initialize contexts for random number generation. */
+ mbedtls_entropy_init( pEntropyContext );
+ mbedtls_ctr_drbg_init( pCtrDrgbContext );
+
+ /* Add a strong entropy source. At least one is required. */
+ mbedtlsError = mbedtls_entropy_add_source( pEntropyContext,
+ mbedtls_platform_entropy_poll,
+ NULL,
+ 32,
+ MBEDTLS_ENTROPY_SOURCE_STRONG );
+
+ if( mbedtlsError != 0 )
+ {
+ LogError( ( "Failed to add entropy source: mbedTLSError= %s : %s.",
+ mbedtlsHighLevelCodeOrDefault( mbedtlsError ),
+ mbedtlsLowLevelCodeOrDefault( mbedtlsError ) ) );
+ returnStatus = TLS_TRANSPORT_INTERNAL_ERROR;
+ }
+
+ if( returnStatus == TLS_TRANSPORT_SUCCESS )
+ {
+ /* Seed the random number generator. */
+ mbedtlsError = mbedtls_ctr_drbg_seed( pCtrDrgbContext,
+ mbedtls_entropy_func,
+ pEntropyContext,
+ NULL,
+ 0 );
+
+ if( mbedtlsError != 0 )
+ {
+ LogError( ( "Failed to seed PRNG: mbedTLSError= %s : %s.",
+ mbedtlsHighLevelCodeOrDefault( mbedtlsError ),
+ mbedtlsLowLevelCodeOrDefault( mbedtlsError ) ) );
+ returnStatus = TLS_TRANSPORT_INTERNAL_ERROR;
+ }
+ }
+
+ if( returnStatus == TLS_TRANSPORT_SUCCESS )
+ {
+ LogDebug( ( "Successfully initialized mbedTLS." ) );
+ }
+
+ return returnStatus;
+}
+/*-----------------------------------------------------------*/
+
+TlsTransportStatus_t TLS_FreeRTOS_Connect( NetworkContext_t * pNetworkContext,
+ const char * pHostName,
+ uint16_t port,
+ const NetworkCredentials_t * pNetworkCredentials,
+ uint32_t receiveTimeoutMs,
+ uint32_t sendTimeoutMs )
+{
+ TlsTransportParams_t * pTlsTransportParams = NULL;
+ TlsTransportStatus_t returnStatus = TLS_TRANSPORT_SUCCESS;
+ BaseType_t socketStatus = 0;
+
+ if( ( pNetworkContext == NULL ) ||
+ ( pNetworkContext->pParams == NULL ) ||
+ ( pHostName == NULL ) ||
+ ( pNetworkCredentials == NULL ) )
+ {
+ LogError( ( "Invalid input parameter(s): Arguments cannot be NULL. pNetworkContext=%p, "
+ "pHostName=%p, pNetworkCredentials=%p.",
+ pNetworkContext,
+ pHostName,
+ pNetworkCredentials ) );
+ returnStatus = TLS_TRANSPORT_INVALID_PARAMETER;
+ }
+ else if( ( pNetworkCredentials->pRootCa == NULL ) )
+ {
+ LogError( ( "pRootCa cannot be NULL." ) );
+ returnStatus = TLS_TRANSPORT_INVALID_PARAMETER;
+ }
+ else
+ {
+ /* Empty else for MISRA 15.7 compliance. */
+ }
+
+ /* Establish a TCP connection with the server. */
+ if( returnStatus == TLS_TRANSPORT_SUCCESS )
+ {
+ pTlsTransportParams = pNetworkContext->pParams;
+ socketStatus = Sockets_Connect( &( pTlsTransportParams->tcpSocket ),
+ pHostName,
+ port,
+ receiveTimeoutMs,
+ sendTimeoutMs );
+
+ if( socketStatus != 0 )
+ {
+ LogError( ( "Failed to connect to %s with error %d.",
+ pHostName,
+ socketStatus ) );
+ returnStatus = TLS_TRANSPORT_CONNECT_FAILURE;
+ }
+ }
+
+ /* Initialize mbedtls. */
+ if( returnStatus == TLS_TRANSPORT_SUCCESS )
+ {
+ returnStatus = initMbedtls( &( pTlsTransportParams->sslContext.entropyContext ),
+ &( pTlsTransportParams->sslContext.ctrDrgbContext ) );
+ }
+
+ /* Initialize TLS contexts and set credentials. */
+ if( returnStatus == TLS_TRANSPORT_SUCCESS )
+ {
+ returnStatus = tlsSetup( pNetworkContext, pHostName, pNetworkCredentials );
+ }
+
+ /* Perform TLS handshake. */
+ if( returnStatus == TLS_TRANSPORT_SUCCESS )
+ {
+ returnStatus = tlsHandshake( pNetworkContext, pNetworkCredentials );
+ }
+
+ /* Clean up on failure. */
+ if( returnStatus != TLS_TRANSPORT_SUCCESS )
+ {
+ if( ( pNetworkContext != NULL ) && ( pNetworkContext->pParams != NULL ) )
+ {
+ sslContextFree( &( pTlsTransportParams->sslContext ) );
+
+ if( pTlsTransportParams->tcpSocket != FREERTOS_INVALID_SOCKET )
+ {
+ ( void ) FreeRTOS_closesocket( pTlsTransportParams->tcpSocket );
+ }
+ }
+ }
+ else
+ {
+ LogInfo( ( "(Network connection %p) Connection to %s established.",
+ pNetworkContext,
+ pHostName ) );
+ }
+
+ return returnStatus;
+}
+/*-----------------------------------------------------------*/
+
+void TLS_FreeRTOS_Disconnect( NetworkContext_t * pNetworkContext )
+{
+ TlsTransportParams_t * pTlsTransportParams = NULL;
+ BaseType_t tlsStatus = 0;
+
+ if( ( pNetworkContext != NULL ) && ( pNetworkContext->pParams != NULL ) )
+ {
+ pTlsTransportParams = pNetworkContext->pParams;
+ /* Attempting to terminate TLS connection. */
+ tlsStatus = ( BaseType_t ) mbedtls_ssl_close_notify( &( pTlsTransportParams->sslContext.context ) );
+
+ /* Ignore the WANT_READ and WANT_WRITE return values. */
+ if( ( tlsStatus != ( BaseType_t ) MBEDTLS_ERR_SSL_WANT_READ ) &&
+ ( tlsStatus != ( BaseType_t ) MBEDTLS_ERR_SSL_WANT_WRITE ) )
+ {
+ if( tlsStatus == 0 )
+ {
+ LogInfo( ( "(Network connection %p) TLS close-notify sent.",
+ pNetworkContext ) );
+ }
+ else
+ {
+ LogError( ( "(Network connection %p) Failed to send TLS close-notify: mbedTLSError= %s : %s.",
+ pNetworkContext,
+ mbedtlsHighLevelCodeOrDefault( tlsStatus ),
+ mbedtlsLowLevelCodeOrDefault( tlsStatus ) ) );
+ }
+ }
+ else
+ {
+ /* WANT_READ and WANT_WRITE can be ignored. Logging for debugging purposes. */
+ LogInfo( ( "(Network connection %p) TLS close-notify sent; ",
+ "received %s as the TLS status can be ignored for close-notify."
+ ( tlsStatus == MBEDTLS_ERR_SSL_WANT_READ ) ? "WANT_READ" : "WANT_WRITE",
+ pNetworkContext ) );
+ }
+
+ /* Call socket shutdown function to close connection. */
+ Sockets_Disconnect( pTlsTransportParams->tcpSocket );
+
+ /* Free mbed TLS contexts. */
+ sslContextFree( &( pTlsTransportParams->sslContext ) );
+ }
+
+ /* Clear the mutex functions for mbed TLS thread safety. */
+ mbedtls_threading_free_alt();
+}
+/*-----------------------------------------------------------*/
+
+int32_t TLS_FreeRTOS_recv( NetworkContext_t * pNetworkContext,
+ void * pBuffer,
+ size_t bytesToRecv )
+{
+ TlsTransportParams_t * pTlsTransportParams = NULL;
+ int32_t tlsStatus = 0;
+
+ configASSERT( ( pNetworkContext != NULL ) && ( pNetworkContext->pParams != NULL ) );
+
+ pTlsTransportParams = pNetworkContext->pParams;
+ tlsStatus = ( int32_t ) mbedtls_ssl_read( &( pTlsTransportParams->sslContext.context ),
+ pBuffer,
+ bytesToRecv );
+
+ if( ( tlsStatus == MBEDTLS_ERR_SSL_TIMEOUT ) ||
+ ( tlsStatus == MBEDTLS_ERR_SSL_WANT_READ ) ||
+ ( tlsStatus == MBEDTLS_ERR_SSL_WANT_WRITE ) )
+ {
+ LogDebug( ( "Failed to read data. However, a read can be retried on this error. "
+ "mbedTLSError= %s : %s.",
+ mbedtlsHighLevelCodeOrDefault( tlsStatus ),
+ mbedtlsLowLevelCodeOrDefault( tlsStatus ) ) );
+
+ /* Mark these set of errors as a timeout. The libraries may retry read
+ * on these errors. */
+ tlsStatus = 0;
+ }
+ else if( tlsStatus < 0 )
+ {
+ LogError( ( "Failed to read data: mbedTLSError= %s : %s.",
+ mbedtlsHighLevelCodeOrDefault( tlsStatus ),
+ mbedtlsLowLevelCodeOrDefault( tlsStatus ) ) );
+ }
+ else
+ {
+ /* Empty else marker. */
+ }
+
+ return tlsStatus;
+}
+/*-----------------------------------------------------------*/
+
+int32_t TLS_FreeRTOS_send( NetworkContext_t * pNetworkContext,
+ const void * pBuffer,
+ size_t bytesToSend )
+{
+ TlsTransportParams_t * pTlsTransportParams = NULL;
+ int32_t tlsStatus = 0;
+
+ configASSERT( ( pNetworkContext != NULL ) && ( pNetworkContext->pParams != NULL ) );
+
+ pTlsTransportParams = pNetworkContext->pParams;
+ tlsStatus = ( int32_t ) mbedtls_ssl_write( &( pTlsTransportParams->sslContext.context ),
+ pBuffer,
+ bytesToSend );
+
+ if( ( tlsStatus == MBEDTLS_ERR_SSL_TIMEOUT ) ||
+ ( tlsStatus == MBEDTLS_ERR_SSL_WANT_READ ) ||
+ ( tlsStatus == MBEDTLS_ERR_SSL_WANT_WRITE ) )
+ {
+ LogDebug( ( "Failed to send data. However, send can be retried on this error. "
+ "mbedTLSError= %s : %s.",
+ mbedtlsHighLevelCodeOrDefault( tlsStatus ),
+ mbedtlsLowLevelCodeOrDefault( tlsStatus ) ) );
+
+ /* Mark these set of errors as a timeout. The libraries may retry send
+ * on these errors. */
+ tlsStatus = 0;
+ }
+ else if( tlsStatus < 0 )
+ {
+ LogError( ( "Failed to send data: mbedTLSError= %s : %s.",
+ mbedtlsHighLevelCodeOrDefault( tlsStatus ),
+ mbedtlsLowLevelCodeOrDefault( tlsStatus ) ) );
+ }
+ else
+ {
+ /* Empty else marker. */
+ }
+
+ return tlsStatus;
+}
+/*-----------------------------------------------------------*/
diff --git a/FreeRTOS-Plus/Source/Application-Protocols/network_transport/cellular/using_mbedtls/using_mbedtls.h b/FreeRTOS-Plus/Source/Application-Protocols/network_transport/cellular/using_mbedtls/using_mbedtls.h
new file mode 100644
index 000000000..25eb5074c
--- /dev/null
+++ b/FreeRTOS-Plus/Source/Application-Protocols/network_transport/cellular/using_mbedtls/using_mbedtls.h
@@ -0,0 +1,218 @@
+/*
+ * FreeRTOS V202107.00
+ * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * https://www.FreeRTOS.org
+ * https://github.com/FreeRTOS
+ *
+ */
+
+/**
+ * @file tls_freertos.h
+ * @brief TLS transport interface header.
+ */
+
+#ifndef USING_MBEDTLS
+#define USING_MBEDTLS
+
+/**************************************************/
+/******* DO NOT CHANGE the following order ********/
+/**************************************************/
+
+/* Logging related header files are required to be included in the following order:
+ * 1. Include the header file "logging_levels.h".
+ * 2. Define LIBRARY_LOG_NAME and LIBRARY_LOG_LEVEL.
+ * 3. Include the header file "logging_stack.h".
+ */
+
+/* Include header that defines log levels. */
+#include "logging_levels.h"
+
+/* Logging configuration for the Sockets. */
+#ifndef LIBRARY_LOG_NAME
+ #define LIBRARY_LOG_NAME "TlsTransport"
+#endif
+#ifndef LIBRARY_LOG_LEVEL
+ #define LIBRARY_LOG_LEVEL LOG_ERROR
+#endif
+
+/* Prototype for the function used to print to console on Windows simulator
+ * of FreeRTOS.
+ * The function prints to the console before the network is connected;
+ * then a UDP port after the network has connected. */
+extern void vLoggingPrintf( const char * pcFormatString,
+ ... );
+
+/* Map the SdkLog macro to the logging function to enable logging
+ * on Windows simulator. */
+#ifndef SdkLog
+ #define SdkLog( message ) vLoggingPrintf message
+#endif
+
+#include "logging_stack.h"
+
+/************ End of logging configuration ****************/
+
+/* FreeRTOS+TCP include. */
+#include "FreeRTOS_Sockets.h"
+
+/* Transport interface include. */
+#include "transport_interface.h"
+
+/* mbed TLS includes. */
+#include "mbedtls/ctr_drbg.h"
+#include "mbedtls/entropy.h"
+#include "mbedtls/ssl.h"
+#include "mbedtls/threading.h"
+#include "mbedtls/x509.h"
+#include "mbedtls/error.h"
+
+/**
+ * @brief Secured connection context.
+ */
+typedef struct SSLContext
+{
+ mbedtls_ssl_config config; /**< @brief SSL connection configuration. */
+ mbedtls_ssl_context context; /**< @brief SSL connection context */
+ mbedtls_x509_crt_profile certProfile; /**< @brief Certificate security profile for this connection. */
+ mbedtls_x509_crt rootCa; /**< @brief Root CA certificate context. */
+ mbedtls_x509_crt clientCert; /**< @brief Client certificate context. */
+ mbedtls_pk_context privKey; /**< @brief Client private key context. */
+ mbedtls_entropy_context entropyContext; /**< @brief Entropy context for random number generation. */
+ mbedtls_ctr_drbg_context ctrDrgbContext; /**< @brief CTR DRBG context for random number generation. */
+} SSLContext_t;
+
+/**
+ * @brief Parameters for the network context of the transport interface
+ * implementation that uses mbedTLS and FreeRTOS+TCP sockets.
+ */
+typedef struct TlsTransportParams
+{
+ Socket_t tcpSocket;
+ SSLContext_t sslContext;
+} TlsTransportParams_t;
+
+/**
+ * @brief Contains the credentials necessary for tls connection setup.
+ */
+typedef struct NetworkCredentials
+{
+ /**
+ * @brief To use ALPN, set this to a NULL-terminated list of supported
+ * protocols in decreasing order of preference.
+ *
+ * See [this link]
+ * (https://aws.amazon.com/blogs/iot/mqtt-with-tls-client-authentication-on-port-443-why-it-is-useful-and-how-it-works/)
+ * for more information.
+ */
+ const char ** pAlpnProtos;
+
+ /**
+ * @brief Disable server name indication (SNI) for a TLS session.
+ */
+ BaseType_t disableSni;
+
+ const uint8_t * pRootCa; /**< @brief String representing a trusted server root certificate. */
+ size_t rootCaSize; /**< @brief Size associated with #NetworkCredentials.pRootCa. */
+ const uint8_t * pClientCert; /**< @brief String representing the client certificate. */
+ size_t clientCertSize; /**< @brief Size associated with #NetworkCredentials.pClientCert. */
+ const uint8_t * pPrivateKey; /**< @brief String representing the client certificate's private key. */
+ size_t privateKeySize; /**< @brief Size associated with #NetworkCredentials.pPrivateKey. */
+} NetworkCredentials_t;
+
+/**
+ * @brief TLS Connect / Disconnect return status.
+ */
+typedef enum TlsTransportStatus
+{
+ TLS_TRANSPORT_SUCCESS = 0, /**< Function successfully completed. */
+ TLS_TRANSPORT_INVALID_PARAMETER, /**< At least one parameter was invalid. */
+ TLS_TRANSPORT_INSUFFICIENT_MEMORY, /**< Insufficient memory required to establish connection. */
+ TLS_TRANSPORT_INVALID_CREDENTIALS, /**< Provided credentials were invalid. */
+ TLS_TRANSPORT_HANDSHAKE_FAILED, /**< Performing TLS handshake with server failed. */
+ TLS_TRANSPORT_INTERNAL_ERROR, /**< A call to a system API resulted in an internal error. */
+ TLS_TRANSPORT_CONNECT_FAILURE /**< Initial connection to the server failed. */
+} TlsTransportStatus_t;
+
+/**
+ * @brief Create a TLS connection with FreeRTOS sockets.
+ *
+ * @param[out] pNetworkContext Pointer to a network context to contain the
+ * initialized socket handle.
+ * @param[in] pHostName The hostname of the remote endpoint.
+ * @param[in] port The destination port.
+ * @param[in] pNetworkCredentials Credentials for the TLS connection.
+ * @param[in] receiveTimeoutMs Receive socket timeout.
+ * @param[in] sendTimeoutMs Send socket timeout.
+ *
+ * @return #TLS_TRANSPORT_SUCCESS, #TLS_TRANSPORT_INSUFFICIENT_MEMORY, #TLS_TRANSPORT_INVALID_CREDENTIALS,
+ * #TLS_TRANSPORT_HANDSHAKE_FAILED, #TLS_TRANSPORT_INTERNAL_ERROR, or #TLS_TRANSPORT_CONNECT_FAILURE.
+ */
+TlsTransportStatus_t TLS_FreeRTOS_Connect( NetworkContext_t * pNetworkContext,
+ const char * pHostName,
+ uint16_t port,
+ const NetworkCredentials_t * pNetworkCredentials,
+ uint32_t receiveTimeoutMs,
+ uint32_t sendTimeoutMs );
+
+/**
+ * @brief Gracefully disconnect an established TLS connection.
+ *
+ * @param[in] pNetworkContext Network context.
+ */
+void TLS_FreeRTOS_Disconnect( NetworkContext_t * pNetworkContext );
+
+/**
+ * @brief Receives data from an established TLS connection.
+ *
+ * This is the TLS version of the transport interface's
+ * #TransportRecv_t function.
+ *
+ * @param[in] pNetworkContext The Network context.
+ * @param[out] pBuffer Buffer to receive bytes into.
+ * @param[in] bytesToRecv Number of bytes to receive from the network.
+ *
+ * @return Number of bytes (> 0) received if successful;
+ * 0 if the socket times out without reading any bytes;
+ * negative value on error.
+ */
+int32_t TLS_FreeRTOS_recv( NetworkContext_t * pNetworkContext,
+ void * pBuffer,
+ size_t bytesToRecv );
+
+/**
+ * @brief Sends data over an established TLS connection.
+ *
+ * This is the TLS version of the transport interface's
+ * #TransportSend_t function.
+ *
+ * @param[in] pNetworkContext The network context.
+ * @param[in] pBuffer Buffer containing the bytes to send.
+ * @param[in] bytesToSend Number of bytes to send from the buffer.
+ *
+ * @return Number of bytes (> 0) sent on success;
+ * 0 if the socket times out without sending any bytes;
+ * else a negative value to represent error.
+ */
+int32_t TLS_FreeRTOS_send( NetworkContext_t * pNetworkContext,
+ const void * pBuffer,
+ size_t bytesToSend );
+
+#endif /* ifndef USING_MBEDTLS */