nl::Inet::IPEndPointBasis

#include <src/inet/IPEndPointBasis.h>

이 클래스의 객체는 인스턴스화할 수 없는 IP 프로토콜 엔드포인트를 나타냅니다.

요약

상속

상속 출처: nl::Inet::EndPointBasis
직접 알려진 서브클래스:
  nl::Inet::RawEndPoint
  nl::Inet::UDPEndPoint

공개 유형

@8{
  kState_Ready = kBasisState_Closed,
  kState_Bound = 1,
  kState_Listening = 2,
  kState_Closed = 3
}
enum
기본 엔드포인트의 기본 동적 상태입니다.
@9{
  kSendFlag_RetainBuffer = 0x0040
}
enum
SendMsg 메서드의 옵션 플래그를 전송합니다.
OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo) typedef
void(*
메시지 텍스트 수신 이벤트 처리 함수의 유형입니다.
OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo) typedef
void(*
수신 오류 이벤트 처리 함수의 유형입니다.

공개 속성

OnMessageReceived
엔드포인트의 메시지 수신 이벤트 처리 함수 위임입니다.
OnReceiveError
엔드포인트의 수신 오류 이벤트 처리 함수 위임입니다.
mState
enum nl::Inet::IPEndPointBasis::@8
기본 엔드포인트의 기본 동적 상태입니다.

보호된 속성

mBoundIntfId
InterfaceId

공개 함수

JoinMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
IP 멀티캐스트 그룹에 참여합니다.
LeaveMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
IP 멀티캐스트 그룹에서 탈퇴합니다.
SetMulticastLoopback(IPVersion aIPVersion, bool aLoopback)
IP 멀티캐스트 트래픽을 루프백해야 하는지 여부를 설정합니다.

보호된 함수

Bind(IPAddressType aAddressType, IPAddress aAddress, uint16_t aPort, InterfaceId aInterfaceId)
BindInterface(IPAddressType aAddressType, InterfaceId aInterfaceId)
GetSocket(IPAddressType aAddressType, int aType, int aProtocol)
HandleDataReceived(Weave::System::PacketBuffer *aBuffer)
void
HandlePendingIO(uint16_t aPort)
void
Init(InetLayer *aInetLayer)
void
PrepareIO(void)
SendMsg(const IPPacketInfo *aPktInfo, Weave::System::PacketBuffer *aBuffer, uint16_t aSendFlags)

공개 정적 함수

FindNetifFromInterfaceId(InterfaceId aInterfaceId)
struct netif *

보호되는 정적 함수

GetPacketInfo(Weave::System::PacketBuffer *buf)
LwIP IP 레이어 소스 및 대상 주소 지정 정보를 가져옵니다.

공개 유형

@8

 @8

기본 엔드포인트의 기본 동적 상태입니다.

객체는 '준비됨' 상태에서 초기화됩니다. '바운드' 상태가 된 다음 '수신 대기' 상태를 유지합니다.

참고: kBasisState_Closed 상태 열거형은 이전 바이너리 호환성을 위해 kState_Ready에 매핑됩니다. 기존 kState_Closed는 '아직 열지 않음'의 차이를 별도로 식별하기 위해 존재합니다. '이전에 열어본 문서 종료" 이전에 kState_ReadykState_Closed 상태에 있던 상태

속성
kState_Bound

엔드포인트가 바인딩되었지만 리슨은 하지 않습니다.

kState_Closed

엔드포인트가 닫혔으며 출시할 준비가 되었습니다.

kState_Listening

데이터그램을 수신하는 엔드포인트입니다.

kState_Ready

엔드포인트가 초기화되었지만 열려 있지 않습니다.

@9

 @9

SendMsg 메서드의 옵션 플래그를 전송합니다.

속성
kSendFlag_RetainBuffer

파괴적인 방식으로 메시지를 대기열에 직접 추가하지 마세요.

큐에 사본을 추가합니다.

OnMessageReceivedFunct

void(* OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo)

메시지 텍스트 수신 이벤트 처리 함수의 유형입니다.

OnMessageReceived 위임 멤버에 이 유형의 함수를 제공하여 endPoint에서 메시지 텍스트 수신 이벤트를 처리합니다. 여기서 msgsenderAddr에 발신자로부터 받은 메시지 텍스트입니다.

세부정보
매개변수
[in] endPoint
이벤트와 연결된 엔드포인트입니다.
[in] msg
수신된 메시지 텍스트입니다.
[in] senderAddr
발신자의 IP 주소입니다.

OnReceiveErrorFunct

void(* OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo)

수신 오류 이벤트 처리 함수의 유형입니다.

endPoint의 수신 오류 이벤트를 처리하도록 OnReceiveError 위임 멤버에 이 유형의 함수를 제공합니다. err 인수는 오류 유형에 관한 구체적인 세부정보를 제공합니다.

세부정보
매개변수
[in] endPoint
이벤트와 연결된 엔드포인트입니다.
[in] err
오류가 발생한 이유입니다.

공개 속성

OnMessageReceived

OnMessageReceivedFunct OnMessageReceived

엔드포인트의 메시지 수신 이벤트 처리 함수 위임입니다.

OnReceiveError

OnReceiveErrorFunct OnReceiveError

엔드포인트의 수신 오류 이벤트 처리 함수 위임입니다.

mState

enum nl::Inet::IPEndPointBasis::@8 mState

기본 엔드포인트의 기본 동적 상태입니다.

객체는 '준비됨' 상태에서 초기화됩니다. '바운드' 상태가 된 다음 '수신 대기' 상태를 유지합니다.

참고: kBasisState_Closed 상태 열거형은 이전 바이너리 호환성을 위해 kState_Ready에 매핑됩니다. 기존 kState_Closed는 '아직 열지 않음'의 차이를 별도로 식별하기 위해 존재합니다. '이전에 열어본 문서 종료" 이전에 kState_ReadykState_Closed 상태에 있던 상태

보호된 속성

mBoundIntfId

InterfaceId mBoundIntfId

공개 함수

JoinMulticastGroup

INET_ERROR JoinMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

IP 멀티캐스트 그룹에 참여합니다.

엔드포인트를 지정된 인터페이스의 제공된 멀티캐스트 그룹에 조인합니다.

세부정보
매개변수
[in] aInterfaceId
멀티캐스트 그룹에 추가할 네트워크 인터페이스의 표시기
[in] aAddress
인터페이스를 추가할 멀티캐스트 그룹
반환 값
INET_NO_ERROR
성공: 멀티캐스트 그룹이 삭제됨
INET_ERROR_UNKNOWN_INTERFACE
알 수 없는 네트워크 인터페이스, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress이(가) kIPAddressType_IPv4 또는 kIPAddressType_IPv6이 아니거나 멀티캐스트하지 않습니다.
other
다른 시스템 또는 플랫폼 오류

LeaveMulticastGroup

INET_ERROR LeaveMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

IP 멀티캐스트 그룹에서 탈퇴합니다.

지정된 인터페이스의 제공된 멀티캐스트 그룹에서 엔드포인트를 삭제합니다.

세부정보
매개변수
[in] aInterfaceId
멀티캐스트 그룹에서 제거할 네트워크 인터페이스의 표시기입니다.
[in] aAddress
인터페이스를 삭제할 멀티캐스트 그룹을
반환 값
INET_NO_ERROR
성공: 멀티캐스트 그룹이 삭제됨
INET_ERROR_UNKNOWN_INTERFACE
알 수 없는 네트워크 인터페이스, aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddress이(가) kIPAddressType_IPv4 또는 kIPAddressType_IPv6이 아니거나 멀티캐스트하지 않습니다.
other
다른 시스템 또는 플랫폼 오류

SetMulticastLoopback

INET_ERROR SetMulticastLoopback(
  IPVersion aIPVersion,
  bool aLoopback
)

IP 멀티캐스트 트래픽을 루프백해야 하는지 여부를 설정합니다.

IP 멀티캐스트 트래픽이 이 엔드포인트로 루프백되어야 하는지 여부를 설정합니다.

세부정보
매개변수
[in] aIPVersion
[in] aLoop
반환 값
INET_NO_ERROR
성공: 멀티캐스트 루프백 동작 설정됨
other
다른 시스템 또는 플랫폼 오류

보호된 함수

바인딩

INET_ERROR Bind(
  IPAddressType aAddressType,
  IPAddress aAddress,
  uint16_t aPort,
  InterfaceId aInterfaceId
)

BindInterface

INET_ERROR BindInterface(
  IPAddressType aAddressType,
  InterfaceId aInterfaceId
)

GetSocket

INET_ERROR GetSocket(
  IPAddressType aAddressType,
  int aType,
  int aProtocol
)

HandleDataReceived

void HandleDataReceived(
  Weave::System::PacketBuffer *aBuffer
)

HandlePendingIO

void HandlePendingIO(
  uint16_t aPort
)

Init

void Init(
  InetLayer *aInetLayer
)

PrepareIO

SocketEvents PrepareIO(
  void
)

SendMsg

INET_ERROR SendMsg(
  const IPPacketInfo *aPktInfo,
  Weave::System::PacketBuffer *aBuffer,
  uint16_t aSendFlags
)

공개 정적 함수

FindNetifFromInterfaceId

struct netif * FindNetifFromInterfaceId(
  InterfaceId aInterfaceId
)

보호되는 정적 함수

GetPacketInfo

IPPacketInfo * GetPacketInfo(
  Weave::System::PacketBuffer *buf
)

LwIP IP 레이어 소스 및 대상 주소 지정 정보를 가져옵니다.

LwIP 사용 시 패킷에 대한 정보가 '숨김'됩니다. 패킷 버퍼의 데이터가 시작되기 전에 예약된 공간에 있을 것입니다. 이는 시스템 레이어 이벤트에 인수가 두 개만 있기 때문에 필요합니다. 이 경우 인수는 종료 지점에 대한 포인터와 버퍼에 대한 포인터를 전달하는 데 사용됩니다.

세부정보
매개변수
[in] aBuffer
IP 메시지가 포함된 패킷 버퍼
반환
성공 시 주소 정보에 대한 포인터 그렇지 않은 경우, 주소 정보를 위한 패킷에 공간이 충분하지 않은 경우 NULL입니다.

대부분의 경우 데이터가 작동하기 전에 정보를 저장하는 이러한 트릭은 LwIP IP 메시지의 첫 번째 버퍼에 이더넷/IP/UDP 헤더에 사용된 공간이 포함되어 있기 때문입니다. 하지만 IPPacketInfo 구조의 현재 크기 (40바이트)를 고려할 때 단일 패킷 버퍼에 페이로드와 함께 구조를 저장할 공간이 충분하지 않을 수 있습니다. 실제로 이는 이더넷 헤더 없이 도착하는 매우 큰 IPv4 패킷에서만 발생합니다.