nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

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

סיכום

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

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

בנייה

InetLayer(void)
זהו constructor ברירת המחדל 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 שטרם טופלה (לקריאה חוזרת (callback) ומצב אפליקציה תואמים) שעשויות להיות פעילות.
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)
זהו ה-deinitialiייזר הבוטה 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.

[לקריאה בלבד] המצב הנוכחי.

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

sInetEventHandlerDelegate

Weave::System::LwIPEventHandlerDelegate sInetEventHandlerDelegate

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

CanEnqueueDroppableEvent

bool CanEnqueueDroppableEvent(
  void
)

CancelResolveHostAddress

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

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

פרטים
פרמטרים
[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
)

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

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

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

InetLayer

 InetLayer(
  void
)

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

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

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 hooks כדי להשפיע על התאמות אישיות ספציפיות לפלטפורמה או על תוספי נתונים בשביל 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
מצביע למצב האפליקציה שיש להעביר אל onComplete לאחר שבקשת DNS מסתיימת.
מוחזר ערכים
INET_NO_ERROR
אם בקשת DNS מטופלת בהצלחה.
INET_ERROR_NO_MEMORY
אם מאגר המקודד של השכבה הפנימית מלא.
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
מצביע למצב האפליקציה שיש להעביר אל onComplete לאחר שבקשת DNS מסתיימת.
מוחזר ערכים
INET_NO_ERROR
אם בקשת DNS מטופלת בהצלחה.
INET_ERROR_NO_MEMORY
אם מאגר המקודד של השכבה הפנימית מלא.
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
מצביע למצב האפליקציה שיש להעביר אל onComplete לאחר שבקשת DNS מסתיימת.
מוחזר ערכים
INET_NO_ERROR
אם בקשת DNS מטופלת בהצלחה.
INET_ERROR_NO_MEMORY
אם מאגר המקודד של השכבה הפנימית מלא.
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
)

זהו ה-deinitialiייזר הבוטה InetLayer, ויש לקרוא לו לפני השמטת מכונת InetLayer שנוצרת.

הפלטפורמות יכולות לבחור להצהיר על INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS בכותרת התצורה הספציפית לפלטפורמה שלהן ולהפעיל את Platform::InetLayer::WillShutdown ו-Platform::InetLayer::Diddown hooks כדי לבצע ניקוי של התאמות אישיות ספציפיות לפלטפורמה או תוספי נתונים ל-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
)