nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

הפעולה הזו מספקת גישה לשירותי אינטרנט, כולל טיימרים, רזולוציית DNS, העברת רשת TCP, תעבורת רשת UDP ותעבורת נתונים גולמית ברשת, עבור שרשור יחיד.

סיכום

בשקעי BSD/POSIX, הודעות לגבי מוּכנוּת לאירועים מטופלות באמצעות מתארי קבצים והטמעה רגילה של סקר / בחירה לפי התאמת הפלטפורמה.

ב-LwIP, הטיפול בהתראות מוּכנוּת לאירועים מתבצע באמצעות אירועים / הודעות וקטעי הוק (hooks) ספציפיים לפלטפורמה ולמערכת עבור מערכת האירועים / ההודעות.

בונים והורסים

InetLayer(void)
זהו בנאי ברירת המחדל InetLayer.

סוגים ציבוריים

@5{
  kState_NotInitialized = 0,
  kState_Initialized = 1,
  kState_ShutdownInProgress = 2
}
טיפוסים בני מנייה (enum)
המצב הנוכחי של האובייקט InetLayer.
DNSResolveCompleteFunct typedef
DNSResolver::OnResolveCompleteFunct

מאפיינים ציבוריים

State
enum nl::Inet::InetLayer::@5
המצב הנוכחי של האובייקט InetLayer.

מאפיינים סטטיים ציבוריים

sInetEventHandlerDelegate

תפקידים ציבוריים

