nl::Inet::IPEndPointBasis

#include <src/inet/IPEndPointBasis.h>

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

요약

상속

상속 대상: nl::Inet::EndPointBasis
Direct Known Subclasses:
  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)

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

이 유형의 함수를 OnReceiveError 위임 멤버에 제공하여 endPoint에서 수신 오류 이벤트를 처리합니다. 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

공개 함수

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 패킷에서만 발생해야 합니다.