- latest changes for HEP support
This commit is contained in:
@@ -7,104 +7,104 @@
|
||||
class NetworkFrame
|
||||
{
|
||||
public:
|
||||
struct PacketData
|
||||
{
|
||||
const uint8_t* mData;
|
||||
int mLength;
|
||||
struct PacketData
|
||||
{
|
||||
const uint8_t* mData;
|
||||
int mLength;
|
||||
|
||||
PacketData(const uint8_t* data, int length)
|
||||
:mData(data), mLength(length)
|
||||
{}
|
||||
PacketData(const uint8_t* data, int length)
|
||||
:mData(data), mLength(length)
|
||||
{}
|
||||
|
||||
PacketData()
|
||||
:mData(nullptr), mLength(0)
|
||||
{}
|
||||
};
|
||||
PacketData()
|
||||
:mData(nullptr), mLength(0)
|
||||
{}
|
||||
};
|
||||
|
||||
static PacketData GetUdpPayloadForEthernet(PacketData& packet, InternetAddress& source, InternetAddress& destination);
|
||||
static PacketData GetUdpPayloadForIp4(PacketData& packet, InternetAddress& source, InternetAddress& destination);
|
||||
static PacketData GetUdpPayloadForIp6(PacketData& packet, InternetAddress& source, InternetAddress& destination);
|
||||
static PacketData GetUdpPayloadForSLL(PacketData& packet, InternetAddress& source, InternetAddress& destination);
|
||||
static PacketData GetUdpPayloadForEthernet(PacketData& packet, InternetAddress& source, InternetAddress& destination);
|
||||
static PacketData GetUdpPayloadForIp4(PacketData& packet, InternetAddress& source, InternetAddress& destination);
|
||||
static PacketData GetUdpPayloadForIp6(PacketData& packet, InternetAddress& source, InternetAddress& destination);
|
||||
static PacketData GetUdpPayloadForSLL(PacketData& packet, InternetAddress& source, InternetAddress& destination);
|
||||
|
||||
struct EthernetHeader
|
||||
{
|
||||
/* Ethernet addresses are 6 bytes */
|
||||
static const int AddressLength = 6;
|
||||
uint8_t mEtherDHost[AddressLength]; /* Destination host address */
|
||||
uint8_t mEtherSHost[AddressLength]; /* Source host address */
|
||||
uint16_t mEtherType; /* IP? ARP? RARP? etc */
|
||||
};
|
||||
struct EthernetHeader
|
||||
{
|
||||
/* Ethernet addresses are 6 bytes */
|
||||
static const int AddressLength = 6;
|
||||
uint8_t mEtherDHost[AddressLength]; /* Destination host address */
|
||||
uint8_t mEtherSHost[AddressLength]; /* Source host address */
|
||||
uint16_t mEtherType; /* IP? ARP? RARP? etc */
|
||||
};
|
||||
|
||||
#if defined(TARGET_WIN)
|
||||
struct /*__attribute__((packed))*/ LinuxSllHeader
|
||||
#else
|
||||
struct __attribute__((packed)) LinuxSllHeader
|
||||
struct /*__attribute__((packed))*/ LinuxSllHeader
|
||||
#else
|
||||
struct __attribute__((packed)) LinuxSllHeader
|
||||
#endif
|
||||
{
|
||||
uint16_t mPacketType;
|
||||
uint16_t mARPHRD;
|
||||
uint16_t mAddressLength;
|
||||
uint64_t mAddress;
|
||||
uint16_t mProtocolType;
|
||||
};
|
||||
{
|
||||
uint16_t mPacketType;
|
||||
uint16_t mARPHRD;
|
||||
uint16_t mAddressLength;
|
||||
uint64_t mAddress;
|
||||
uint16_t mProtocolType;
|
||||
};
|
||||
|
||||
struct VlanHeader
|
||||
{
|
||||
uint16_t mMagicId;
|
||||
uint16_t mData;
|
||||
};
|
||||
struct VlanHeader
|
||||
{
|
||||
uint16_t mMagicId;
|
||||
uint16_t mData;
|
||||
};
|
||||
|
||||
struct Ip4Header
|
||||
{
|
||||
uint8_t mVhl; /* version << 4 | header length >> 2 */
|
||||
uint8_t mTos; /* type of service */
|
||||
uint16_t mLen; /* total length */
|
||||
uint16_t mId; /* identification */
|
||||
uint16_t mOffset; /* fragment offset field */
|
||||
struct Ip4Header
|
||||
{
|
||||
uint8_t mVhl; /* version << 4 | header length >> 2 */
|
||||
uint8_t mTos; /* type of service */
|
||||
uint16_t mLen; /* total length */
|
||||
uint16_t mId; /* identification */
|
||||
uint16_t mOffset; /* fragment offset field */
|
||||
#define IP_RF 0x8000 /* reserved fragment flag */
|
||||
#define IP_DF 0x4000 /* dont fragment flag */
|
||||
#define IP_MF 0x2000 /* more fragments flag */
|
||||
#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
|
||||
uint8_t mTtl; /* time to live */
|
||||
uint8_t mProtocol; /* protocol */
|
||||
uint16_t mChecksum; /* checksum */
|
||||
in_addr mSource,
|
||||
mDestination; /* source and dest address */
|
||||
uint8_t mTtl; /* time to live */
|
||||
uint8_t mProtocol; /* protocol */
|
||||
uint16_t mChecksum; /* checksum */
|
||||
in_addr mSource,
|
||||
mDestination; /* source and dest address */
|
||||
|
||||
int headerLength() const
|
||||
int headerLength() const
|
||||
{
|
||||
return (mVhl & 0x0f) * 4;
|
||||
}
|
||||
|
||||
int version() const
|
||||
{
|
||||
return mVhl >> 4;
|
||||
}
|
||||
|
||||
const in_addr& source4() const { return mSource; }
|
||||
const in_addr& dest4() const { return mDestination; }
|
||||
const in6_addr& source6() const { return (const in6_addr&)mSource; }
|
||||
const in6_addr& dest6() const { return (const in6_addr&)mDestination; }
|
||||
};
|
||||
|
||||
struct UdpHeader
|
||||
{
|
||||
return (mVhl & 0x0f) * 4;
|
||||
}
|
||||
uint16_t mSourcePort; /* source port */
|
||||
uint16_t mDestinationPort;
|
||||
uint16_t mDatagramLength; /* datagram length */
|
||||
uint16_t mDatagramChecksum; /* datagram checksum */
|
||||
};
|
||||
|
||||
int version() const
|
||||
|
||||
struct TcpHeader
|
||||
{
|
||||
return mVhl >> 4;
|
||||
}
|
||||
|
||||
const in_addr& source4() const { return mSource; }
|
||||
const in_addr& dest4() const { return mDestination; }
|
||||
const in6_addr& source6() const { return (const in6_addr&)mSource; }
|
||||
const in6_addr& dest6() const { return (const in6_addr&)mDestination; }
|
||||
};
|
||||
|
||||
struct UdpHeader
|
||||
{
|
||||
uint16_t mSourcePort; /* source port */
|
||||
uint16_t mDestinationPort;
|
||||
uint16_t mDatagramLength; /* datagram length */
|
||||
uint16_t mDatagramChecksum; /* datagram checksum */
|
||||
};
|
||||
|
||||
|
||||
struct TcpHeader
|
||||
{
|
||||
uint16_t mSourcePort; /* source port */
|
||||
uint16_t mDestinationPort; /* destination port */
|
||||
uint32_t mSeqNo; /* sequence number */
|
||||
uint32_t mAckNo; /* acknowledgement number */
|
||||
uint32_t mDataOffset; /* data offset, rsvd */
|
||||
uint16_t mSourcePort; /* source port */
|
||||
uint16_t mDestinationPort; /* destination port */
|
||||
uint32_t mSeqNo; /* sequence number */
|
||||
uint32_t mAckNo; /* acknowledgement number */
|
||||
uint32_t mDataOffset; /* data offset, rsvd */
|
||||
#define TH_OFF(th) (((th)->th_offx2 & 0xf0) >> 4)
|
||||
uint8_t mFlags;
|
||||
uint8_t mFlags;
|
||||
#define TH_FIN 0x01
|
||||
#define TH_SYN 0x02
|
||||
#define TH_RST 0x04
|
||||
@@ -114,10 +114,10 @@ public:
|
||||
#define TH_ECE 0x40
|
||||
#define TH_CWR 0x80
|
||||
#define TH_FLAGS (TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG|TH_ECE|TH_CWR)
|
||||
uint16_t mWindow; /* window */
|
||||
uint16_t mChecksum; /* checksum */
|
||||
uint16_t mUrgentPointer; /* urgent pointer */
|
||||
};
|
||||
uint16_t mWindow; /* window */
|
||||
uint16_t mChecksum; /* checksum */
|
||||
uint16_t mUrgentPointer; /* urgent pointer */
|
||||
};
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user