Skip to content

Commit 18cd868

Browse files
author
docs-bot
committed
docs: update from source@72bba8e
1 parent 16dd841 commit 18cd868

7 files changed

Lines changed: 102 additions & 24 deletions

File tree

‎docs/features.html‎

Lines changed: 28 additions & 2 deletions
Large diffs are not rendered by default.

‎docs/kernel-configuration.html‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<link rel="apple-touch-icon" href="/favicon.ico">
2424
<link rel="stylesheet" href="/assets/css/site.css?v=b310d7c992">
2525
<link rel="stylesheet" href="/assets/css/main.css?v=ccd72260b9">
26-
<script type="application/ld+json">[{"@context": "https://schema.org", "@type": "TechArticle", "headline": "Kernel configuration", "description": "How to compile an Android kernel with Droidspaces support: the config options and patches for non-GKI and GKI kernels.", "url": "https://www.droidspaces.org/docs/kernel-configuration.html", "inLanguage": "en", "dateModified": "2026-10-04", "author": {"@type": "Organization", "name": "Droidspaces", "url": "https://www.droidspaces.org/", "sameAs": ["https://github.com/ravindu644/Droidspaces-OSS", "https://t.me/Droidspaces"]}, "publisher": {"@type": "Organization", "name": "Droidspaces", "url": "https://www.droidspaces.org/", "sameAs": ["https://github.com/ravindu644/Droidspaces-OSS", "https://t.me/Droidspaces"]}, "isPartOf": {"@type": "WebSite", "name": "Droidspaces", "url": "https://www.droidspaces.org/"}}, {"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.droidspaces.org/"}, {"@type": "ListItem", "position": 2, "name": "Documentation", "item": "https://www.droidspaces.org/docs/"}, {"@type": "ListItem", "position": 3, "name": "Kernel configuration", "item": "https://www.droidspaces.org/docs/kernel-configuration.html"}]}]</script>
26+
<script type="application/ld+json">[{"@context": "https://schema.org", "@type": "TechArticle", "headline": "Kernel configuration", "description": "How to compile an Android kernel with Droidspaces support: the config options and patches for non-GKI and GKI kernels.", "url": "https://www.droidspaces.org/docs/kernel-configuration.html", "inLanguage": "en", "dateModified": "2026-10-10", "author": {"@type": "Organization", "name": "Droidspaces", "url": "https://www.droidspaces.org/", "sameAs": ["https://github.com/ravindu644/Droidspaces-OSS", "https://t.me/Droidspaces"]}, "publisher": {"@type": "Organization", "name": "Droidspaces", "url": "https://www.droidspaces.org/", "sameAs": ["https://github.com/ravindu644/Droidspaces-OSS", "https://t.me/Droidspaces"]}, "isPartOf": {"@type": "WebSite", "name": "Droidspaces", "url": "https://www.droidspaces.org/"}}, {"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.droidspaces.org/"}, {"@type": "ListItem", "position": 2, "name": "Documentation", "item": "https://www.droidspaces.org/docs/"}, {"@type": "ListItem", "position": 3, "name": "Kernel configuration", "item": "https://www.droidspaces.org/docs/kernel-configuration.html"}]}]</script>
2727
<script>(function(){const t=localStorage.getItem('theme');if(t)document.documentElement.setAttribute('data-theme',t);})();</script>
2828
</head>
2929
<body>
@@ -190,6 +190,10 @@ <h3 id="step-1-mandatory-configuration">Step 1: Mandatory configuration <a class
190190
<span class="nv">CONFIG_NF_CONNTRACK_IPV6</span><span class="o">=</span>y
191191
<span class="nv">CONFIG_NF_NAT_IPV6</span><span class="o">=</span>y
192192

193+
<span class="c"># Macvlan mode (--net=macvlan): a container straight on a wired LAN.</span>
194+
<span class="c"># Optional: without it, macvlan mode is unavailable</span>
195+
<span class="nv">CONFIG_MACVLAN</span><span class="o">=</span>y
196+
193197
<span class="c"># Disable this on older kernels to make internet work</span>
194198
<span class="nv">CONFIG_ANDROID_PARANOID_NETWORK</span><span class="o">=</span>n
195199

