This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/nuttx-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 2c044254 Publishing web: 36ddd7c60a8230335eda886c909bc938739114a2 
docs: fbd0b3d1d783cc8c1834db7a05c884466754e29b
2c044254 is described below

commit 2c0442543543c8ae3c4ef84c2f43c97dc287f48a
Author: Alin Jerpelea <alin.jerpe...@sony.com>
AuthorDate: Wed Nov 8 00:13:21 2023 +0000

    Publishing web: 36ddd7c60a8230335eda886c909bc938739114a2 docs: 
fbd0b3d1d783cc8c1834db7a05c884466754e29b
---
 content/docs/10.0.0/index.html                     |   2 +-
 content/docs/10.0.0/searchindex.js                 |   2 +-
 content/docs/10.0.1/index.html                     |   2 +-
 content/docs/10.0.1/searchindex.js                 |   2 +-
 content/docs/10.1.0/index.html                     |   2 +-
 content/docs/10.1.0/searchindex.js                 |   2 +-
 content/docs/10.2.0/index.html                     |   2 +-
 content/docs/10.2.0/searchindex.js                 |   2 +-
 content/docs/10.3.0/index.html                     |   2 +-
 content/docs/10.3.0/searchindex.js                 |   2 +-
 content/docs/11.0.0/index.html                     |   2 +-
 content/docs/11.0.0/searchindex.js                 |   2 +-
 content/docs/12.0.0/index.html                     |   2 +-
 content/docs/12.0.0/searchindex.js                 |   2 +-
 content/docs/12.1.0/index.html                     |   2 +-
 content/docs/12.1.0/searchindex.js                 |   2 +-
 content/docs/12.2.0/index.html                     |   2 +-
 content/docs/12.2.0/searchindex.js                 |   2 +-
 content/docs/12.2.1/index.html                     |   2 +-
 content/docs/12.2.1/searchindex.js                 |   2 +-
 content/docs/12.3.0/index.html                     |   2 +-
 content/docs/12.3.0/searchindex.js                 |   2 +-
 .../latest/_sources/reference/os/netdev.rst.txt    | 187 ++++++++++
 content/docs/latest/genindex.html                  |  40 +-
 content/docs/latest/index.html                     |   2 +-
 content/docs/latest/objects.inv                    | Bin 107561 -> 107882 bytes
 content/docs/latest/reference/os/nat.html          |   4 +-
 content/docs/latest/reference/os/netdev.html       | 412 +++++++++++++++++++++
 content/docs/latest/searchindex.js                 |   2 +-
 content/feed.xml                                   |   4 +-
 30 files changed, 663 insertions(+), 32 deletions(-)

