Hinzufügen der Unterstützung für IPv6 in IPv4-client/server-apps - sin6_flowinfo und sin6_scope_id Felder?
Arbeite ich an der Implementierung von IPv6-Unterstützung für mehrere Anwendungen, aber ich fragte mich, was sind das für 2 Felder. Es gibt so ein paar Fragen zu diesem hier, also bin ich nicht sicher, ob ich es richtig.
- Über die Bereichs-ID (
sin6_scope_id
) - gut, Q1 , Q2 , Q3 und Q4 gab mir die Idee, über die Bereichs-ID und ich denke ich bekomme es. So, ich werde hinzufügen müssen, um eine weitere config-parameter, um die scope-id konfigurierbar. (Ich habe beschlossen, das hier, im Fall, dass jemand interessiert ist, in diesem). Kurz - scope-ID ist erforderlich, um eindeutig zu bestimmen, welche ist das Gerät, das verarbeitet werden soll der Verkehr - denn es kann mehrere interfaces mit gleicher IP, aber unterschiedlichen (Schnittstelle?) ID. So weit, So gut. - Aber was ist mit dem "flow" (
sin6_flowinfo
)- Was ist es? Ich konnte Sie nicht finden, etwas Interessantes über das. Ich lese die RFC aber es half nicht mich überhaupt.
- Gibt es einige mögliche Werte für
sin6_flowinfo
(wie - mehrere Werte, wie Fahnen, die etwas bedeuten), oder es ist wie dersin6_scope_id
- kann ein beliebiger Wert sein, je nach Gerät, ich bin versucht zu verbinden? - Sollte ich mir sorgen machen, oder ich meine, lass es einfach
0
(wie in Beej ' s Guide to Network Programming . Und ja, das habe ich versucht, es funktioniert, aber ich bin mir nicht sicher, ob es funktioniert, nur in diesem Fall (wenn es hängt von einigen Netzwerk-Konfiguration), oder es wird immer funktionieren, wenn0
? - Oder, vielleicht, sollte ich es konfigurierbar ist, ich meine - fügen Sie eine weitere config-option und lassen Sie den Benutzer definiert es Wert?
google
-ing "sin6_flowinfo" gibt mir struct-Definitionen, und die man pages nichts brauchbares zu diesem Bereich. Eine interessante Quelle? (verständlich, man..nicht RFC 😀 )
BEARBEITEN: Naja, nach @glglgl 's zu beantworten und nach dem Hinweis, dass sin6_flowinfo
möglicherweise veraltet sind, fand ich einige interessante Quellen: RFC: IPv6 Flow Label Specification , IETF draft: Flow-Label als Transport-Layer-Nonce , Praktische Anleitung für solaris und wikipedia .
Das Feld ist nicht veraltet (oder ich konnte Sie nicht finden, eine solche Quelle, die das bestätigt), aber es sieht aus wie 0
als Wert ist gut genug.
- Ich entfernte den Kommentar über downvotes - es ist eine ganz gute Frage, nicht darum kümmern.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der beste Weg zu gehen ist zu verwenden
getaddrinfo()
.Pseudo-code:
Diese nehmen die sorgen über
sin6_scope_id
aus Sie; die ist normalerweise0
, außer, wenn man link-lokale Adressen wiefe80::1234:56ff:fe78:9abc%eth2
. Dieseeth2
umgewandelt wird, um die korrekte scope-ID an.sin6_flowinfo
ist veraltet (AFAIK) und damit auf 0 gesetzt, die in Ihrer resultierendenstruct addrinfo
'sai_addr
.sin6_flowinfo
. Ich lese den link übersin6_flowinfo
später, aber wenn es veraltet und ich kann nur lassen Sie es0
, wäre es perfekt. Noch einmal vielen Dank 🙂0
Wert. Ich fand einige interessante links, die ich poste in meiner Frage, zu akzeptieren verkaufen, statt die Veröffentlichung meiner eigenen. Vielen Dank für die Hilfe.