[Bug 2017840] Re: ifupdown resolved script has typo

CH 2017840 at bugs.launchpad.net
Tue May 2 01:37:37 UTC 2023


Whoops, found another bug:

```
# ifup enp2s0

/etc/network/if-up.d/resolved: 1: /run/network/ifupdown-inet-enp2s0: DNS=1.1.1.1: not found
/etc/network/if-up.d/resolved: 2: /run/network/ifupdown-inet-enp2s0: DOMAINS=example.org: not found
Failed to parse DNS server address: DNS
Failed to set DNS configuration: Invalid argument

# cat /run/network/ifupdown-inet-enp2s0

"DNS"="1.1.1.1"
"DOMAINS"="example.org"
```

And that comes from lines 47-51 of /etc/network/if-up.d/resolved:
```
    if  [ -n "$NEW_DNS" ]; then
        cat <<EOF >"$mystatedir/ifupdown-${ADDRFAM}-$interface"
"$DNS"="$NEW_DNS"
EOF
        if  [ -n "$NEW_DOMAINS" ]; then
            cat <<EOF >>"$mystatedir/ifupdown-${ADDRFAM}-$interface"
"$DOMAINS"="$NEW_DOMAINS"
EOF
```
Basically, the double-quotes around "$DNS" and "$DOMAINS" shouldn't be there, because it's a here-doc.

But this reveals another bug: the variable $DOMAINS is used to hold
either "DOMAINS" or "DOMAINS6" in lines 41 or 44, but the actual search
domains in line 95.

Has this code ever worked?

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/2017840

Title:
  ifupdown resolved script has typo

Status in systemd package in Ubuntu:
  New

Bug description:
  This error happens when you try to run ifup or ifdown:

  ```
  # ifdown enp3s0
  /etc/network/if-down.d/resolved: 12: mystatedir: not found

  # ifup enp3s0
  /etc/network/if-up.d/resolved: 12: mystatedir: not found
  ```

  Here's the first 12 lines of those scripts:
  ```
  # head -n 12 /etc/network/if-up.d/resolved

  #!/bin/sh
  #
  # Script fragment to make ifupdown supply DNS infromation to resolved
  #

  case "$ADDRFAM" in
      inet|inet6) : ;;
      *) exit 0 ;;
  esac

  if systemctl is-enabled systemd-resolved > /dev/null 2>&1; then
      mystatedir statedir ifindex interface
  ```

  I'm thinking that the word `local` used to appear before `mystatedir`
  on line 12, but that was when it was a function.  When it was
  converted back from being a function, the 'local' keyword was removed,
  but the variables remained.

  Either make it into a function again, or delete line 12.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/2017840/+subscriptions




More information about the foundations-bugs mailing list