Module Name: src Committed By: christos Date: Wed Aug 9 17:20:44 UTC 2017
Modified Files: src/sys/netinet6: scope6_var.h Log Message: PR/52472: Edgar Fuss: Document handling of scoped IPv6 addresses by embedding ASCII art from: IPv6 Core Protocols Implementation By Qing Li, Tatuya Jinmei, Keiichi Shima Page 56, Figure 2.12 To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/netinet6/scope6_var.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/netinet6/scope6_var.h diff -u src/sys/netinet6/scope6_var.h:1.3 src/sys/netinet6/scope6_var.h:1.4 --- src/sys/netinet6/scope6_var.h:1.3 Tue Dec 9 20:10:37 2014 +++ src/sys/netinet6/scope6_var.h Wed Aug 9 13:20:44 2017 @@ -34,6 +34,65 @@ #define _NETINET6_SCOPE6_VAR_H_ #ifdef _KERNEL + +/* + * IPv6 Core Protocols Implementation + * By Qing Li, Tatuya Jinmei, Keiichi Shima + * + * Some information from Chapter 2.9 (Handling Scope Zones) Figure 2.12, p.56 + * + * User Space + * + * Normal App Statistics/Mgmt App Routing App + * /---------------\ /-------------------\ /------------------\ + * | sin6_scope_id | | embedded form | | embedded form | + * | only | | (+ sin6_scope_id) | | or sin6_scope_id | + * \---------------/ \-------------------/ \------------------/ + * ^ ^ ^ | + * | | | | + * no conversion parse parse embed + * | embedded embbeded ID + * | ID ID (if necessary) + * | | | | + * v | | v + * /---------------\ /-------------------\ /------------------\ + * ------ | AF_INET6 | | kvm | | Routing | + * Kernel | socket | | interface | | socket | + * \---------------/ \-------------------/ \------------------/ + * ^ | ^ ^ + * | | | | + * clear embed no conversion | + * embedded ID | no conversion + * ID | ---------------------------------- | + * | V | | v + * /---------------\ /--------------------\ + * | |---- clear sin_scope_id --->| embedded form only | + * | |<--- set sin_scope_id ----| | + * | | \--------------------/ + * | embedded form | ^ + * | + | | + * | sin_scope_id | no conversion + * | | | + * | | V + * | | /--------------------\ + * | |---- clear sin_scope_id --->| embedded form only | + * | |<--- set sin_scope_id ----| | + * \---------------/ \--------------------/ + * -------- ^ | + * Physical | clear + * Network embed ID, embedded + * set ID + * sin_scope_id | + * | v + * /---------------\ + * | 128-bit IPv6 | + * | address | + * | (ID not | + * | included) | + * \---------------/ + */ + + struct scope6_id { /* * 16 is correspondent to 4bit multicast scope field.