diff --git a/content/docs/10.0.0/index.html b/content/docs/10.0.0/index.html
index 8d275126..32fd0c9e 100644
--- a/content/docs/10.0.0/index.html
+++ b/content/docs/10.0.0/index.html
@@ -131,7 +131,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 32-bit microcontroller 
environments, the primary governing standards in NuttX are Posix and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 07 November 23 at 00:09</p>
+<p>Last Updated: 08 November 23 at 00:09</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/10.0.0/searchindex.js 
b/content/docs/10.0.0/searchindex.js
index 8d4cfc0d..a6408cef 100644
--- a/content/docs/10.0.0/searchindex.js
+++ b/content/docs/10.0.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", "boards/index", 
"components/binfmt", "components/drivers/block/index", 
"components/drivers/character/analog", "components/drivers/character/can", 
"components/drivers/character/index", "components/drivers/character/keypad", 
"components/drivers/character/pwm", "components/drivers/character/quadrature", 
"components/drivers/character/rtc", "components/drivers/character/serial", 
"components/drivers/character/timer", "components/drivers/chara [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", "boards/index", 
"components/binfmt", "components/drivers/block/index", 
"components/drivers/character/analog", "components/drivers/character/can", 
"components/drivers/character/index", "components/drivers/character/keypad", 
"components/drivers/character/pwm", "components/drivers/character/quadrature", 
"components/drivers/character/rtc", "components/drivers/character/serial", 
"components/drivers/character/timer", "components/drivers/chara [...]
\ No newline at end of file
diff --git a/content/docs/10.0.1/index.html b/content/docs/10.0.1/index.html
index b959260c..155f6586 100644
--- a/content/docs/10.0.1/index.html
+++ b/content/docs/10.0.1/index.html
@@ -153,7 +153,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 32-bit microcontroller 
environments, the primary governing standards in NuttX are Posix and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 07 November 23 at 00:10</p>
+<p>Last Updated: 08 November 23 at 00:10</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/10.0.1/searchindex.js 
b/content/docs/10.0.1/searchindex.js
index 5db0c29c..ccc81325 100644
--- a/content/docs/10.0.1/searchindex.js
+++ b/content/docs/10.0.1/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", "boards/index", 
"components/binfmt", "components/drivers/block/index", 
"components/drivers/character/analog", "components/drivers/character/can", 
"components/drivers/character/index", "components/drivers/character/keypad", 
"components/drivers/character/pwm", "components/drivers/character/quadrature", 
"components/drivers/character/rtc", "components/drivers/character/serial", 
"components/drivers/character/timer", "components/drivers/chara [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", "boards/index", 
"components/binfmt", "components/drivers/block/index", 
"components/drivers/character/analog", "components/drivers/character/can", 
"components/drivers/character/index", "components/drivers/character/keypad", 
"components/drivers/character/pwm", "components/drivers/character/quadrature", 
"components/drivers/character/rtc", "components/drivers/character/serial", 
"components/drivers/character/timer", "components/drivers/chara [...]
\ No newline at end of file
diff --git a/content/docs/10.1.0/index.html b/content/docs/10.1.0/index.html
index 1704f314..f6aa504c 100644
--- a/content/docs/10.1.0/index.html
+++ b/content/docs/10.1.0/index.html
@@ -152,7 +152,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 07 November 23 at 00:10</p>
+<p>Last Updated: 08 November 23 at 00:10</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/10.1.0/searchindex.js 
b/content/docs/10.1.0/searchindex.js
index 3ca92a5b..26760347 100644
--- a/content/docs/10.1.0/searchindex.js
+++ b/content/docs/10.1.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt", 
"components/drivers/block/index", "components/drivers/character/analog", 
"components/drivers/character/can", "components/drivers/character/foc", 
"components/drivers/character/index", "components [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt", 
"components/drivers/block/index", "components/drivers/character/analog", 
"components/drivers/character/can", "components/drivers/character/foc", 
"components/drivers/character/index", "components [...]
\ No newline at end of file
diff --git a/content/docs/10.2.0/index.html b/content/docs/10.2.0/index.html
index 59c40281..11aa03fa 100644
--- a/content/docs/10.2.0/index.html
+++ b/content/docs/10.2.0/index.html
@@ -153,7 +153,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 07 November 23 at 00:10</p>
+<p>Last Updated: 08 November 23 at 00:10</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/10.2.0/searchindex.js 
b/content/docs/10.2.0/searchindex.js
index f08d22cc..eddd29b8 100644
--- a/content/docs/10.2.0/searchindex.js
+++ b/content/docs/10.2.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt", 
"components/drivers/block/index", "components/drivers/character/analog", 
"components/drivers/character/can", "components/drivers/character/foc", 
"components/drivers/character/index", "components [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt", 
"components/drivers/block/index", "components/drivers/character/analog", 
"components/drivers/character/can", "components/drivers/character/foc", 
"components/drivers/character/index", "components [...]
\ No newline at end of file
diff --git a/content/docs/10.3.0/index.html b/content/docs/10.3.0/index.html
index 59c40281..11aa03fa 100644
--- a/content/docs/10.3.0/index.html
+++ b/content/docs/10.3.0/index.html
@@ -153,7 +153,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 07 November 23 at 00:10</p>
+<p>Last Updated: 08 November 23 at 00:10</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/10.3.0/searchindex.js 
b/content/docs/10.3.0/searchindex.js
index 815e0546..5b0c4de4 100644
--- a/content/docs/10.3.0/searchindex.js
+++ b/content/docs/10.3.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt", 
"components/drivers/block/index", "components/drivers/character/analog", 
"components/drivers/character/can", "components/drivers/character/foc", 
"components/drivers/character/index", "components [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt", 
"components/drivers/block/index", "components/drivers/character/analog", 
"components/drivers/character/can", "components/drivers/character/foc", 
"components/drivers/character/index", "components [...]
\ No newline at end of file
diff --git a/content/docs/11.0.0/index.html b/content/docs/11.0.0/index.html
index 59c40281..11aa03fa 100644
--- a/content/docs/11.0.0/index.html
+++ b/content/docs/11.0.0/index.html
@@ -153,7 +153,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 07 November 23 at 00:10</p>
+<p>Last Updated: 08 November 23 at 00:10</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/11.0.0/searchindex.js 
b/content/docs/11.0.0/searchindex.js
index d9741e7e..b2095bee 100644
--- a/content/docs/11.0.0/searchindex.js
+++ b/content/docs/11.0.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt", 
"components/drivers/block/index", "components/drivers/character/analog", 
"components/drivers/character/can", "components/drivers/character/foc", 
"components/drivers/character/index", "components [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt", 
"components/drivers/block/index", "components/drivers/character/analog", 
"components/drivers/character/can", "components/drivers/character/foc", 
"components/drivers/character/index", "components [...]
\ No newline at end of file
diff --git a/content/docs/12.0.0/index.html b/content/docs/12.0.0/index.html
index 64b8b466..bd355c93 100644
--- a/content/docs/12.0.0/index.html
+++ b/content/docs/12.0.0/index.html
@@ -153,7 +153,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 07 November 23 at 00:11</p>
+<p>Last Updated: 08 November 23 at 00:10</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.0.0/searchindex.js 
b/content/docs/12.0.0/searchindex.js
index e99d76a7..41bf581b 100644
--- a/content/docs/12.0.0/searchindex.js
+++ b/content/docs/12.0.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt", 
"components/drivers/block/index", "components/drivers/character/analog", 
"components/drivers/character/can", "components/drivers/character/foc", 
"components/drivers/character/index", "components [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt", 
"components/drivers/block/index", "components/drivers/character/analog", 
"components/drivers/character/can", "components/drivers/character/foc", 
"components/drivers/character/index", "components [...]
\ No newline at end of file
diff --git a/content/docs/12.1.0/index.html b/content/docs/12.1.0/index.html
index f71eb27c..cb3b81ad 100644
--- a/content/docs/12.1.0/index.html
+++ b/content/docs/12.1.0/index.html
@@ -153,7 +153,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 07 November 23 at 00:11</p>
+<p>Last Updated: 08 November 23 at 00:11</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.1.0/searchindex.js 
b/content/docs/12.1.0/searchindex.js
index 0e325034..8479b16c 100644
--- a/content/docs/12.1.0/searchindex.js
+++ b/content/docs/12.1.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt", 
"components/drivers/block/index", "components/drivers/character/analog", 
"components/drivers/character/can", "components/drivers/character/foc", 
"components/drivers/character/index", "components [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt", 
"components/drivers/block/index", "components/drivers/character/analog", 
"components/drivers/character/can", "components/drivers/character/foc", 
"components/drivers/character/index", "components [...]
\ No newline at end of file
diff --git a/content/docs/12.2.0/index.html b/content/docs/12.2.0/index.html
index 4afb71a7..080323da 100644
--- a/content/docs/12.2.0/index.html
+++ b/content/docs/12.2.0/index.html
@@ -156,7 +156,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 07 November 23 at 00:11</p>
+<p>Last Updated: 08 November 23 at 00:11</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.2.0/searchindex.js 
b/content/docs/12.2.0/searchindex.js
index e7f10a8f..d0af64f0 100644
--- a/content/docs/12.2.0/searchindex.js
+++ b/content/docs/12.2.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
diff --git a/content/docs/12.2.1/index.html b/content/docs/12.2.1/index.html
index 4afb71a7..080323da 100644
--- a/content/docs/12.2.1/index.html
+++ b/content/docs/12.2.1/index.html
@@ -156,7 +156,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 07 November 23 at 00:11</p>
+<p>Last Updated: 08 November 23 at 00:11</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.2.1/searchindex.js 
b/content/docs/12.2.1/searchindex.js
index 9019262e..4048cf9f 100644
--- a/content/docs/12.2.1/searchindex.js
+++ b/content/docs/12.2.1/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
diff --git a/content/docs/12.3.0/index.html b/content/docs/12.3.0/index.html
index a09f90c4..65cb5aaa 100644
--- a/content/docs/12.3.0/index.html
+++ b/content/docs/12.3.0/index.html
@@ -156,7 +156,7 @@ by following these <a class="reference internal" 
href="contributing/documentatio
 <section id="nuttx-documentation">
 <h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation" 
