#ifndef NET_SOCKET_HPP_
#define NET_SOCKET_HPP_
#include "openthread-core-config.h"
#include "net/ip6_address.hpp"
namespace ot {
namespace Ip6 {
class MessageInfo : public otMessageInfo
{
public:
MessageInfo(void) { memset(this, 0, sizeof(*this)); }
Address &GetSockAddr(void) { return *static_cast<Address *>(&mSockAddr); }
const Address &GetSockAddr(void) const { return *static_cast<const Address *>(&mSockAddr); }
void SetSockAddr(const Address &aAddress) { mSockAddr = aAddress; }
uint16_t GetSockPort(void) const { return mSockPort; }
void SetSockPort(uint16_t aPort) { mSockPort = aPort; }
Address &GetPeerAddr(void) { return *static_cast<Address *>(&mPeerAddr); }
const Address &GetPeerAddr(void) const { return *static_cast<const Address *>(&mPeerAddr); }
void SetPeerAddr(const Address &aAddress) { mPeerAddr = aAddress; }
uint16_t GetPeerPort(void) const { return mPeerPort; }
void SetPeerPort(uint16_t aPort) { mPeerPort = aPort; }
uint8_t GetHopLimit(void) const { return mHopLimit; }
void SetHopLimit(uint8_t aHopLimit) { mHopLimit = aHopLimit; }
const void *GetLinkInfo(void) const { return mLinkInfo; }
void SetLinkInfo(const void *aLinkInfo) { mLinkInfo = aLinkInfo; }
bool IsHostInterface(void) const { return mIsHostInterface; }
bool ShouldAllowZeroHopLimit(void) const { return mAllowZeroHopLimit; }
void SetIsHostInterface(bool aIsHost) { mIsHostInterface = aIsHost; }
};
class SockAddr : public otSockAddr
{
public:
SockAddr(void) { Clear(); }
void Clear(void) { memset(this, 0, sizeof(*this)); }
Address &GetAddress(void) { return *static_cast<Address *>(&mAddress); }
const Address &GetAddress(void) const { return *static_cast<const Address *>(&mAddress); }
};
} }
#endif