@@ -292,6 +296,10 @@ <h3 id="step-2-edit-gki_defconfig">Step 2: Edit <code>gki_defconfig</code> <a cl
292296
<span class="nv">CONFIG_IP6_NF_NAT</span><span class="o">=</span>y
293297
<span class="nv">CONFIG_IP6_NF_TARGET_MASQUERADE</span><span class="o">=</span>y
294298

299+
<span class="c"># Macvlan mode (--net=macvlan). kABI-safe: on a 5.15 GKI tree it changed none</span>
300+
<span class="c"># of the 8423 exported symbols, and the driver is self-contained</span>
301+
<span class="nv">CONFIG_MACVLAN</span><span class="o">=</span>y
302+
295303
<span class="c"># UFW support</span>
296304
<span class="nv">CONFIG_NETFILTER_XT_TARGET_REJECT</span><span class="o">=</span>y
297305
<span class="nv">CONFIG_NETFILTER_XT_TARGET_LOG</span><span class="o">=</span>y
@@ -363,6 +371,7 @@ <h3 id="1-run-the-requirements-check">1. Run the requirements check <a class="he
363371
<li>devtmpfs support</li>
364372
<li>OverlayFS support (optional, for volatile mode)</li>
365373
<li>VETH and Bridge support (optional, for NAT mode)</li>
374+
<li>Macvlan support (optional, for macvlan mode)</li>
366375
<li>IPv6 NAT support (optional, for IPv6 in NAT mode)</li>
367376
<li>Memory, CPU and process limit support (optional, for <code>--memory</code>, <code>--cpus</code> and <code>--pids-limit</code>)</li>
368377
<li>PTY/devpts support</li>
@@ -453,6 +462,11 @@ <h3 id="3-what-to-do-if-something-is-missing">3. What to do if something is miss
453462
<td>NAT containers are IPv4 only.</td>
454463
</tr>
455464
<tr>
465+
<td>Macvlan</td>
466+
<td><code>CONFIG_MACVLAN</code></td>
467+
<td>Macvlan mode unavailable.</td>
468+
</tr>
469+
<tr>
456470
<td>Seccomp</td>
457471
<td><code>CONFIG_SECCOMP=y</code></td>
458472
<td>Seccomp shield disabled. Security risk.</td>

