<!DOCTYPE html><html><head><title></title><style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style></head><body><div>I believe you want KeepConfiguration="static".</div><div><br></div><div>On Wed, Sep 13, 2023, at 18:32, Jeremy Friesner wrote:<br></div><blockquote type="cite" id="qt" style=""><div name="messageBodySection"><div dir="auto"><div><span style="color:rgb(0, 0, 0);"><span class="font" style="font-family:Helvetica;"><span class="size" style="font-size:12px;">Hi all,</span></span></span><span class="size" style="font-size:12px;"><br> </span><span class="size" style="font-size:12px;"><br> </span><span style="color:rgb(0, 0, 0);"><span class="font" style="font-family:Helvetica;"><span class="size" style="font-size:12px;">I apologize for this basic question, but I haven’t been able to figure it out on my own.</span></span></span><span class="size" style="font-size:12px;"><br> </span><span class="size" style="font-size:12px;"><br> </span><span style="color:rgb(0, 0, 0);"><span class="font" style="font-family:Helvetica;"><span class="size" style="font-size:12px;">I’m working on an embedded device, which includes a little GUI that (among other things) allows the user to specify a static IPv4 address (and netmask and gateway) to be associated with
 a given Ethernet port on the device.</span></span></span><span class="size" style="font-size:12px;"><br> </span><span class="size" style="font-size:12px;"><br> </span><span style="color:rgb(0, 0, 0);"><span class="font" style="font-family:Helvetica;"><span class="size" style="font-size:12px;">The user enters the IPv4 settings-values he wants into the GUI, clicks “Apply”, and the server runs a couple of simple shell commands:</span></span></span><span class="size" style="font-size:12px;"><br> </span><span class="size" style="font-size:12px;"><br> </span><span style="color:rgb(0, 0, 0);"><span class="font" style="font-family:Helvetica;"><span class="size" style="font-size:12px;"><span style="text-wrap:nowrap;">/sbin/ip -4 a add 192.168.2.88/24 dev eno1 label eno1:p0s0</span></span></span></span><span class="size" style="font-size:12px;"><br> </span><span style="color:rgb(0, 0, 0);"><span class="font" style="font-family:Helvetica;"><span class="size" style="font-size:12px;"><span style="text-wrap:nowrap;">/bin/arping -c 3 -A -I eno1 192.168.2.88</span></span></span></span><span class="size" style="font-size:12px;"><br> </span><span class="size" style="font-size:12px;"><br> </span><span style="color:rgb(0, 0, 0);"><span class="font" style="font-family:Helvetica;"><span class="size" style="font-size:12px;">… et voila, Ethernet device eno1 now uses the IP address 192.168.2.88 (associated with the label eno1:p0s0), as shown in ifconfig:</span></span></span><span class="size" style="font-size:12px;"><br> </span><span class="size" style="font-size:12px;"><br> </span><span style="text-wrap:nowrap;">root@embedded-device:~# ifconfig</span></div><div> <span style="text-wrap:nowrap;">[…]</span><br></div><div> <span style="text-wrap:nowrap;"></span><br></div><div> <span style="text-wrap:nowrap;">eno1:p0s0 Link encap:Ethernet HWaddr 00:07:32:95:93:7D </span><br></div><div> <span style="text-wrap:nowrap;">inet addr:192.168.2.88 Bcast:0.0.0.0 Mask:255.255.255.0</span><br></div><div> <span style="text-wrap:nowrap;">UP BROADCAST MULTICAST MTU:1500 Metric:1</span><br></div><div> <span style="text-wrap:nowrap;">Memory:a5b00000-a5b1ffff</span><br></div><div> <br></div><div> <span style="color:rgb(0, 0, 0);"><span class="font" style="font-family:Helvetica;"><span class="size" style="font-size:12px;">If the user later changes his mind and wants to clear his IPv4 settings, he can do that and the server will run this shell command:</span></span></span><span class="size" style="font-size:12px;"><br> </span><span class="size" style="font-size:12px;"><br> </span><span style="color:rgb(0, 0, 0);"><span class="font" style="font-family:Helvetica;"><span class="size" style="font-size:12px;"><span style="text-wrap:nowrap;">/sbin/ip -4 addr flush label eno1:p0s0</span></span></span></span><span class="size" style="font-size:12px;"><br> </span><span class="size" style="font-size:12px;"><br> </span><span style="color:rgb(0, 0, 0);"><span class="font" style="font-family:Helvetica;"><span class="size" style="font-size:12px;">This all works fine and has for a long time; the problem is that the new version of the device is running systemd.networkd and networkd has some functionality in it where it detects when
 an Ethernet device has lost its carrier, and responds by removing all the IPv4 addresses associated with that Ethernet device.</span></span></span><span class="size" style="font-size:12px;"><br> </span><span class="size" style="font-size:12px;"><br> </span><span style="color:rgb(0, 0, 0);"><span class="font" style="font-family:Helvetica;"><span class="size" style="font-size:12px;">The user-visible result of that behavior is that if the user unplugs his Ethernet cable and then plugs it in again, his IPv4 settings are no longer in effect (at least not until he goes
 and re-enters them into the GUI again to re-establish them).</span></span></span><span class="size" style="font-size:12px;"><br> </span><span class="size" style="font-size:12px;"><br> </span><span style="color:rgb(0, 0, 0);"><span class="font" style="font-family:Helvetica;"><span class="size" style="font-size:12px;">The behavior I would like is that this manually-assigned IPv4 address is left alone by systemd, and doesn’t change unless/until the user explicitly updates it using the GUI.  Is there
 some way to convince networkd to leave my server’s IPv4 settings alone?</span></span></span><span class="size" style="font-size:12px;"><br> </span><span class="size" style="font-size:12px;"><br> </span><span style="color:rgb(0, 0, 0);"><span class="font" style="font-family:Helvetica;"><span class="size" style="font-size:12px;">I tried various permutations of config files, like the one shown below, but they didn’t seem to have any effect on networkd's behavior.</span></span></span><span class="size" style="font-size:12px;"><br> </span><span class="size" style="font-size:12px;"><br> </span><span style="color:rgb(0, 0, 0);"><span class="font" style="font-family:Helvetica;"><span class="size" style="font-size:12px;"><span style="text-wrap:nowrap;"></span></span></span></span>root@embedded-device:~# cat /etc/systemd/network/eno1.network </div><div> <span style="text-wrap:nowrap;">[Match]</span><br></div><div> <span style="text-wrap:nowrap;">Name=eno1</span><br></div><div> <br></div><div> <span style="text-wrap:nowrap;">[Network]</span><br></div><div> <span style="text-wrap:nowrap;">DHCP=no</span><br></div><div> <span style="text-wrap:nowrap;">IgnoreCarrierLoss=yes</span><br></div><div> <br></div><div> <span style="text-wrap:nowrap;">[Link]</span><br></div><div> <span style="text-wrap:nowrap;">ActivationPolicy=always-up</span><br></div><div> <br></div><div> Thanks,<br></div><div> Jeremy<br></div></div></div><div>NOTICE: This email may contain confidential information. Please see https://meyersound.com/legal/#email-policy for our complete policy.<br></div></blockquote></body></html>