title="Permalink to this heading"></a></h1>
 <p>NuttX is a real-time operating system (RTOS) with an emphasis on standards 
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller 
environments, the primary governing standards in NuttX are POSIX and ANSI 
standards. Additional standard APIs from Unix and other common RTOS’s (such as 
VxWorks) are adopted for functionality not available under these standards, or 
for functionality that is not appropriate for deeply-embedded environments 
(such as fork()).</p>
-<p>Last Updated: 07 November 23 at 00:11</p>
+<p>Last Updated: 08 November 23 at 00:11</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/12.3.0/searchindex.js 
b/content/docs/12.3.0/searchindex.js
index a6853f2d..8c988532 100644
--- a/content/docs/12.3.0/searchindex.js
+++ b/content/docs/12.3.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", 
"applications/nsh/builtin", "applications/nsh/commands", 
"applications/nsh/config", "applications/nsh/customizing", 
"applications/nsh/index", "applications/nsh/installation", 
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config", 
"applications/nxdiag/index", "applications/wapi/commands", 
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt", 
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
diff --git a/content/docs/latest/_sources/reference/os/netdev.rst.txt 
b/content/docs/latest/_sources/reference/os/netdev.rst.txt
new file mode 100644
index 00000000..2bc0fe73
--- /dev/null
+++ b/content/docs/latest/_sources/reference/os/netdev.rst.txt
@@ -0,0 +1,187 @@
+===============
+Network Devices
+===============
+
+-  ``include/nuttx/net/netdev.h``. All structures and APIs
+   needed to work with network drivers are provided in this
+   header file. The structure ``struct net_driver_s`` defines the
+   interface and is passed to the network via
+   ``netdev_register()``.
+
+IP Addresses
+============
+
+The structure ``struct net_driver_s`` now supports one IPv4 address and
+multiple IPv6 addresses. Multiple IPv6 addresses is common in modern
+network devices. For example, a network device may have a link-local
+address and a global address. The link-local address is used for
+neighbor discovery protocol and the global address is used for
+communication with the Internet.
+
+Configuration Options
+---------------------
+
+``CONFIG_NETDEV_MULTIPLE_IPv6``
+  Enable support for multiple IPv6 addresses per network device.
+  Depends on ``CONFIG_NET_IPv6``.
+``CONFIG_NETDEV_MAX_IPv6_ADDR``
+  Maximum number of IPv6 addresses that can be assigned to a single
+  network device. Normally a link-local address and a global address
+  are needed.
+
+IPv4 Interfaces
+---------------
+
+Now we only support one IPv4 address per network device, and directly
+use the :c:member:`d_ipaddr`, :c:member:`d_draddr` and :c:member:`d_netmask`
+in :c:struct:`net_driver_s`.
+
+.. c:struct:: net_driver_s
+
+  .. code-block:: c
+
+    struct net_driver_s
+    {
+    #ifdef CONFIG_NET_IPv4
+      in_addr_t      d_ipaddr;      /* Host IPv4 address assigned to the 
network interface */
+      in_addr_t      d_draddr;      /* Default router IP address */
+      in_addr_t      d_netmask;     /* Network subnet mask */
+    #endif
+    };
+
+IPv6 Interfaces
+---------------
+
+Now we support multiple IPv6 addresses per network device, and use
+the :c:member:`d_ipv6` in :c:struct:`net_driver_s` to store the IPv6
+addresses. For historical reason, we keep the old name :c:member:`d_ipv6addr`
+and :c:member:`d_ipv6netmask` for backward compatibility. Please use
+:c:member:`d_ipv6` for new drivers.
+
+.. c:struct:: net_driver_s
+
+  .. code-block:: c
+
+    struct net_driver_s
+    {
+    #ifdef CONFIG_NET_IPv6
+      struct netdev_ifaddr6_s d_ipv6[CONFIG_NETDEV_MAX_IPv6_ADDR];
+    #endif
+    };
+
+Managing the IPv6 addresses by provided APIs would be more flexible:
+
+  - :c:func:`netdev_ipv6_add()`
+  - :c:func:`netdev_ipv6_del()`
+  - :c:func:`netdev_ipv6_srcaddr()`
+  - :c:func:`netdev_ipv6_lladdr()`
+  - :c:func:`netdev_ipv6_lookup()`
+  - :c:func:`netdev_ipv6_foreach()`
+
+.. c:function:: int netdev_ipv6_add(FAR struct net_driver_s *dev, const 
net_ipv6addr_t addr, \
+                                    unsigned int preflen);
+.. c:function:: int netdev_ipv6_del(FAR struct net_driver_s *dev, const 
net_ipv6addr_t addr, \
+                                    unsigned int preflen);
+
+  Add or delete an IPv6 address on the network device
+
+  :return: Zero is returned if the operation is successfully applied on
+    the device; A negated errno value is returned if failed.
+
+.. c:function:: FAR const uint16_t *netdev_ipv6_srcaddr(FAR struct 
net_driver_s *dev, \
+                                                        const net_ipv6addr_t 
dst);
+
+  Get the source IPv6 address (RFC6724).
+
+  :return: A pointer to the IPv6 address is returned on success.  It will 
never be
+    NULL, but can be an address containing g_ipv6_unspecaddr.
+
+.. c:function:: FAR const uint16_t *netdev_ipv6_lladdr(FAR struct net_driver_s 
*dev);
+
+  Get the link-local address of the network device.
+
+  :return: A pointer to the link-local address is returned on success.
+    NULL is returned if the address is not found on the device.
+
+.. c:function:: FAR struct netdev_ifaddr6_s *netdev_ipv6_lookup(FAR struct 
net_driver_s *dev, \
+                                                    const net_ipv6addr_t addr, 
bool maskcmp);
+
+  Look up an IPv6 address in the network device's IPv6 addresses
+
+  :return: A pointer to the matching IPv6 address entry is returned on success.
+    NULL is returned if the IPv6 address is not found in the device.
+
+.. c:function:: int netdev_ipv6_foreach(FAR struct net_driver_s *dev, \
+                      devif_ipv6_callback_t callback, FAR void *arg);
+
+  Enumerate each IPv6 address on a network device.  This function will
+  terminate when either (1) all addresses have been enumerated or (2) when
+  a callback returns any non-zero value.
+
+  :return: Zero is returned if the enumeration is successfully completed;
+    Non-zero value is returned if enumeration is terminated early by callback.
+
+Ioctls for IP Addresses
+-----------------------
+
+  - :c:macro:`SIOCGIFADDR`
+  - :c:macro:`SIOCSIFADDR`
+  - :c:macro:`SIOCDIFADDR`
+  - :c:macro:`SIOCGLIFADDR`
+  - :c:macro:`SIOCSLIFADDR`
+  - :c:macro:`SIOCGIFNETMASK`
+  - :c:macro:`SIOCSIFNETMASK`
+  - :c:macro:`SIOCGLIFNETMASK`
+  - :c:macro:`SIOCSLIFNETMASK`
+
+.. c:macro:: SIOCGIFADDR
+.. c:macro:: SIOCSIFADDR
+.. c:macro:: SIOCDIFADDR
+
+  We just follow the Linux convention[1]:
+
+    Get, set, or delete the address of the device using :c:member:`ifr_addr`,
+    or :c:member:`ifr6_addr` with :c:member:`ifr6_prefixlen`.
+    For compatibility, :c:macro:`SIOCGIFADDR` returns only :c:macro:`AF_INET`
+    addresses, :c:macro:`SIOCSIFADDR` accepts :c:macro:`AF_INET` and
+    :c:macro:`AF_INET6` addresses, and :c:macro:`SIOCDIFADDR` deletes
+    only :c:macro:`AF_INET6` addresses.  A :c:macro:`AF_INET` address
+    can be deleted by setting it to zero via :c:macro:`SIOCSIFADDR`.
+
+  Note: Unlike Linux, the maximum number of IPv6 addresses is limited on
+  NuttX.  If you add more IPv6 addresses when we have already reached the
+  limit, the new addresses will replace addresses with same scope.
+
+  [1]: https://man7.org/linux/man-pages/man7/netdevice.7.html
+
+.. c:macro:: SIOCGLIFADDR
+.. c:macro:: SIOCSLIFADDR
+
+  Get or set the IPv6 address of the device using :c:member:`lifr_addr`.
+
+  We follow the Linux convention[1] to allow interface name to be
+  <eth>:<num>[2], to keep working with multiple IPv6 addresses.
+
+  Note: Recommend to use :c:macro:`SIOCSIFADDR` and :c:macro:`SIOCDIFADDR`
+  to manage IPv6 addresses, by which you don't need to care about the
+  slot it stored.
+
+  [1]: https://man7.org/linux/man-pages/man7/netdevice.7.html
+  [2]: e.g. 'eth0:0' stands for the secondary address on eth0
+
+.. c:macro:: SIOCGIFNETMASK
+.. c:macro:: SIOCSIFNETMASK
+
+  Get or set the IPv4 network mask for a device using :c:member:`ifr_netmask`.
+
+.. c:macro:: SIOCGLIFNETMASK
+.. c:macro:: SIOCSLIFNETMASK
+
+  Get or set the IPv6 network mask for a device using :c:member:`lifr_netmask`.
+
+  We follow the Linux convention to allow interface name to be <eth>:<num>,
+  to keep working with multiple IPv6 addresses.
+
+  Note: Recommend to use :c:macro:`SIOCSIFADDR` and :c:macro:`SIOCDIFADDR`
+  to manage IPv6 addresses, by which you don't need to care about the
+  slot it stored.
diff --git a/content/docs/latest/genindex.html 
b/content/docs/latest/genindex.html
index 558444e2..7c73d541 100644
--- a/content/docs/latest/genindex.html
+++ b/content/docs/latest/genindex.html
@@ -669,9 +669,23 @@
 <h2 id="N">N</h2>
 <table style="width: 100%" class="indextable genindextable"><tr>
   <td style="width: 33%; vertical-align: top;"><ul>