‎docs/linux-cli.html‎

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<link rel="apple-touch-icon" href="/favicon.ico">
2424
<link rel="stylesheet" href="/assets/css/site.css?v=b310d7c992">
2525
<link rel="stylesheet" href="/assets/css/main.css?v=ccd72260b9">
26-
<script type="application/ld+json">[{"@context": "https://schema.org", "@type": "TechArticle", "headline": "Linux CLI", "description": "Reference for the droidspaces command line: every command, flag and config file key.", "url": "https://www.droidspaces.org/docs/linux-cli.html", "inLanguage": "en", "dateModified": "2026-10-06", "author": {"@type": "Organization", "name": "Droidspaces", "url": "https://www.droidspaces.org/", "sameAs": ["https://github.com/ravindu644/Droidspaces-OSS", "https://t.me/Droidspaces"]}, "publisher": {"@type": "Organization", "name": "Droidspaces", "url": "https://www.droidspaces.org/", "sameAs": ["https://github.com/ravindu644/Droidspaces-OSS", "https://t.me/Droidspaces"]}, "isPartOf": {"@type": "WebSite", "name": "Droidspaces", "url": "https://www.droidspaces.org/"}}, {"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.droidspaces.org/"}, {"@type": "ListItem", "position": 2, "name": "Documentation", "item": "https://www.droidspaces.org/docs/"}, {"@type": "ListItem", "position": 3, "name": "Linux CLI", "item": "https://www.droidspaces.org/docs/linux-cli.html"}]}]</script>
26+
<script type="application/ld+json">[{"@context": "https://schema.org", "@type": "TechArticle", "headline": "Linux CLI", "description": "Reference for the droidspaces command line: every command, flag and config file key.", "url": "https://www.droidspaces.org/docs/linux-cli.html", "inLanguage": "en", "dateModified": "2026-10-10", "author": {"@type": "Organization", "name": "Droidspaces", "url": "https://www.droidspaces.org/", "sameAs": ["https://github.com/ravindu644/Droidspaces-OSS", "https://t.me/Droidspaces"]}, "publisher": {"@type": "Organization", "name": "Droidspaces", "url": "https://www.droidspaces.org/", "sameAs": ["https://github.com/ravindu644/Droidspaces-OSS", "https://t.me/Droidspaces"]}, "isPartOf": {"@type": "WebSite", "name": "Droidspaces", "url": "https://www.droidspaces.org/"}}, {"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.droidspaces.org/"}, {"@type": "ListItem", "position": 2, "name": "Documentation", "item": "https://www.droidspaces.org/docs/"}, {"@type": "ListItem", "position": 3, "name": "Linux CLI", "item": "https://www.droidspaces.org/docs/linux-cli.html"}]}]</script>
2727
<script>(function(){const t=localStorage.getItem('theme');if(t)document.documentElement.setAttribute('data-theme',t);})();</script>
2828
</head>
2929
<body>
@@ -246,7 +246,7 @@ <h3 id="networking">Networking <a class="header-anchor" href="#networking">#</a>
246246
<tr>
247247
<td><code>--net=MODE</code></td>
248248
<td></td>
249-
<td>Networking mode: <code>nat</code> (default), <code>host</code>, <code>none</code>, or <code>gateway</code>.</td>
249+
<td>Networking mode: <code>nat</code> (default), <code>host</code>, <code>none</code>, <code>gateway</code>, or <code>macvlan</code>.</td>
250250
</tr>
251251
<tr>
252252
<td><code>--upstream=IFACE</code></td>
@@ -303,6 +303,29 @@ <h4 id="gateway-mode">Gateway mode <a class="header-anchor" href="#gateway-mode"
303303
</tr>
304304
</tbody>
305305
</table></div>
306+
<h4 id="macvlan-mode">Macvlan mode <a class="header-anchor" href="#macvlan-mode">#</a></h4>
307+
<p>Put a container straight onto a wired LAN through a host NIC, usually a USB Ethernet adapter. It gets its own MAC address on that LAN and its address from the LAN's DHCP server, with no NAT. Needs <code>CONFIG_MACVLAN</code> (see the <a href="kernel-configuration.html">Kernel configuration guide</a>). See <a href="features.html#5-macvlan-mode---netmacvlan">Features</a> for what it can and cannot do.</p>
308+
<div class="table-wrap"><table>
309+
<thead>
310+
<tr>
311+
<th>Option</th>
312+
<th>Short</th>
313+
<th>Description</th>
314+
</tr>
315+
</thead>
316+
<tbody>
317+
<tr>
318+
<td><code>--macvlan-parent=IF</code></td>
319+
<td></td>
320+
<td><strong>Required</strong> for <code>--net=macvlan</code>. The host NIC to attach to, for example <code>eth0</code>.</td>
321+
</tr>
322+
<tr>
323+
<td><code>--macvlan-mode=MODE</code></td>
324+
<td></td>
325+
<td><code>bridge</code> (default), <code>private</code>, <code>vepa</code> or <code>passthru</code>. In <code>bridge</code> mode containers on the same NIC reach each other directly.</td>
326+
</tr>
327+
</tbody>
328+
</table></div>
306329
<h3 id="feature-flags">Feature flags <a class="header-anchor" href="#feature-flags">#</a></h3>
307330
<div class="table-wrap"><table>
308331
<thead>
@@ -528,6 +551,11 @@ <h3 id="gateway-mode-lan-owned-by-openwrt">Gateway mode (LAN owned by OpenWRT) <
528551
<span class="c1"># 2. a client whose LAN/DHCP/firewall is owned by openwrt</span>
529552
sudo<span class="w"> </span>droidspaces<span class="w"> </span>--name<span class="o">=</span>kali<span class="w"> </span>--rootfs<span class="o">=</span>/data/kali<span class="w"> </span>--net<span class="o">=</span>gateway<span class="w"> </span>--gateway<span class="o">=</span>openwrt<span class="w"> </span>start
530553
</code></pre></div>
554+
<h3 id="macvlan-mode-a-real-address-on-a-wired-lan">Macvlan mode (a real address on a wired LAN) <a class="header-anchor" href="#macvlan-mode-a-real-address-on-a-wired-lan">#</a></h3>
555+
<div class="code-block"><span class="code-lang">bash</span><button class="icon-button copy-btn" onclick="copyCode(this)" aria-label="Copy"><span class="icon" aria-hidden="true">content_copy</span></button><pre><code><span class="c1"># eth0 is the USB Ethernet adapter on the host; the container gets its own</span>
556+
<span class="c1"># MAC and asks the LAN&#39;s router for an address</span>
557+
sudo<span class="w"> </span>droidspaces<span class="w"> </span>--name<span class="o">=</span>ubuntu<span class="w"> </span>--rootfs<span class="o">=</span>/data/ubuntu<span class="w"> </span>--net<span class="o">=</span>macvlan<span class="w"> </span>--macvlan-parent<span class="o">=</span>eth0<span class="w"> </span>start
558+
</code></pre></div>
531559
<h3 id="ephemeral-testing">Ephemeral testing <a class="header-anchor" href="#ephemeral-testing">#</a></h3>
532560
<div class="code-block"><span class="code-lang">bash</span><button class="icon-button copy-btn" onclick="copyCode(this)" aria-label="Copy"><span class="icon" aria-hidden="true">content_copy</span></button><pre><code>sudo<span class="w"> </span>droidspaces<span class="w"> </span>--name<span class="o">=</span><span class="nb">test</span><span class="w"> </span>--rootfs<span class="o">=</span>/path/to/rootfs<span class="w"> </span>--volatile<span class="w"> </span>start
533561
</code></pre></div>
@@ -577,7 +605,7 @@ <h2 id="next-steps">Next steps <a class="header-anchor" href="#next-steps">#</a>
577605
<nav class="doc-nav" aria-label="Pages"><a href="usage-android-app.html" class="doc-nav-prev"><small>Previous</small>Android app usage</a><a href="networking-from-zero.html" class="doc-nav-next"><small>Next</small>Networking from zero</a></nav>
578606
</main>
579607
<aside class="toc-column">
580-
<nav class="toc" aria-label="On this page"><p class="toc-title">On this page</p><ul><li class="toc-h2"><a href="#quick-navigation">Quick navigation</a></li><li class="toc-h2"><a href="#1-getting-started">1. Getting started</a></li><li class="toc-h3"><a href="#start-your-first-container">Start your first container</a></li><li class="toc-h3"><a href="#enter-the-container">Enter the container</a></li><li class="toc-h3"><a href="#stop-the-container">Stop the container</a></li><li class="toc-h2"><a href="#2-command-reference">2. Command reference</a></li><li class="toc-h2"><a href="#3-options--flags">3. Options &amp; flags</a></li><li class="toc-h3"><a href="#rootfs-selection">Rootfs selection</a></li><li class="toc-h3"><a href="#container-identity--configuration">Container identity &amp; configuration</a></li><li class="toc-h3"><a href="#networking">Networking</a></li><li class="toc-h3"><a href="#feature-flags">Feature flags</a></li><li class="toc-h3"><a href="#resource-limits">Resource limits</a></li><li class="toc-h3"><a href="#bind-mounts">Bind mounts</a></li><li class="toc-h2"><a href="#4-configuration-files">4. Configuration files</a></li><li class="toc-h2"><a href="#5-common-workflows">5. Common workflows</a></li><li class="toc-h3"><a href="#running-with-a-config-file">Running with a config file</a></li><li class="toc-h3"><a href="#persistent-development">Persistent development</a></li><li class="toc-h3"><a href="#nat-isolation-with-port-forwarding">NAT isolation with port forwarding</a></li><li class="toc-h3"><a href="#nat-with-a-pinned-uplink">NAT with a pinned uplink</a></li><li class="toc-h3"><a href="#gateway-mode-lan-owned-by-openwrt">Gateway mode (LAN owned by OpenWRT)</a></li><li class="toc-h3"><a href="#ephemeral-testing">Ephemeral testing</a></li><li class="toc-h3"><a href="#one-off-commands">One-off commands</a></li><li class="toc-h3"><a href="#gpu-acceleration">GPU acceleration</a></li><li class="toc-h3"><a href="#deep-customization-privileged-mode">Deep customization (privileged mode)</a></li><li class="toc-h2"><a href="#6-advanced-usage--lifecycle">6. Advanced usage &amp; lifecycle</a></li><li class="toc-h3"><a href="#container-recovery">Container recovery</a></li><li class="toc-h2"><a href="#7-system-requirements">7. System requirements</a></li><li class="toc-h2"><a href="#next-steps">Next steps</a></li></ul></nav>
608+
<nav class="toc" aria-label="On this page"><p class="toc-title">On this page</p><ul><li class="toc-h2"><a href="#quick-navigation">Quick navigation</a></li><li class="toc-h2"><a href="#1-getting-started">1. Getting started</a></li><li class="toc-h3"><a href="#start-your-first-container">Start your first container</a></li><li class="toc-h3"><a href="#enter-the-container">Enter the container</a></li><li class="toc-h3"><a href="#stop-the-container">Stop the container</a></li><li class="toc-h2"><a href="#2-command-reference">2. Command reference</a></li><li class="toc-h2"><a href="#3-options--flags">3. Options &amp; flags</a></li><li class="toc-h3"><a href="#rootfs-selection">Rootfs selection</a></li><li class="toc-h3"><a href="#container-identity--configuration">Container identity &amp; configuration</a></li><li class="toc-h3"><a href="#networking">Networking</a></li><li class="toc-h3"><a href="#feature-flags">Feature flags</a></li><li class="toc-h3"><a href="#resource-limits">Resource limits</a></li><li class="toc-h3"><a href="#bind-mounts">Bind mounts</a></li><li class="toc-h2"><a href="#4-configuration-files">4. Configuration files</a></li><li class="toc-h2"><a href="#5-common-workflows">5. Common workflows</a></li><li class="toc-h3"><a href="#running-with-a-config-file">Running with a config file</a></li><li class="toc-h3"><a href="#persistent-development">Persistent development</a></li><li class="toc-h3"><a href="#nat-isolation-with-port-forwarding">NAT isolation with port forwarding</a></li><li class="toc-h3"><a href="#nat-with-a-pinned-uplink">NAT with a pinned uplink</a></li><li class="toc-h3"><a href="#gateway-mode-lan-owned-by-openwrt">Gateway mode (LAN owned by OpenWRT)</a></li><li class="toc-h3"><a href="#macvlan-mode-a-real-address-on-a-wired-lan">Macvlan mode (a real address on a wired LAN)</a></li><li class="toc-h3"><a href="#ephemeral-testing">Ephemeral testing</a></li><li class="toc-h3"><a href="#one-off-commands">One-off commands</a></li><li class="toc-h3"><a href="#gpu-acceleration">GPU acceleration</a></li><li class="toc-h3"><a href="#deep-customization-privileged-mode">Deep customization (privileged mode)</a></li><li class="toc-h2"><a href="#6-advanced-usage--lifecycle">6. Advanced usage &amp; lifecycle</a></li><li class="toc-h3"><a href="#container-recovery">Container recovery</a></li><li class="toc-h2"><a href="#7-system-requirements">7. System requirements</a></li><li class="toc-h2"><a href="#next-steps">Next steps</a></li></ul></nav>
581609
</aside>
582610
<footer class="footer">
583611
<div class="footer-inner">

