aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel J Walsh <dwalsh@redhat.com>2022-02-01 15:58:27 -0500
committerMatthew Heon <matthew.heon@pm.me>2022-02-03 16:21:26 -0500
commit48f10e1d0d5873c7baa0613156294307f8c9942d (patch)
treeb750ce0e49a68f2282b7bdb602334e2696087cdd
parent938d5152ca6a2e347cd62aaba25c178fd077a235 (diff)
downloadpodman-48f10e1d0d5873c7baa0613156294307f8c9942d.tar.gz
podman-48f10e1d0d5873c7baa0613156294307f8c9942d.tar.bz2
podman-48f10e1d0d5873c7baa0613156294307f8c9942d.zip
Move each search dns to its own line
Alpine does not seem to use search correctly when there are multiple search domains on the same line. It only uses the first with the advent. When podman runs within a separate network we are appending on dns.podman as a search, if you add a search domain, then this causes the local search on network to fail. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
-rw-r--r--cmd/podman/common/netflags.go10
-rw-r--r--pkg/resolvconf/resolvconf.go8
-rw-r--r--test/system/500-networking.bats7
3 files changed, 13 insertions, 12 deletions
diff --git a/cmd/podman/common/netflags.go b/cmd/podman/common/netflags.go
index cfe4956b0..9dfe81d62 100644
--- a/cmd/podman/common/netflags.go
+++ b/cmd/podman/common/netflags.go
@@ -103,7 +103,7 @@ func NetFlagsToNetOptions(opts *entities.NetOptions, flags pflag.FlagSet) (*enti
opts = &entities.NetOptions{}
}
- if flags.Changed("add-hosts") {
+ if flags.Changed("add-host") {
opts.AddHosts, err = flags.GetStringSlice("add-host")
if err != nil {
return nil, err
@@ -178,11 +178,9 @@ func NetFlagsToNetOptions(opts *entities.NetOptions, flags pflag.FlagSet) (*enti
}
}
- if flags.Changed("no-host") {
- opts.NoHosts, err = flags.GetBool("no-hosts")
- if err != nil {
- return nil, err
- }
+ opts.NoHosts, err = flags.GetBool("no-hosts")
+ if err != nil {
+ return nil, err
}
// parse the network only when network was changed
diff --git a/pkg/resolvconf/resolvconf.go b/pkg/resolvconf/resolvconf.go
index f23cd61b0..d7505e049 100644
--- a/pkg/resolvconf/resolvconf.go
+++ b/pkg/resolvconf/resolvconf.go
@@ -221,11 +221,9 @@ func GetOptions(resolvConf []byte) []string {
// dnsSearch, and an "options" entry for every element in dnsOptions.
func Build(path string, dns, dnsSearch, dnsOptions []string) (*File, error) {
content := bytes.NewBuffer(nil)
- if len(dnsSearch) > 0 {
- if searchString := strings.Join(dnsSearch, " "); strings.Trim(searchString, " ") != "." {
- if _, err := content.WriteString("search " + searchString + "\n"); err != nil {
- return nil, err
- }
+ for _, search := range dnsSearch {
+ if _, err := content.WriteString("search " + search + "\n"); err != nil {
+ return nil, err
}
}
for _, dns := range dns {
diff --git a/test/system/500-networking.bats b/test/system/500-networking.bats
index 9f70c1c6c..e54b8d26a 100644
--- a/test/system/500-networking.bats
+++ b/test/system/500-networking.bats
@@ -597,7 +597,7 @@ load helpers
searchIP="100.100.100.100"
cat >$containersconf <<EOF
[containers]
- dns_searches = [ "example.com"]
+ dns_searches = [ "example.com", "test1.com"]
dns_servers = [
"1.1.1.1",
"$searchIP",
@@ -605,9 +605,14 @@ load helpers
"8.8.8.8",
]
EOF
+export searchDNS="search example.com
+search test1.com
+search a.b"
CONTAINERS_CONF=$containersconf run_podman run --rm $IMAGE grep "example.com" /etc/resolv.conf
CONTAINERS_CONF=$containersconf run_podman run --rm $IMAGE grep $searchIP /etc/resolv.conf
is "$output" "nameserver $searchIP" "Should only be one $searchIP not multiple"
+ CONTAINERS_CONF=$containersconf run_podman run --dns-search a.b --rm $IMAGE grep search /etc/resolv.conf
+ is "$output" "$searchDNS" "Searches should be on different lines"
}
# vim: filetype=sh