+      <li><a href="reference/os/netdev.html#c.net_driver_s">net_driver_s (C 
struct)</a>, <a href="reference/os/netdev.html#c.net_driver_s">[1]</a>
+</li>
       <li><a href="glossary.html#term-NETDB"><strong>NETDB</strong></a>
 </li>
       <li><a href="glossary.html#term-NETDEV"><strong>NETDEV</strong></a>
+</li>
+      <li><a href="reference/os/netdev.html#c.netdev_ipv6_add">netdev_ipv6_add 
(C function)</a>
+</li>
+      <li><a href="reference/os/netdev.html#c.netdev_ipv6_del">netdev_ipv6_del 
(C function)</a>
+</li>
+      <li><a 
href="reference/os/netdev.html#c.netdev_ipv6_foreach">netdev_ipv6_foreach (C 
function)</a>
+</li>
+      <li><a 
href="reference/os/netdev.html#c.netdev_ipv6_lladdr">netdev_ipv6_lladdr (C 
function)</a>
+</li>
+      <li><a 
href="reference/os/netdev.html#c.netdev_ipv6_lookup">netdev_ipv6_lookup (C 
function)</a>
+</li>
+      <li><a 
href="reference/os/netdev.html#c.netdev_ipv6_srcaddr">netdev_ipv6_srcaddr (C 
function)</a>
 </li>
       <li><a href="glossary.html#term-NFS"><strong>NFS</strong></a>
 </li>
@@ -823,14 +837,14 @@
 </li>
       <li><a 
href="components/nxgraphics/nxcursor.html#c.nxcursor_setimage">nxcursor_setimage
 (C function)</a>
 </li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a 
href="components/nxgraphics/nxcursor.html#c.nxcursor_setposition">nxcursor_setposition
 (C function)</a>
 </li>
       <li><a 
href="components/nxgraphics/nxfonts.html#c.nxf_convert_16bpp">nxf_convert_16bpp 
(C function)</a>
 </li>
       <li><a 
href="components/nxgraphics/nxfonts.html#c.nxf_convert_24bpp">nxf_convert_24bpp 
(C function)</a>
 </li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a 
href="components/nxgraphics/nxfonts.html#c.nxf_convert_2bpp">nxf_convert_2bpp 
(C function)</a>
 </li>
       <li><a 
href="components/nxgraphics/nxfonts.html#c.nxf_convert_32bpp">nxf_convert_32bpp 
(C function)</a>
@@ -1375,8 +1389,6 @@
 </li>
       <li><a 
href="components/drivers/character/timers/timer.html#c.settimeout">settimeout 
(C function)</a>
 </li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="reference/user/12_shared_memory.html#c.shmat">shmat (C 
function)</a>
 </li>
       <li><a href="reference/user/12_shared_memory.html#c.shmctl">shmctl (C 
function)</a>
@@ -1391,6 +1403,8 @@
         <li><a href="reference/user/structures.html#c.sigaction">(C struct)</a>
 </li>
       </ul></li>
+  </ul></td>
+  <td style="width: 33%; vertical-align: top;"><ul>
       <li><a href="reference/user/07_signals.html#c.sigaddset">sigaddset (C 
function)</a>
 </li>
       <li><a href="reference/user/07_signals.html#c.sigdelset">sigdelset (C 
function)</a>
@@ -1432,6 +1446,24 @@
       <li><a href="reference/user/structures.html#c.sigval">sigval (C 
union)</a>
 </li>
       <li><a href="reference/user/07_signals.html#c.sigwaitinfo">sigwaitinfo 
(C function)</a>
+</li>
+      <li><a href="reference/os/netdev.html#c.SIOCDIFADDR">SIOCDIFADDR (C 
macro)</a>
+</li>
+      <li><a href="reference/os/netdev.html#c.SIOCGIFADDR">SIOCGIFADDR (C 
macro)</a>
+</li>
+      <li><a href="reference/os/netdev.html#c.SIOCGIFNETMASK">SIOCGIFNETMASK 
(C macro)</a>
+</li>
+      <li><a href="reference/os/netdev.html#c.SIOCGLIFADDR">SIOCGLIFADDR (C 
macro)</a>
+</li>
+      <li><a href="reference/os/netdev.html#c.SIOCGLIFNETMASK">SIOCGLIFNETMASK 
(C macro)</a>
+</li>
+      <li><a href="reference/os/netdev.html#c.SIOCSIFADDR">SIOCSIFADDR (C 
macro)</a>
+</li>
+      <li><a href="reference/os/netdev.html#c.SIOCSIFNETMASK">SIOCSIFNETMASK 
(C macro)</a>
+</li>
+      <li><a href="reference/os/netdev.html#c.SIOCSLIFADDR">SIOCSLIFADDR (C 
macro)</a>
+</li>
+      <li><a href="reference/os/netdev.html#c.SIOCSLIFNETMASK">SIOCSLIFNETMASK 
(C macro)</a>
 </li>
       <li><a href="reference/user/structures.html#c.size_t">size_t (C type)</a>
 </li>
diff --git a/content/docs/latest/index.html b/content/docs/latest/index.html
index e608ca3e..8e025ae6 100644
--- a/content/docs/latest/index.html
+++ b/content/docs/latest/index.html
@@ -163,7 +163,7 @@ standards. Additional standard APIs from Unix and other 
common RTOS’s (such as
 VxWorks) are adopted for functionality not available under these standards, or
 for functionality that is not appropriate for deeply-embedded environments 
(such
 as fork()).</p>
-<p>Last Updated: 07 November 23 at 00:12</p>
+<p>Last Updated: 08 November 23 at 00:12</p>
 <div class="toctree-wrapper compound">
 <p class="caption" role="heading"><span class="caption-text">Table of 
Contents</span></p>
 <ul class="current">
diff --git a/content/docs/latest/objects.inv b/content/docs/latest/objects.inv
index 372dfc9e..daea989d 100644
Binary files a/content/docs/latest/objects.inv and 
b/content/docs/latest/objects.inv differ
diff --git a/content/docs/latest/reference/os/nat.html 
b/content/docs/latest/reference/os/nat.html
index 357a80dc..a677e1ee 100644
--- a/content/docs/latest/reference/os/nat.html
+++ b/content/docs/latest/reference/os/nat.html
@@ -252,7 +252,7 @@ only trigger reclaiming on a few chains in hashtable).</p>
 </div></blockquote>
 <dl class="c function">
 <dt class="sig sig-object c" id="c.ipv4_nat_enable">