‎docs/networking-from-zero.html‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -672,6 +672,7 @@ <h2 id="part-11-comparing-all-networking-modes">Part 11: Comparing all networkin
672672
<th>Host Mode</th>
673673
<th>None Mode</th>
674674
<th>Gateway Mode</th>
675+
<th>Macvlan Mode</th>
675676
</tr>
676677
</thead>
677678
<tbody>
@@ -681,62 +682,71 @@ <h2 id="part-11-comparing-all-networking-modes">Part 11: Comparing all networkin
681682
<td>Android (shared)</td>
682683
<td>Nobody (loopback only)</td>
683684
<td>OpenWRT dnsmasq</td>
685+
<td>The LAN's DHCP server (your router)</td>
684686
</tr>
685687
<tr>
686688
<td>Who does NAT?</td>
687689
<td>Droidspaces iptables</td>
688690
<td>Android</td>
689691
<td>N/A</td>
690692
<td>OpenWRT (via Droidspaces NAT on OpenWRT's WAN)</td>
693+
<td>Your router, as for any LAN device</td>
691694
</tr>
692695
<tr>
693696
<td>Who manages firewall?</td>
694697
<td>Droidspaces</td>
695698
<td>Android</td>
696699
<td>N/A</td>
697700
<td>OpenWRT</td>
701+
<td>The container itself</td>
698702
</tr>
699703
<tr>
700704
<td>Who manages DNS?</td>
701705
<td>Droidspaces</td>
702706
<td>Android</td>
703707
<td>Nobody</td>
704708
<td>OpenWRT dnsmasq</td>
709+
<td>The LAN's DHCP server</td>
705710
</tr>
706711
<tr>
707712
<td>Container isolated from host network?</td>
708713
<td>Yes</td>
709714
<td>No</td>
710715
<td>Yes</td>
711716
<td>Yes</td>
717+
<td>Yes (the phone cannot even reach it over that NIC)</td>
712718
</tr>
713719
<tr>
714720
<td>Internet access?</td>
715721
<td>Yes</td>
716722
<td>Yes</td>
717723
<td>No</td>
718724
<td>Yes (via gateway container)</td>
725+
<td>Yes (via the LAN's router)</td>
719726
</tr>
720727
<tr>
721728
<td>IPv6?</td>
722729
<td>Yes, with NAT66 (needs kernel support)</td>
723730
<td>Whatever Android has</td>
724731
<td>Loopback only</td>
725732
<td>Yes, once OpenWRT is set up for it (see Part 10)</td>
733+
<td>Whatever the LAN advertises</td>
726734
</tr>
727735
<tr>
728736
<td>Needs a second container to function?</td>
729737
<td>No</td>
730738
<td>No</td>
731739
<td>No</td>
732740
<td>Yes (the gateway container)</td>
741+
<td>No, but a wired NIC and <code>CONFIG_MACVLAN</code></td>
733742
</tr>
734743
<tr>
735744
<td>Good for</td>
736745
<td>Simple internet access</td>
737746
<td>Maximum performance, no veth or bridge in the path</td>
738747
<td>Offline / sandboxed workloads</td>
739748
<td>Router appliance, VPN gateway, segmented LANs</td>
749+
<td>A real LAN address, OpenWRT on a physical LAN</td>
740750
</tr>
741751
</tbody>
742752
</table></div>

‎docs/search.json‎

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

‎index.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ <h1>A homelab that keeps running when the power cuts.</h1>
127127
<a href="/downloads.html" class="button button-filled"><span class="icon" aria-hidden="true">download</span>Download</a>
128128
<a href="/docs/" class="button button-outlined"><span class="icon" aria-hidden="true">menu_book</span>Documentation</a>
129129
</div>
130-
<p class="body-md">Release <span data-version>v6.6.0</span>, GPLv3. <span data-stars>2,291</span> stars and <span data-contributors>89</span> contributors <a href="https://github.com/ravindu644/Droidspaces-OSS" rel="noopener noreferrer">on GitHub</a>.</p>
130+
<p class="body-md">Release <span data-version>v6.6.0</span>, GPLv3. <span data-stars>2,292</span> stars and <span data-contributors>89</span> contributors <a href="https://github.com/ravindu644/Droidspaces-OSS" rel="noopener noreferrer">on GitHub</a>.</p>
131131
</div>
132132
<div class="stage">
133133
<div class="shape arrive" style="--shape: url(/assets/shapes/cookie-12.svg)"></div>

0 commit comments

Comments
 (0)