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

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

객체는 '준비' 상태에서 초기화되며, 로컬 인터페이스 주소에 바인딩한 후 "바인딩' 상태로 진행한 다음 ICMP 메시지 수신을 위해 이벤트를 계속 처리하기 위해 등록된 상태가 계속됩니다.

참고: 이전 바이너리 호환성 이유로 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

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

객체는 '준비' 상태에서 초기화되며, 로컬 인터페이스 주소에 바인딩한 후 "바인딩' 상태로 진행한 다음 ICMP 메시지 수신을 위해 이벤트를 계속 처리하기 위해 등록된 상태가 계속됩니다.

참고: 이전 바이너리 호환성 이유로 kBasisState_Closed 상태 열거는 kState_Ready에 매핑됩니다. 기존 kState_Closed은 이전에 kState_ReadykState_Closed 상태에 있던 '아직 열리지 않음' 및 '이전에 닫힘'을 구분하기 위해 존재합니다.

보호된 속성

mBoundIntfId

InterfaceId mBoundIntfId

공개 함수

조인MulticastGroup

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
aAddresskIPAddressType_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
aAddresskIPAddressType_IPv4 또는 kIPAddressType_IPv6가 아니거나 멀티캐스트가 아닙니다.
other
다른 시스템 또는 플랫폼 오류

멀티캐스트 루프백

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
)

핸들 데이터 수신

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

처리 대기 중

void HandlePendingIO(
  uint16_t aPort
)

Init

void Init(
  InetLayer *aInetLayer
)

준비

SocketEvents PrepareIO(
  void
)

메시지 전송

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 정보 사용은 패킷 버퍼에서 데이터가 시작되기 전에 예약된 공간에 ''hidden&#39'입니다. 이는 시스템 레이어 이벤트에는 두 개의 인수만 포함하는데, 이 경우에는 인수를 종료 지점에 대한 버퍼와 버퍼에 대한 포인터를 전달하는 데 사용되기 때문에 필요합니다.

세부정보
매개변수
[in] aBuffer
IP 메시지가 포함된 패킷 버퍼
반환
성공 시 주소 정보를 가리키는 포인터 또는 주소 정보를 위한 패킷의 공간이 충분하지 않은 경우 NULL

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