-<span class="kt"><span class="pre">int</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">ipv4_nat_enable</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="k"><span class="pre">struct</span></span><span class="w"> 
</span><span class="n"><span class="pre">net_driver_s</span></span><span 
class="w"> </span><span class="p"><span class="pre">*</span></span><span 
class="n"><sp [...]
+<span class="kt"><span class="pre">int</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">ipv4_nat_enable</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="k"><span class="pre">struct</span></span><span class="w"> 
</span><a class="reference internal" href="netdev.html#c.net_driver_s" 
title="net_driver_s"><span class="n"><span 
class="pre">net_driver_s</span></span></a><sp [...]
 <dd><p>Enable NAT function on a network device, on which the outbound packets
 will be masqueraded.</p>
 <dl class="field-list simple">
@@ -265,7 +265,7 @@ the device; A negated errno value is returned if failed.</p>
 
 <dl class="c function">
 <dt class="sig sig-object c" id="c.ipv4_nat_disable">
-<span class="kt"><span class="pre">int</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">ipv4_nat_disable</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="k"><span class="pre">struct</span></span><span class="w"> 
</span><span class="n"><span class="pre">net_driver_s</span></span><span 
class="w"> </span><span class="p"><span class="pre">*</span></span><span 
class="n"><s [...]
+<span class="kt"><span class="pre">int</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">ipv4_nat_disable</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="k"><span class="pre">struct</span></span><span class="w"> 
</span><a class="reference internal" href="netdev.html#c.net_driver_s" 
title="net_driver_s"><span class="n"><span 
class="pre">net_driver_s</span></span></a><s [...]
 <dd><p>Disable NAT function on a network device.</p>
 <dl class="field-list simple">
 <dt class="field-odd">Returns<span class="colon">:</span></dt>