CanEnqueueDroppableEvent(void)
bool
CancelResolveHostAddress(DNSResolveCompleteFunct onComplete, void *appState)
void
מבטלים כל שאילתת DNS שטרם טופלה (לצורך השלמת קריאה חוזרת ומצב אפליקציה תואמת) שעשויה להיות עדיין פעילה.
DroppableEventDequeued(void)
void
GetInterfaceFromAddr(const IPAddress & addr, InterfaceId & intfId)
מקבלים את מזהה הממשק של כתובת ה-IP שצוינה.
GetLinkLocalAddr(InterfaceId link, IPAddress *llAddr)
קבלת כתובת ה-IPv6 המקומית של הקישור לקישור או לממשק שצוינו.
GetPlatformData(void)
void *
הפעולה הזו תחזיר את כל נתוני הפלטפורמה הספציפיים ללקוח שהוקצו למכונה, אם הם הוגדרו קודם לכן.
HandleSelectResult(int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
void
טיפול בקלט של קלט/פלט משיחה נבחרת.
Init(Weave::System::Layer & aSystemLayer, void *aContext)
זהו האתחול המפורש של InetLayer.
InitQueueLimiter(void)
MatchLocalIPv6Subnet(const IPAddress & addr)
bool
בודקים אם יש התאמת קידומת בין כתובת IPv6 שצוינה לבין אחת מכתובות IPv6 שמוגדרות באופן מקומי.
NewRawEndPoint(IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint)
יצירת אובייקט RawEndPoint חדש לפרוטוקול ולגרסת IP ספציפיים.
NewTCPEndPoint(TCPEndPoint **retEndPoint)
יוצר אובייקט TCPEndPoint חדש.
NewTunEndPoint(TunEndPoint **retEndPoint)
יוצר אובייקט TunEndPoint חדש.
NewUDPEndPoint(UDPEndPoint **retEndPoint)
יוצר אובייקט UDPEndPoint חדש.
PrepareSelect(int & nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval & sleepTime)
void
הכנת קבוצות של מתארי קבצים לשימוש ב-select().
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
רזולוציה של כתובת IP לשם מארח ספציפי.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
רזולוציה של כתובת IP לשם מארח ספציפי.
ResolveHostAddress(const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
רזולוציה של כתובת IP לשם מארח ספציפי.
SetPlatformData(void *aPlatformData)
void
הפעולה הזאת מגדירה את נתוני הפלטפורמה הספציפיים ללקוח למכונה לצורך אחזור מאוחר יותר על ידי פלטפורמת הלקוח.
Shutdown(void)
זהו הכלי לביטול אתחול מפורש של InetLayer ויש לקרוא לו לפני מחיקת מופע InetLayer שנוצר באמצעות מופע.
SystemLayer(void) const

פונקציות סטטיות ציבוריות

HandleInetLayerEvent(Weave::System::Object & aTarget, Weave::System::EventType aEventType, uintptr_t aArgument)
Weave::System::Error
IsDroppableEvent(Weave::System::EventType aType)
bool
UpdateSnapshot(nl::Weave::System::Stats::Snapshot & aSnapshot)
void

סוגים ציבוריים

@5

 @5

המצב הנוכחי של האובייקט InetLayer.

תכונות
kState_Initialized

מצב אתחול.

kState_NotInitialized

מצב לא מאותחל.

kState_ShutdownInProgress

המדינה שבה הופעלה הכיבוי.

DNSResolveCompleteFunct

DNSResolver::OnResolveCompleteFunct DNSResolveCompleteFunct

מאפיינים ציבוריים

ארץ

enum nl::Inet::InetLayer::@5 State

המצב הנוכחי של האובייקט InetLayer.

[READ-ONLY] מצב נוכחי.

מאפיינים סטטיים ציבוריים

sInetEventHandlerDelegate

Weave::System::LwIPEventHandlerDelegate sInetEventHandlerDelegate

תפקידים ציבוריים

CanEnqueueDroppableEvent

bool CanEnqueueDroppableEvent(
  void
)

CancelResolveHostAddress

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

מבטלים כל שאילתת DNS שטרם טופלה (לצורך השלמת קריאה חוזרת ומצב אפליקציה תואמת) שעשויה להיות עדיין פעילה.

פרטים
פרמטרים
[in] onComplete
הפניה לפונקציית קריאה חוזרת כשבקשת DNS השלמה.
[in] appState
מצביע לאובייקט של מצב אפליקציה שיועבר אל פונקציית הקריאה החוזרת כארגומנט.

DroppableEventDequeued

void DroppableEventDequeued(
  void
)

GetInterfaceFromAddr

INET_ERROR GetInterfaceFromAddr(
  const IPAddress & addr,
  InterfaceId & intfId
)

מקבלים את מזהה הממשק של כתובת ה-IP שצוינה.

אם לא ניתן לגזור את מזהה הממשק, הוא מוגדר לערך INET_NULL_INTERFACEID.

פרטים
פרמטרים
[in] addr
הפניה לאובייקט IPAddress.
[out] intfId
הפניה לאובייקט InterfaceId.
החזרות
INET_NO_ERROR ללא תנאי.

GetLinkLocalAddr

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

קבלת כתובת ה-IPv6 המקומית של הקישור לקישור או לממשק שצוינו.

פרטים
פרמטרים
[in] link
הממשק שאליו מחפשים את הקישור לכתובת IPv6 המקומית.
[out] llAddr
כתובת ה-IPv6 המקומית של הקישור לקישור.
ערכים מוחזרים
INET_ERROR_NOT_IMPLEMENTED
אם פרוטוקול IPv6 לא נתמך.
INET_ERROR_BAD_ARGS
אם הכתובת המקומית של הקישור היא NULL.
INET_ERROR_ADDRESS_NOT_FOUND
אם לקישור לא הוגדרה כתובת.
INET_NO_ERROR
בהצלחה.

GetPlatformData

void * GetPlatformData(
  void
)

הפעולה הזו תחזיר את כל נתוני הפלטפורמה הספציפיים ללקוח שהוקצו למכונה, אם הם הוגדרו קודם לכן.

פרטים
החזרות
נתוני פלטפורמה ספציפיים ללקוח, אם הוגדרו בעבר. אחרת, הערך יהיה NULL.

HandleSelectResult

void HandleSelectResult(
  int selectRes,
  fd_set *readfds,
  fd_set *writefds,
  fd_set *exceptfds
)

טיפול בקלט של קלט/פלט משיחה נבחרת.

השיטה הזו רושמת את אירוע I/O שבהמתנה בכל נקודת קצה פעילה, ואז מפעילה את פונקציות הטיפול ב-I/O המתאימות לנקודות הקצה האלה.

פרטים
פרמטרים
[in] selectRes
הערך המוחזר של השיחה שנבחרה.
[in] readfds
מצביע על קבוצת התיאורים של הקבצים שנקראו.
[in] writefds
מצביע אל קבוצת מתארי הקובץ לכתיבה.
[in] exceptfds
מצביע על קבוצת מתארי הקבצים עם שגיאות.

InetLayer

 InetLayer(
  void
)

זהו בנאי ברירת המחדל InetLayer.

הוא מבצע אתחול בסיסי של חבר נתונים. עם זאת, מכיוון ש-InetLayer פועל לפי דפוס עיצוב מפורש של מאתחל, יש להפעיל בהצלחה את השיטה InetLayer::Init לפני השימוש באובייקט.

הפעלה

INET_ERROR Init(
  Weave::System::Layer & aSystemLayer,
  void *aContext
)

זהו האתחול המפורש של InetLayer.

יש להפעיל את הרכיב הזה ולהשלים אותו בהצלחה לפני השימוש ב-InetLayer.

מבצע הקריאה החוזרת יכול לספק ארגומנט הקשר אופציונלי שיועבר חזרה באמצעות פונקציות hook שספציפיות לפלטפורמה. בהתאמות שמבוססות על LwIP, בדרך כלל זה יפנה אותך לתור של האירועים שמשויך למכונה InetLayer.

פלטפורמות יכולות לבחור להצהיר על INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS בכותרת התצורה הספציפית לפלטפורמה ולהפעיל את Platform::InetLayer::WillInit ו-Platform::InetLayer::DidInit התקפים כדי להשפיע על התאמות אישיות ספציפיות לפלטפורמה או על תוספי נתונים ל-InetLayer.

פרטים
פרמטרים
[in] aSystemLayer
מופע נדרש של שכבת מערכת Weave כבר אותחל בהצלחה.
[in] aContext
ארגומנט אופציונלי בהקשר שיועבר חזרה למתקשר באמצעות פונקציות hook שספציפיות לפלטפורמה.
ערכים מוחזרים
INET_ERROR_INCORRECT_STATE
אם מצב ה-InetLayer שגוי.
INET_ERROR_NO_MEMORY
אם נגמר המשאב של InetLayer בבקשה הזו לטיימר חדש.
other
שגיאות ספציפיות לפלטפורמה המציינות את הסיבה לכשל בהפעלה.
INET_NO_ERROR
בהצלחה.

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

MatchLocalIPv6Subnet

bool MatchLocalIPv6Subnet(
  const IPAddress & addr
)

בודקים אם יש התאמת קידומת בין כתובת IPv6 שצוינה לבין אחת מכתובות IPv6 שמוגדרות באופן מקומי.

פרטים
פרמטרים
[in] addr
כתובת ה-IPv6 לבדיקת התאמת הקידומת.
החזרות
'TRUE' אם נמצאה התאמה מוצלחת, אחרת, 'FALSE'.

NewRawEndPoint

INET_ERROR NewRawEndPoint(
  IPVersion ipVer,
  IPProtocol ipProto,
  RawEndPoint **retEndPoint
)

יצירת אובייקט RawEndPoint חדש לפרוטוקול ולגרסת IP ספציפיים.

פרטים
פרמטרים
[in] ipVer
IPv4 או IPv6.
[in] ipProto
פרוטוקול בתוך משפחת ה-IP (למשל, ICMPv4 או ICMPv6).
[in,out] retEndPoint
מצביע אל מצביע של האובייקט RawEndPoint שהוא פרמטר החזרה לאחר השלמת יצירת האובייקט. *retEndPoint הוא NULL אם היצירה נכשלת.
ערכים מוחזרים
INET_ERROR_INCORRECT_STATE
אם האובייקט InetLayer לא מאותחל.
INET_ERROR_NO_ENDPOINTS
אם מאגר InetLayerRawEndPoint מלא ולא ניתן ליצור נקודות קצה חדשות.
INET_NO_ERROR
בהצלחה.

NewTCPEndPoint

INET_ERROR NewTCPEndPoint(
  TCPEndPoint **retEndPoint
)

יוצר אובייקט TCPEndPoint חדש.

פרטים
פרמטרים
[in,out] retEndPoint
מצביע אל מצביע של האובייקט TCPEndPoint שהוא פרמטר החזרה לאחר השלמת יצירת האובייקט. *retEndPoint הוא NULL אם היצירה נכשלת.
ערכים מוחזרים
INET_ERROR_INCORRECT_STATE
אם האובייקט InetLayer לא מאותחל.
INET_ERROR_NO_ENDPOINTS
אם המאגר InetLayerTCPEndPoint מלא ולא ניתן ליצור נקודות קצה חדשות.
INET_NO_ERROR
בהצלחה.

NewTunEndPoint

INET_ERROR NewTunEndPoint(
  TunEndPoint **retEndPoint
)

יוצר אובייקט TunEndPoint חדש.

פרטים
פרמטרים
[in,out] retEndPoint
מצביע אל מצביע של האובייקט TunEndPoint שהוא פרמטר החזרה לאחר השלמת יצירת האובייקט. *retEndPoint הוא NULL אם היצירה נכשלת.
ערכים מוחזרים
INET_ERROR_INCORRECT_STATE
אם האובייקט InetLayer לא מאותחל.
INET_ERROR_NO_ENDPOINTS
אם המאגר InetLayerTunEndPoint מלא ואי אפשר ליצור חדשים.
INET_NO_ERROR
בהצלחה.

NewUDPEndPoint

INET_ERROR NewUDPEndPoint(
  UDPEndPoint **retEndPoint
)

יוצר אובייקט UDPEndPoint חדש.

פרטים
פרמטרים
[in,out] retEndPoint
מצביע אל מצביע של האובייקט UDPEndPoint שהוא פרמטר החזרה לאחר השלמת יצירת האובייקט. *retEndPoint הוא NULL אם היצירה נכשלת.
ערכים מוחזרים
INET_ERROR_INCORRECT_STATE
אם האובייקט InetLayer לא מאותחל.
INET_ERROR_NO_ENDPOINTS
אם מאגר InetLayerUDPEndPoint מלא ולא ניתן ליצור נקודות קצה חדשות.
INET_NO_ERROR
בהצלחה.

PrepareSelect

void PrepareSelect(
  int & nfds,
  fd_set *readfds,
  fd_set *writefds,
  fd_set *exceptfds,
  struct timeval & sleepTime
)

הכנת קבוצות של מתארי קבצים לשימוש ב-select().

פרטים
פרמטרים
[out] nfds
הטווח של מתארי הקובץ בקבוצה של מתארי הקובץ.
[in] readfds
הפניה לקבוצה של מתארי הקובץ הקריאים.
[in] writefds
מצביע אל קבוצת מתארי הקובץ שניתנים לכתיבה.
[in] exceptfds
מצביע על קבוצת מתארי הקבצים עם שגיאות.
[in] sleepTimeTV
מצביע למבנה שמציין כמה זמן הבחירה במצב שינה

ResolveHostAddress

INET_ERROR ResolveHostAddress(
  const char *hostName,
  uint16_t hostNameLen,
  uint8_t options,
  uint8_t maxAddrs,
  IPAddress *addrArray,
  DNSResolveCompleteFunct onComplete,
  void *appState
)

רזולוציה של כתובת IP לשם מארח ספציפי.

פרטים
פרמטרים
[in] hostName
מצביע למחרוזת C שמסתיימת ב-NULL, שמייצג את שם המארח שיש לשלוח אליו שאילתה.
[in] hostNameLen
אורך המחרוזת של שם המארח.
[in] options
ערך מספר שלם השולט באופן שבו מתבצע פענוח השם של המארח.
                    Value should be one of the address family values from the
                    #DNSOptions enumeration:

                    #kDNSOption_AddrFamily_Any
                    #kDNSOption_AddrFamily_IPv4Only
                    #kDNSOption_AddrFamily_IPv6Only
                    #kDNSOption_AddrFamily_IPv4Preferred
                    #kDNSOption_AddrFamily_IPv6Preferred
[in] maxAddrs
המספר המקסימלי של כתובות לשמירה בטבלת ה-DNS.
[in] addrArray
מצביע לטבלת ה-DNS.
[in] onComplete
הפניה לפונקציית קריאה חוזרת כשבקשת DNS השלמה.
[in] appState
מצביע על מצב האפליקציה שיש להעביר אליה ב-complete כשבקשת DNS השלמה.
ערכים מוחזרים
INET_NO_ERROR
אם בקשת DNS תטופל בהצלחה.
INET_ERROR_NO_MEMORY
אם מאגר המקודדים של שכבת Inet מלא.
INET_ERROR_HOST_NAME_TOO_LONG
אם שם המארח המבוקש ארוך מדי.
INET_ERROR_HOST_NOT_FOUND
אם לא ניתן לפענח את שם המארח של הבקשה לכתובת.
INET_ERROR_DNS_TRY_AGAIN
אם שרת שמות החזיר אינדיקציה לכשל זמני, יש לנסות שוב מאוחר יותר.
INET_ERROR_DNS_NO_RECOVERY
אם שרת שמות החזיר שגיאה שלא ניתן לשחזר.
INET_ERROR_NOT_IMPLEMENTED
רזולוציית DNS לא מופעלת בפלטפורמה הבסיסית.
other
שגיאה של רשת או מערכת הפעלה מסוג POSIX שהוחזרה על ידי ההטמעה של מקודד ה-DNS הבסיסי.

ResolveHostAddress

INET_ERROR ResolveHostAddress(
  const char *hostName,
  uint16_t hostNameLen,
  uint8_t maxAddrs,
  IPAddress *addrArray,
  DNSResolveCompleteFunct onComplete,
  void *appState
)

רזולוציה של כתובת IP לשם מארח ספציפי.

פרטים
פרמטרים
[in] hostName
מצביע למחרוזת C שמסתיימת ב-NULL, שמייצג את שם המארח שיש לשלוח אליו שאילתה.
[in] hostNameLen
אורך המחרוזת של שם המארח.
[in] maxAddrs
המספר המקסימלי של כתובות לשמירה בטבלת ה-DNS.
[in] addrArray
מצביע לטבלת ה-DNS.
[in] onComplete
הפניה לפונקציית קריאה חוזרת כשבקשת DNS השלמה.
[in] appState
מצביע על מצב האפליקציה שיש להעביר אליה ב-complete כשבקשת DNS השלמה.
ערכים מוחזרים
INET_NO_ERROR
אם בקשת DNS תטופל בהצלחה.
INET_ERROR_NO_MEMORY
אם מאגר המקודדים של שכבת Inet מלא.
INET_ERROR_HOST_NAME_TOO_LONG
אם שם המארח המבוקש ארוך מדי.
INET_ERROR_HOST_NOT_FOUND
אם לא ניתן לפענח את שם המארח של הבקשה לכתובת.
INET_ERROR_DNS_TRY_AGAIN
אם שרת שמות החזיר אינדיקציה לכשל זמני, יש לנסות שוב מאוחר יותר.
INET_ERROR_DNS_NO_RECOVERY
אם שרת שמות החזיר שגיאה שלא ניתן לשחזר.
INET_ERROR_NOT_IMPLEMENTED
רזולוציית DNS לא מופעלת בפלטפורמה הבסיסית.
other
שגיאה של רשת או מערכת הפעלה מסוג POSIX שהוחזרה על ידי ההטמעה של מקודד ה-DNS הבסיסי.

ResolveHostAddress

INET_ERROR ResolveHostAddress(
  const char *hostName,
  uint8_t maxAddrs,
  IPAddress *addrArray,
  DNSResolveCompleteFunct onComplete,
  void *appState
)

רזולוציה של כתובת IP לשם מארח ספציפי.

פרטים
פרמטרים
[in] hostName
מצביע למחרוזת C שמסתיימת ב-NULL, שמייצג את שם המארח שיש לשלוח אליו שאילתה.
[in] maxAddrs
המספר המקסימלי של כתובות לשמירה בטבלת ה-DNS.
[in] addrArray
מצביע לטבלת ה-DNS.
[in] onComplete
הפניה לפונקציית קריאה חוזרת כשבקשת DNS השלמה.
[in] appState
מצביע על מצב האפליקציה שיש להעביר אליה ב-complete כשבקשת DNS השלמה.
ערכים מוחזרים
INET_NO_ERROR
אם בקשת DNS תטופל בהצלחה.
INET_ERROR_NO_MEMORY
אם מאגר המקודדים של שכבת Inet מלא.
INET_ERROR_HOST_NAME_TOO_LONG
אם שם המארח המבוקש ארוך מדי.
INET_ERROR_HOST_NOT_FOUND
אם לא ניתן לפענח את שם המארח של הבקשה לכתובת.
INET_ERROR_DNS_TRY_AGAIN
אם שרת שמות החזיר אינדיקציה לכשל זמני, יש לנסות שוב מאוחר יותר.
INET_ERROR_DNS_NO_RECOVERY
אם שרת שמות החזיר שגיאה שלא ניתן לשחזר.
INET_ERROR_NOT_IMPLEMENTED
רזולוציית DNS לא מופעלת בפלטפורמה הבסיסית.
other
שגיאה של רשת או מערכת הפעלה מסוג POSIX שהוחזרה על ידי ההטמעה של מקודד ה-DNS הבסיסי.

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

הפעולה הזאת מגדירה את נתוני הפלטפורמה הספציפיים ללקוח למכונה לצורך אחזור מאוחר יותר על ידי פלטפורמת הלקוח.

פרטים
פרמטרים
[in] aPlatformData
נתוני הפלטפורמה הספציפיים ללקוח להגדרה.

כיבוי

INET_ERROR Shutdown(
  void
)

זהו הכלי לביטול אתחול מפורש של InetLayer ויש לקרוא לו לפני מחיקת מופע InetLayer שנוצר באמצעות מופע.

פלטפורמות יכולות לבחור להצהיר על INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS בכותרת התצורה הספציפית לפלטפורמה ולהפעיל את Platform::InetLayer::WillShutdown ו-Platform::InetLayer::Diddown הוק כדי למחוק התאמות אישיות או תוספי נתונים ספציפיים לפלטפורמה ל-InetLayer.

פרטים
החזרות
INET_NO_ERROR בהצלחה. אחרת, שגיאה ספציפית שמציינת את הסיבה לכישלון של ההשבתה.

SystemLayer

Weave::System::Layer * SystemLayer(
  void
) const 

פונקציות סטטיות ציבוריות

HandleInetLayerEvent

Weave::System::Error HandleInetLayerEvent(
  Weave::System::Object & aTarget,
  Weave::System::EventType aEventType,
  uintptr_t aArgument
)

IsDroppableEvent

bool IsDroppableEvent(
  Weave::System::EventType aType
)

UpdateSnapshot

void UpdateSnapshot(
  nl::Weave::System::Stats::Snapshot & aSnapshot
)