Skip to content

Commit

Permalink
aghnet: do not expect dhcpdc.conf to exist
Browse files Browse the repository at this point in the history
  • Loading branch information
ainar-g committed Jun 15, 2021
1 parent 12f1e4e commit aa58f1d
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 14 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ released by then.

### Fixed

- Errors when setting static IP on Linux ([#3257]).
- Treatment of domain names and FQDNs in custom rules with `$dnsrewrite` that
use the `PTR` type ([#3256]).
- Redundant hostname generating while loading static leases with empty hostname
Expand All @@ -73,6 +74,7 @@ released by then.
[#3194]: https://github.com/AdguardTeam/AdGuardHome/issues/3194
[#3198]: https://github.com/AdguardTeam/AdGuardHome/issues/3198
[#3256]: https://github.com/AdguardTeam/AdGuardHome/issues/3256
[#3257]: https://github.com/AdguardTeam/AdGuardHome/issues/3257



Expand Down
22 changes: 11 additions & 11 deletions internal/aghnet/net_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,10 +138,10 @@ func ifaceSetStaticIP(ifaceName string) (err error) {
}

gatewayIP := GatewayIP(ifaceName)
add := updateStaticIPdhcpcdConf(ifaceName, ipNet.String(), gatewayIP, ipNet.IP)
add := updateStaticIPDhcpcdConf(ifaceName, ipNet.String(), gatewayIP, ipNet.IP)

body, err := os.ReadFile("/etc/dhcpcd.conf")
if err != nil {
if err != nil && !errors.Is(err, os.ErrNotExist) {
return err
}

Expand All @@ -154,23 +154,23 @@ func ifaceSetStaticIP(ifaceName string) (err error) {
return nil
}

// updateStaticIPdhcpcdConf sets static IP address for the interface by writing
// into dhcpd.conf.
func updateStaticIPdhcpcdConf(ifaceName, ip string, gatewayIP, dnsIP net.IP) string {
// updateStaticIPDhcpcdConf sets static IP address for the interface by writing
// into dhcpdc.conf.
func updateStaticIPDhcpcdConf(ifaceName, ip string, gatewayIP, dnsIP net.IP) string {
var body []byte

add := fmt.Sprintf("\ninterface %s\nstatic ip_address=%s\n",
ifaceName, ip)
add := fmt.Sprintf(
"\n# %[1]s added by AdGuard Home.\ninterface %[1]s\nstatic ip_address=%s\n",
ifaceName,
ip)
body = append(body, []byte(add)...)

if gatewayIP != nil {
add = fmt.Sprintf("static routers=%s\n",
gatewayIP)
add = fmt.Sprintf("static routers=%s\n", gatewayIP)
body = append(body, []byte(add)...)
}

add = fmt.Sprintf("static domain_name_servers=%s\n\n",
dnsIP)
add = fmt.Sprintf("static domain_name_servers=%s\n\n", dnsIP)
body = append(body, []byte(add)...)

return string(body)
Expand Down
8 changes: 5 additions & 3 deletions internal/aghnet/net_linux_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,22 +103,24 @@ func TestSetStaticIPdhcpcdConf(t *testing.T) {
routers net.IP
}{{
name: "with_gateway",
dhcpcdConf: nl + `interface wlan0` + nl +
dhcpcdConf: nl + `# wlan0 added by AdGuard Home.` + nl +
`interface wlan0` + nl +
`static ip_address=192.168.0.2/24` + nl +
`static routers=192.168.0.1` + nl +
`static domain_name_servers=192.168.0.2` + nl + nl,
routers: net.IP{192, 168, 0, 1},
}, {
name: "without_gateway",
dhcpcdConf: nl + `interface wlan0` + nl +
dhcpcdConf: nl + `# wlan0 added by AdGuard Home.` + nl +
`interface wlan0` + nl +
`static ip_address=192.168.0.2/24` + nl +
`static domain_name_servers=192.168.0.2` + nl + nl,
routers: nil,
}}

for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
s := updateStaticIPdhcpcdConf("wlan0", "192.168.0.2/24", tc.routers, net.IP{192, 168, 0, 2})
s := updateStaticIPDhcpcdConf("wlan0", "192.168.0.2/24", tc.routers, net.IP{192, 168, 0, 2})
assert.Equal(t, tc.dhcpcdConf, s)
})
}
Expand Down

0 comments on commit aa58f1d

Please sign in to comment.