diff --git a/content/docs/latest/reference/os/netdev.html 
b/content/docs/latest/reference/os/netdev.html
new file mode 100644
index 00000000..aae3fe41
--- /dev/null
+++ b/content/docs/latest/reference/os/netdev.html
@@ -0,0 +1,412 @@
+<!--
+ Documentation/_templates/layout.html
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.  The
+ ASF licenses this file to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance with the
+ License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ License for the specific language governing permissions and limitations
+ under the License.
+-->
+
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: 
http://docutils.sourceforge.net/"; />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>Network Devices &mdash; NuttX latest documentation</title>
+      <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" 
/>
+      <link rel="stylesheet" href="../../_static/css/theme.css" 
type="text/css" />
+      <link rel="stylesheet" href="../../_static/copybutton.css" 
type="text/css" />
+      <link rel="stylesheet" href="../../_static/tabs.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
+    <link rel="shortcut icon" href="../../_static/favicon.ico"/>
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script src="../../_static/jquery.js"></script>
+        <script 
src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script data-url_root="../../" id="documentation_options" 
src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/doctools.js"></script>
+        <script src="../../_static/sphinx_highlight.js"></script>
+        <script src="../../_static/clipboard.min.js"></script>
+        <script src="../../_static/copybutton.js"></script>
+    <script src="../../_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" /> 
+</head>
+
+<body class="wy-body-for-nav"> 
+  <div class="wy-grid-for-nav">
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+  
+    <a href="../../index.html" class="icon icon-home"> NuttX
+  
+
+  
+  </a>
+
+  <!-- this version selector is quite ugly, should be probably replaced by 
something
+       more modern -->
+
+  <div class="version-selector">
+    <select onchange="javascript:location.href = this.value;">
+    
+    <option value="../../../latest" selected="selected">latest</option>
+    
+    <option value="../../../10.0.0" >10.0.0</option>
+    
+    <option value="../../../10.0.1" >10.0.1</option>
+    
+    <option value="../../../10.1.0" >10.1.0</option>
+    
+    <option value="../../../10.2.0" >10.2.0</option>
+    
+    <option value="../../../10.3.0" >10.3.0</option>
+    
+    <option value="../../../11.0.0" >11.0.0</option>
+    
+    <option value="../../../12.0.0" >12.0.0</option>
+    
+    <option value="../../../12.1.0" >12.1.0</option>
+    
+    <option value="../../../12.2.0" >12.2.0</option>
+    
+    <option value="../../../12.2.1" >12.2.1</option>
+    
+    <option value="../../../12.3.0" >12.3.0</option>
+    
+    </select>
+  </div>
+
+  
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" 
method="get">
+    <input type="text" name="q" placeholder="Search docs" aria-label="Search 
docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" 
role="navigation" aria-label="Navigation menu">
+              <p class="caption" role="heading"><span 
class="caption-text">Table of Contents</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" 
href="../../index.html">Home</a></li>
+<li class="toctree-l1"><a class="reference internal" 
href="../../introduction/index.html">Introduction</a></li>
+<li class="toctree-l1"><a class="reference internal" 
href="../../quickstart/index.html">Getting Started</a></li>
+<li class="toctree-l1"><a class="reference internal" 
href="../../contributing/index.html">Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal" 
href="../../introduction/inviolables.html">The Inviolable Principles of 
NuttX</a></li>
+<li class="toctree-l1"><a class="reference internal" 
href="../../platforms/index.html">Supported Platforms</a></li>
+<li class="toctree-l1"><a class="reference internal" 
href="../../components/index.html">OS Components</a></li>
+<li class="toctree-l1"><a class="reference internal" 
href="../../applications/index.html">Applications</a></li>
+<li class="toctree-l1"><a class="reference internal" 
href="../../implementation/index.html">Implementation Details</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../index.html">API 
Reference</a></li>
+<li class="toctree-l1"><a class="reference internal" 
href="../../faq/index.html">FAQ</a></li>
+<li class="toctree-l1"><a class="reference internal" 
href="../../guides/index.html">Guides</a></li>
+<li class="toctree-l1"><a class="reference internal" 
href="../../glossary.html">Glossary</a></li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav 
class="wy-nav-top" aria-label="Mobile navigation menu" >
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../../index.html">NuttX</a>
+      </nav>
+
+      <div class="wy-nav-content">
+        <div class="rst-content">
+          <div role="navigation" aria-label="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" 
aria-label="Home"></a></li>
+      <li class="breadcrumb-item active">Network Devices</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/reference/os/netdev.rst.txt" 
rel="nofollow"> View page source</a>
+      </li>
+  </ul>
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" 
itemtype="http://schema.org/Article";>
+           <div itemprop="articleBody">
+             
+  <section id="network-devices">
+<h1>Network Devices<a class="headerlink" href="#network-devices" 
title="Permalink to this heading"></a></h1>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span 
class="pre">include/nuttx/net/netdev.h</span></code>. All structures and APIs
+needed to work with network drivers are provided in this
+header file. The structure <code class="docutils literal notranslate"><span 
class="pre">struct</span> <span class="pre">net_driver_s</span></code> defines 
the
+interface and is passed to the network via
+<code class="docutils literal notranslate"><span 
class="pre">netdev_register()</span></code>.</p></li>
+</ul>
+<section id="ip-addresses">
+<h2>IP Addresses<a class="headerlink" href="#ip-addresses" title="Permalink to 
this heading"></a></h2>
+<p>The structure <code class="docutils literal notranslate"><span 
class="pre">struct</span> <span class="pre">net_driver_s</span></code> now 
supports one IPv4 address and
+multiple IPv6 addresses. Multiple IPv6 addresses is common in modern
+network devices. For example, a network device may have a link-local
+address and a global address. The link-local address is used for
+neighbor discovery protocol and the global address is used for
+communication with the Internet.</p>
+<section id="configuration-options">
+<h3>Configuration Options<a class="headerlink" href="#configuration-options" 
title="Permalink to this heading"></a></h3>
+<dl class="simple">
+<dt><code class="docutils literal notranslate"><span 
class="pre">CONFIG_NETDEV_MULTIPLE_IPv6</span></code></dt><dd><p>Enable support 
for multiple IPv6 addresses per network device.
+Depends on <code class="docutils literal notranslate"><span 
class="pre">CONFIG_NET_IPv6</span></code>.</p>
+</dd>
+<dt><code class="docutils literal notranslate"><span 
class="pre">CONFIG_NETDEV_MAX_IPv6_ADDR</span></code></dt><dd><p>Maximum number 
of IPv6 addresses that can be assigned to a single
+network device. Normally a link-local address and a global address
+are needed.</p>
+</dd>
+</dl>
+</section>
+<section id="ipv4-interfaces">
+<h3>IPv4 Interfaces<a class="headerlink" href="#ipv4-interfaces" 
title="Permalink to this heading"></a></h3>
+<p>Now we only support one IPv4 address per network device, and directly
+use the <code class="xref c c-member docutils literal notranslate"><span 
class="pre">d_ipaddr</span></code>, <code class="xref c c-member docutils 
literal notranslate"><span class="pre">d_draddr</span></code> and <code 
class="xref c c-member docutils literal notranslate"><span 
class="pre">d_netmask</span></code>
+in <a class="reference internal" href="#c.net_driver_s" 
title="net_driver_s"><code class="xref c c-struct docutils literal 
notranslate"><span class="pre">net_driver_s</span></code></a>.</p>
+<dl class="c struct">
+<dt class="sig sig-object c" id="c.net_driver_s">
+<span class="k"><span class="pre">struct</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">net_driver_s</span></span></span><a class="headerlink" 
href="#c.net_driver_s" title="Permalink to this definition"></a><br /></dt>
+<dd><div class="highlight-c notranslate"><div 
class="highlight"><pre><span></span><span class="k">struct</span><span 
class="w"> </span><span class="nc">net_driver_s</span>
+<span class="p">{</span>
+<span class="cp">#ifdef CONFIG_NET_IPv4</span>
+<span class="w">  </span><span class="n">in_addr_t</span><span class="w">      
</span><span class="n">d_ipaddr</span><span class="p">;</span><span class="w">  
    </span><span class="cm">/* Host IPv4 address assigned to the network 
interface */</span>
+<span class="w">  </span><span class="n">in_addr_t</span><span class="w">      
</span><span class="n">d_draddr</span><span class="p">;</span><span class="w">  
    </span><span class="cm">/* Default router IP address */</span>
+<span class="w">  </span><span class="n">in_addr_t</span><span class="w">      
</span><span class="n">d_netmask</span><span class="p">;</span><span class="w"> 
    </span><span class="cm">/* Network subnet mask */</span>
+<span class="cp">#endif</span>
+<span class="p">};</span>
+</pre></div>
+</div>
+</dd></dl>
+
+</section>
+<section id="ipv6-interfaces">
+<h3>IPv6 Interfaces<a class="headerlink" href="#ipv6-interfaces" 
title="Permalink to this heading"></a></h3>
+<p>Now we support multiple IPv6 addresses per network device, and use
+the <code class="xref c c-member docutils literal notranslate"><span 
class="pre">d_ipv6</span></code> in <a class="reference internal" 
href="#c.net_driver_s" title="net_driver_s"><code class="xref c c-struct 
docutils literal notranslate"><span class="pre">net_driver_s</span></code></a> 
to store the IPv6
+addresses. For historical reason, we keep the old name <code class="xref c 
c-member docutils literal notranslate"><span 
class="pre">d_ipv6addr</span></code>
+and <code class="xref c c-member docutils literal notranslate"><span 
class="pre">d_ipv6netmask</span></code> for backward compatibility. Please use
+<code class="xref c c-member docutils literal notranslate"><span 
class="pre">d_ipv6</span></code> for new drivers.</p>
+<dl class="c struct">
+<dt class="sig sig-object c">
+<span class="k"><span class="pre">struct</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">net_driver_s</span></span></span><br /></dt>
+<dd><div class="highlight-c notranslate"><div 
class="highlight"><pre><span></span><span class="k">struct</span><span 
class="w"> </span><span class="nc">net_driver_s</span>
+<span class="p">{</span>
+<span class="cp">#ifdef CONFIG_NET_IPv6</span>
+<span class="w">  </span><span class="k">struct</span><span class="w"> 
</span><span class="nc">netdev_ifaddr6_s</span><span class="w"> </span><span 
class="n">d_ipv6</span><span class="p">[</span><span 
class="n">CONFIG_NETDEV_MAX_IPv6_ADDR</span><span class="p">];</span>
+<span class="cp">#endif</span>
+<span class="p">};</span>
+</pre></div>
+</div>
+</dd></dl>
+
+<p>Managing the IPv6 addresses by provided APIs would be more flexible:</p>
+<blockquote>
+<div><ul class="simple">
+<li><p><a class="reference internal" href="#c.netdev_ipv6_add" 
title="netdev_ipv6_add"><code class="xref c c-func docutils literal 
notranslate"><span class="pre">netdev_ipv6_add()</span></code></a></p></li>
+<li><p><a class="reference internal" href="#c.netdev_ipv6_del" 
title="netdev_ipv6_del"><code class="xref c c-func docutils literal 
notranslate"><span class="pre">netdev_ipv6_del()</span></code></a></p></li>
+<li><p><a class="reference internal" href="#c.netdev_ipv6_srcaddr" 
title="netdev_ipv6_srcaddr"><code class="xref c c-func docutils literal 
notranslate"><span class="pre">netdev_ipv6_srcaddr()</span></code></a></p></li>
+<li><p><a class="reference internal" href="#c.netdev_ipv6_lladdr" 
title="netdev_ipv6_lladdr"><code class="xref c c-func docutils literal 
notranslate"><span class="pre">netdev_ipv6_lladdr()</span></code></a></p></li>
+<li><p><a class="reference internal" href="#c.netdev_ipv6_lookup" 
title="netdev_ipv6_lookup"><code class="xref c c-func docutils literal 
notranslate"><span class="pre">netdev_ipv6_lookup()</span></code></a></p></li>
+<li><p><a class="reference internal" href="#c.netdev_ipv6_foreach" 
title="netdev_ipv6_foreach"><code class="xref c c-func docutils literal 
notranslate"><span class="pre">netdev_ipv6_foreach()</span></code></a></p></li>
+</ul>
+</div></blockquote>
+<dl class="c function">
+<dt class="sig sig-object c" id="c.netdev_ipv6_add">
+<span class="kt"><span class="pre">int</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">netdev_ipv6_add</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="k"><span class="pre">struct</span></span><span class="w"> 
</span><a class="reference internal" href="#c.net_driver_s" 
title="net_driver_s"><span class="n"><span 
class="pre">net_driver_s</span></span></a><span class="w [...]
+<dd></dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.netdev_ipv6_del">
+<span class="kt"><span class="pre">int</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">netdev_ipv6_del</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="k"><span class="pre">struct</span></span><span class="w"> 
</span><a class="reference internal" href="#c.net_driver_s" 
title="net_driver_s"><span class="n"><span 
class="pre">net_driver_s</span></span></a><span class="w [...]
+<dd><p>Add or delete an IPv6 address on the network device</p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns<span class="colon">:</span></dt>
+<dd class="field-odd"><p>Zero is returned if the operation is successfully 
applied on
+the device; A negated errno value is returned if failed.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.netdev_ipv6_srcaddr">
+<span class="pre">FAR</span><span class="w"> </span><span class="k"><span 
class="pre">const</span></span><span class="w"> </span><span class="n"><span 
class="pre">uint16_t</span></span><span class="w"> </span><span class="p"><span 
class="pre">*</span></span><span class="sig-name descname"><span 
class="n"><span class="pre">netdev_ipv6_srcaddr</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="k"><span class="pre">struct</sp [...]
+<dd><p>Get the source IPv6 address (RFC6724).</p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns<span class="colon">:</span></dt>
+<dd class="field-odd"><p>A pointer to the IPv6 address is returned on success. 
 It will never be
+NULL, but can be an address containing g_ipv6_unspecaddr.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.netdev_ipv6_lladdr">
+<span class="pre">FAR</span><span class="w"> </span><span class="k"><span 
class="pre">const</span></span><span class="w"> </span><span class="n"><span 
class="pre">uint16_t</span></span><span class="w"> </span><span class="p"><span 
class="pre">*</span></span><span class="sig-name descname"><span 
class="n"><span class="pre">netdev_ipv6_lladdr</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="k"><span class="pre">struct</spa [...]
+<dd><p>Get the link-local address of the network device.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns<span class="colon">:</span></dt>
+<dd class="field-odd"><p>A pointer to the link-local address is returned on 
success.
+NULL is returned if the address is not found on the device.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.netdev_ipv6_lookup">
+<span class="pre">FAR</span><span class="w"> </span><span class="k"><span 
class="pre">struct</span></span><span class="w"> </span><span class="n"><span 
class="pre">netdev_ifaddr6_s</span></span><span class="w"> </span><span 
class="p"><span class="pre">*</span></span><span class="sig-name 
descname"><span class="n"><span 
class="pre">netdev_ipv6_lookup</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="k"><span class="pre">st [...]
+<dd><p>Look up an IPv6 address in the network device’s IPv6 addresses</p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns<span class="colon">:</span></dt>
+<dd class="field-odd"><p>A pointer to the matching IPv6 address entry is 
returned on success.
+NULL is returned if the IPv6 address is not found in the device.</p>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="c function">
+<dt class="sig sig-object c" id="c.netdev_ipv6_foreach">
+<span class="kt"><span class="pre">int</span></span><span class="w"> 
</span><span class="sig-name descname"><span class="n"><span 
class="pre">netdev_ipv6_foreach</span></span></span><span 
class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> 
</span><span class="k"><span class="pre">struct</span></span><span class="w"> 
</span><a class="reference internal" href="#c.net_driver_s" 
title="net_driver_s"><span class="n"><span 
class="pre">net_driver_s</span></span></a><span clas [...]
+<dd><p>Enumerate each IPv6 address on a network device.  This function will
+terminate when either (1) all addresses have been enumerated or (2) when
+a callback returns any non-zero value.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Returns<span class="colon">:</span></dt>
+<dd class="field-odd"><p>Zero is returned if the enumeration is successfully 
completed;
+Non-zero value is returned if enumeration is terminated early by callback.</p>
+</dd>
+</dl>
+</dd></dl>
+
+</section>
+<section id="ioctls-for-ip-addresses">
+<h3>Ioctls for IP Addresses<a class="headerlink" 
href="#ioctls-for-ip-addresses" title="Permalink to this heading"></a></h3>
+<blockquote>
+<div><ul class="simple">
+<li><p><a class="reference internal" href="#c.SIOCGIFADDR" 
title="SIOCGIFADDR"><code class="xref c c-macro docutils literal 
notranslate"><span class="pre">SIOCGIFADDR</span></code></a></p></li>
+<li><p><a class="reference internal" href="#c.SIOCSIFADDR" 
title="SIOCSIFADDR"><code class="xref c c-macro docutils literal 
notranslate"><span class="pre">SIOCSIFADDR</span></code></a></p></li>
+<li><p><a class="reference internal" href="#c.SIOCDIFADDR" 
title="SIOCDIFADDR"><code class="xref c c-macro docutils literal 
notranslate"><span class="pre">SIOCDIFADDR</span></code></a></p></li>
+<li><p><a class="reference internal" href="#c.SIOCGLIFADDR" 
title="SIOCGLIFADDR"><code class="xref c c-macro docutils literal 
notranslate"><span class="pre">SIOCGLIFADDR</span></code></a></p></li>
+<li><p><a class="reference internal" href="#c.SIOCSLIFADDR" 
title="SIOCSLIFADDR"><code class="xref c c-macro docutils literal 
notranslate"><span class="pre">SIOCSLIFADDR</span></code></a></p></li>
+<li><p><a class="reference internal" href="#c.SIOCGIFNETMASK" 
title="SIOCGIFNETMASK"><code class="xref c c-macro docutils literal 
notranslate"><span class="pre">SIOCGIFNETMASK</span></code></a></p></li>
+<li><p><a class="reference internal" href="#c.SIOCSIFNETMASK" 
title="SIOCSIFNETMASK"><code class="xref c c-macro docutils literal 
notranslate"><span class="pre">SIOCSIFNETMASK</span></code></a></p></li>
+<li><p><a class="reference internal" href="#c.SIOCGLIFNETMASK" 
title="SIOCGLIFNETMASK"><code class="xref c c-macro docutils literal 
notranslate"><span class="pre">SIOCGLIFNETMASK</span></code></a></p></li>
+<li><p><a class="reference internal" href="#c.SIOCSLIFNETMASK" 
title="SIOCSLIFNETMASK"><code class="xref c c-macro docutils literal 
notranslate"><span class="pre">SIOCSLIFNETMASK</span></code></a></p></li>
+</ul>
+</div></blockquote>
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.SIOCGIFADDR">
+<span class="sig-name descname"><span class="n"><span 
class="pre">SIOCGIFADDR</span></span></span><a class="headerlink" 
href="#c.SIOCGIFADDR" title="Permalink to this definition"></a><br /></dt>
+<dd></dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.SIOCSIFADDR">
+<span class="sig-name descname"><span class="n"><span 
class="pre">SIOCSIFADDR</span></span></span><a class="headerlink" 
href="#c.SIOCSIFADDR" title="Permalink to this definition"></a><br /></dt>
+<dd></dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.SIOCDIFADDR">
+<span class="sig-name descname"><span class="n"><span 
class="pre">SIOCDIFADDR</span></span></span><a class="headerlink" 
href="#c.SIOCDIFADDR" title="Permalink to this definition"></a><br /></dt>
+<dd><p>We just follow the Linux convention[1]:</p>
+<blockquote>
+<div><p>Get, set, or delete the address of the device using <code class="xref 
c c-member docutils literal notranslate"><span 
class="pre">ifr_addr</span></code>,
+or <code class="xref c c-member docutils literal notranslate"><span 
class="pre">ifr6_addr</span></code> with <code class="xref c c-member docutils 
literal notranslate"><span class="pre">ifr6_prefixlen</span></code>.
+For compatibility, <a class="reference internal" href="#c.SIOCGIFADDR" 
title="SIOCGIFADDR"><code class="xref c c-macro docutils literal 
notranslate"><span class="pre">SIOCGIFADDR</span></code></a> returns only <code 
class="xref c c-macro docutils literal notranslate"><span 
class="pre">AF_INET</span></code>
+addresses, <a class="reference internal" href="#c.SIOCSIFADDR" 
title="SIOCSIFADDR"><code class="xref c c-macro docutils literal 
notranslate"><span class="pre">SIOCSIFADDR</span></code></a> accepts <code 
class="xref c c-macro docutils literal notranslate"><span 
class="pre">AF_INET</span></code> and
+<code class="xref c c-macro docutils literal notranslate"><span 
class="pre">AF_INET6</span></code> addresses, and <a class="reference internal" 
href="#c.SIOCDIFADDR" title="SIOCDIFADDR"><code class="xref c c-macro docutils 
literal notranslate"><span class="pre">SIOCDIFADDR</span></code></a> deletes
+only <code class="xref c c-macro docutils literal notranslate"><span 
class="pre">AF_INET6</span></code> addresses.  A <code class="xref c c-macro 
docutils literal notranslate"><span class="pre">AF_INET</span></code> address
+can be deleted by setting it to zero via <a class="reference internal" 
href="#c.SIOCSIFADDR" title="SIOCSIFADDR"><code class="xref c c-macro docutils 
literal notranslate"><span class="pre">SIOCSIFADDR</span></code></a>.</p>
+</div></blockquote>
+<p>Note: Unlike Linux, the maximum number of IPv6 addresses is limited on
+NuttX.  If you add more IPv6 addresses when we have already reached the
+limit, the new addresses will replace addresses with same scope.</p>
+<p>[1]: <a class="reference external" 
href="https://man7.org/linux/man-pages/man7/netdevice.7.html";>https://man7.org/linux/man-pages/man7/netdevice.7.html</a></p>
+</dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.SIOCGLIFADDR">
+<span class="sig-name descname"><span class="n"><span 
class="pre">SIOCGLIFADDR</span></span></span><a class="headerlink" 
href="#c.SIOCGLIFADDR" title="Permalink to this definition"></a><br /></dt>
+<dd></dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.SIOCSLIFADDR">
+<span class="sig-name descname"><span class="n"><span 
class="pre">SIOCSLIFADDR</span></span></span><a class="headerlink" 
href="#c.SIOCSLIFADDR" title="Permalink to this definition"></a><br /></dt>
+<dd><p>Get or set the IPv6 address of the device using <code class="xref c 
c-member docutils literal notranslate"><span 
class="pre">lifr_addr</span></code>.</p>
+<p>We follow the Linux convention[1] to allow interface name to be
+&lt;eth&gt;:&lt;num&gt;[2], to keep working with multiple IPv6 addresses.</p>
+<p>Note: Recommend to use <a class="reference internal" href="#c.SIOCSIFADDR" 
title="SIOCSIFADDR"><code class="xref c c-macro docutils literal 
notranslate"><span class="pre">SIOCSIFADDR</span></code></a> and <a 
class="reference internal" href="#c.SIOCDIFADDR" title="SIOCDIFADDR"><code 
class="xref c c-macro docutils literal notranslate"><span 
class="pre">SIOCDIFADDR</span></code></a>
+to manage IPv6 addresses, by which you don’t need to care about the
+slot it stored.</p>
+<p>[1]: <a class="reference external" 
href="https://man7.org/linux/man-pages/man7/netdevice.7.html";>https://man7.org/linux/man-pages/man7/netdevice.7.html</a>
+[2]: e.g. ‘eth0:0’ stands for the secondary address on eth0</p>
+</dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.SIOCGIFNETMASK">
+<span class="sig-name descname"><span class="n"><span 
class="pre">SIOCGIFNETMASK</span></span></span><a class="headerlink" 
href="#c.SIOCGIFNETMASK" title="Permalink to this definition"></a><br /></dt>
+<dd></dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.SIOCSIFNETMASK">
+<span class="sig-name descname"><span class="n"><span 
class="pre">SIOCSIFNETMASK</span></span></span><a class="headerlink" 
href="#c.SIOCSIFNETMASK" title="Permalink to this definition"></a><br /></dt>
+<dd><p>Get or set the IPv4 network mask for a device using <code class="xref c 
c-member docutils literal notranslate"><span 
class="pre">ifr_netmask</span></code>.</p>
+</dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.SIOCGLIFNETMASK">
+<span class="sig-name descname"><span class="n"><span 
class="pre">SIOCGLIFNETMASK</span></span></span><a class="headerlink" 
href="#c.SIOCGLIFNETMASK" title="Permalink to this definition"></a><br /></dt>
+<dd></dd></dl>
+
+<dl class="c macro">
+<dt class="sig sig-object c" id="c.SIOCSLIFNETMASK">
+<span class="sig-name descname"><span class="n"><span 
class="pre">SIOCSLIFNETMASK</span></span></span><a class="headerlink" 
href="#c.SIOCSLIFNETMASK" title="Permalink to this definition"></a><br /></dt>
+<dd><p>Get or set the IPv6 network mask for a device using <code class="xref c 
c-member docutils literal notranslate"><span 
class="pre">lifr_netmask</span></code>.</p>
+<p>We follow the Linux convention to allow interface name to be 
&lt;eth&gt;:&lt;num&gt;,
+to keep working with multiple IPv6 addresses.</p>
+<p>Note: Recommend to use <a class="reference internal" href="#c.SIOCSIFADDR" 
title="SIOCSIFADDR"><code class="xref c c-macro docutils literal 
notranslate"><span class="pre">SIOCSIFADDR</span></code></a> and <a 
class="reference internal" href="#c.SIOCDIFADDR" title="SIOCDIFADDR"><code 
class="xref c c-macro docutils literal notranslate"><span 
class="pre">SIOCDIFADDR</span></code></a>
+to manage IPv6 addresses, by which you don’t need to care about the
+slot it stored.</p>
+</dd></dl>
+
+</section>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2023, The Apache Software Foundation.</p>
+  </div>
+
+   
+
+</footer>
+        </div>
+      </div>
+    </section>
+  </div>
+  <script>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/content/docs/latest/searchindex.js 
b/content/docs/latest/searchindex.js
index 24948d1b..83f723d3 100644
--- a/content/docs/latest/searchindex.js
+++ b/content/docs/latest/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/coremark/index", "applications/benchmarks/index", 
"applications/boot/index", "applications/boot/mcuboot/index", 
"applications/boot/miniboot/index", "applications/canutils/candump/index", 
"applications/canutils/canlib/index", "applications/canutils/cansend/index", 
"applications/c [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index", 
"applications/audioutils/index", "applications/audioutils/mml_parser/index", 
"applications/audioutils/nxaudio/index", 
"applications/benchmarks/coremark/index", "applications/benchmarks/index", 
"applications/boot/index", "applications/boot/mcuboot/index", 
"applications/boot/miniboot/index", "applications/canutils/candump/index", 
"applications/canutils/canlib/index", "applications/canutils/cansend/index", 
"applications/c [...]
\ No newline at end of file
diff --git a/content/feed.xml b/content/feed.xml
index b42b132c..ec9bee15 100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@ -5,8 +5,8 @@
     <description></description>
     <link>/</link>
     <atom:link href="/feed.xml" rel="self" type="application/rss+xml"/>
-    <pubDate>Tue, 07 Nov 2023 00:13:18 +0000</pubDate>
-    <lastBuildDate>Tue, 07 Nov 2023 00:13:18 +0000</lastBuildDate>
+    <pubDate>Wed, 08 Nov 2023 00:13:16 +0000</pubDate>
+    <lastBuildDate>Wed, 08 Nov 2023 00:13:16 +0000</lastBuildDate>
     <generator>Jekyll v4.3.2</generator>
     
       <item>

Reply via email to