[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-05-01 Thread Marc Olzheim
I'm sorry, but if this means that in the default configuration this is
no longer working, how is this not a regression ?

Should the default configuration not be so that both bind9 and libvirtd
can be installed and used without issue as was the case before the
dnsmasq update?

Breaking this within an LTS release does not sounds right to me.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  Invalid

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
 

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-04-10 Thread Bryce Harrington
** Tags removed: server-todo

** Tags removed: regression-update

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  Invalid

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
  726 
  727   if (dienow)
  728 {
  729   /* failure to bind addresses given by --listen-address at 
this
  729  point
  730  is OK if we're doing bind-dynamic */
  731   if (!option_bool(OPT_CLEVERBIND))
  

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-04-10 Thread Athos Ribeiro
Moving to invalid as per the last comment.

** Changed in: dnsmasq (Ubuntu)
   Status: Confirmed => Invalid

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  Invalid

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
  726 
  727   if (dienow)
  728 {
  729   /* failure to bind addresses given by --listen-address at 
this
  729  point
  730  is OK if we're doing bind-dynamic */
  731   

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-04-09 Thread Sergio Durigan Junior
I talked to Marc to understand whether the security team had any plans
to "fix" this problem, and he raised a valid point: from his perspective
(and the Security team's as well, I gather), this is not a bug because
we have two services trying to listen on the same port.  The "fix" here
is to adjust the local configuration, as mentioned in the comments
above.

I'm reverting this bug's state to Invalid, then.

** Changed in: dnsmasq (Ubuntu)
 Assignee: Sergio Durigan Junior (sergiodj) => (unassigned)

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  Confirmed

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to 

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-04-03 Thread Robie Basak
** Tags added: regression-update

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  Confirmed

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
  726 
  727   if (dienow)
  728 {
  729   /* failure to bind addresses given by --listen-address at 
this
  729  point
  730  is OK if we're doing bind-dynamic */
  731   if (!option_bool(OPT_CLEVERBIND))
  732 die(s, 

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-04-02 Thread Sergio Durigan Junior
I was able to reproduce the bug on Focal, and since we seem to carry the
same version on Jammy/Mantic (and likely Noble), it's probable that the
bug also happens in those releases.

For future reference:

# apt install -y libvirt-daemon-system bind9 dnsmasq

Reboot, and try bringing up the "default" network on libvirt:

# virsh net-start default
error: Failed to start network default
error: internal error: Child process (VIR_BRIDGE_NAME=virbr0 /usr/sbin/dnsmasq 
--conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro 
--dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper) unexpected exit status 2: 
dnsmasq: failed to create listening socket for 192.168.122.1: Address already 
in use

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  Confirmed

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, 

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-27 Thread Bryce Harrington
** Changed in: dnsmasq (Ubuntu)
 Assignee: (unassigned) => Sergio Durigan Junior (sergiodj)

** Tags removed: server-triage-discuss
** Tags added: server-todo

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  Confirmed

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
  726 
  727   if (dienow)
  728 {
  729   /* failure to bind addresses given by --listen-address at 
this
  729  point
  730  

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-27 Thread Athos Ribeiro
** Tags added: server-triage-discuss

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  Confirmed

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
  726 
  727   if (dienow)
  728 {
  729   /* failure to bind addresses given by --listen-address at 
this
  729  point
  730  is OK if we're doing bind-dynamic */
  731   if (!option_bool(OPT_CLEVERBIND))
  732 die(s, 

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-26 Thread Launchpad Bug Tracker
Status changed to 'Confirmed' because the bug affects multiple users.

** Changed in: dnsmasq (Ubuntu)
   Status: New => Confirmed

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  Confirmed

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
  726 
  727   if (dienow)
  728 {
  729   /* failure to bind addresses given by --listen-address at 
this
  729  point
  730  is OK if we're doing 

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-26 Thread Jeff Lane 
-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  Confirmed

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
  726 
  727   if (dienow)
  728 {
  729   /* failure to bind addresses given by --listen-address at 
this
  729  point
  730  is OK if we're doing bind-dynamic */
  731   if (!option_bool(OPT_CLEVERBIND))
  732 die(s, daemon->addrbuff, EC_BADNET);
  733 

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-26 Thread Jeff Lane 
Something in a recent dnsmasq update broke KVM. I hit the same and found
a workaround that gets me rolling again wtih KVM guests at least
here's a quick shell summary:

bladernr@galactica:~$ sudo virsh net-start default
error: Failed to start network default
error: internal error: Child process (VIR_BRIDGE_NAME=virbr0 /usr/sbin/dnsmasq 
--conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro 
--dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper) unexpected exit status 2: 
dnsmasq: failed to create listening socket for 192.168.123.1: Address already 
in use

bladernr@galactica:~$ sudo virsh net-list
 Name   State   Autostart   Persistent


bladernr@galactica:~$ sudo apt-cache policy dnsmasq-base
dnsmasq-base:
  Installed: 2.90-0ubuntu0.23.10.1
  Candidate: 2.90-0ubuntu0.23.10.1
  Version table:
 *** 2.90-0ubuntu0.23.10.1 500
500 http://archive.ubuntu.com/ubuntu mantic-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu mantic-security/main amd64 
Packages
100 /var/lib/dpkg/status
 2.89-1 500
500 http://archive.ubuntu.com/ubuntu mantic/main amd64 Packages

bladernr@galactica:~$ sudo apt install dnsmasq-base=2.89-1
bladernr@galactica:~$ sudo virsh net-start default
Network default started

bladernr@galactica:~$ sudo virsh net-list
 Name  StateAutostart   Persistent

 default   active   yes yes

as you can see, as a workaround, reverting to the original Mantic
version allows the NAT network to start and I can once again launch KVM
guests on my machine.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  Confirmed

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-22 Thread Mitchell Dzurick
Thanks Tim! With more people having a seemingly similar issue I re-
opened it as New and subscribed ubuntu-server to take a look at this
again.

** Changed in: dnsmasq (Ubuntu)
   Status: Invalid => New

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  New

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
  726 
  727   if (dienow)
  728 {
  729   /* failure to bind addresses given by --listen-address at 
this
  

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-21 Thread Tim Chevalier
I found this bug report after experiencing the same problem. The error
message I got was exactly the same as the one in comment #2. The fix
suggested by Kazuhiro in comment #9 fixed the problem.

I think that since this bug affects more than one person, it's not
merely a problem with one person's local environment. I didn't have
occasion to use KVM between 2024-02-27 and today, but it was working for
me before then and I didn't manually change anything in my environment.
I don't know enough about Ubuntu networking to say whether it's a bug in
dnsmasq or another component, but surely a package upgrade shouldn't
break something like this.

$ cat /var/log/apt/history.log.1
(snip)
Start-Date: 2024-02-27  06:19:38
Commandline: /usr/bin/unattended-upgrade
Upgrade: dnsmasq-base:amd64 (2.89-1, 2.90-0ubuntu0.23.10.1)
End-Date: 2024-02-27  06:19:42
(snip)

$ cat /etc/issue
Ubuntu 23.10 \n \l

$ virsh --version
9.6.0
$ /usr/sbin/dnsmasq --version
Dnsmasq version 2.90  Copyright (c) 2000-2024 Simon Kelley
Compile time options: IPv6 GNU-getopt DBus no-UBus i18n IDN2 DHCP DHCPv6 no-Lua 
TFTP conntrack ipset nftset auth cryptohash DNSSEC loop-detect inotify dumpfile

This software comes with ABSOLUTELY NO WARRANTY.
Dnsmasq is free software, and you are welcome to redistribute it
under the terms of the GNU General Public License, version 2 or 3
$

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  Invalid

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, 

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-15 Thread Joe Blow
Adding  the lines:

  listen-on port 53 { localhost; 192.168.122.0/24; };
  allow-query { localhost; 192.168.122.0/24; };

to /etc/bind/named.conf.options helped

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  Invalid

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
  726 
  727   if (dienow)
  728 {
  729   /* failure to bind addresses given by --listen-address at 
this
  729  point
  730  is 

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-04 Thread Marc Deslauriers
I am marking this bug as "invalid" per your last comment. Thanks!

** Changed in: dnsmasq (Ubuntu)
   Status: New => Invalid

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  Invalid

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
  726 
  727   if (dienow)
  728 {
  729   /* failure to bind addresses given by --listen-address at 
this
  729  point
  730  is OK if we're doing bind-dynamic 

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-04 Thread Kazuhiro MIYASHITA
After starting named with my named.conf.options setting, I manually
generated virbr0 with brctl and set the IP address (192.168.122.1), and
named started listening to 192.168.122.1 using TCP.

$ cat /etc/bind/named.conf.options
options {
  directory "/var/cache/bind";

  // If there is a firewall between you and nameservers you want
  // to talk to, you may need to fix the firewall to allow multiple
  // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

  // If your ISP provided one or more IP addresses for stable 
  // nameservers, you probably want to use them as forwarders.  
  // Uncomment the following block, and insert the addresses replacing 
  // the all-0's placeholder.

  // forwarders {
  //  0.0.0.0;
  // };

  //
  // If BIND logs error messages about the root key being expired,
  // you will need to update your keys.  See https://www.isc.org/bind-keys
  //
  dnssec-validation auto;
  listen-on port 53 { localhost; 192.168.122.0/24; };
  allow-query { localhost; 192.168.122.0/24; };
};
$ 


Because of this behavior, I think that the operations of dnsmasq and named 
conflicted, resulting in an error on the dnsmasq side(the second make_sock() 
with SOCK_STREAM).

This named is started because it is necessary, but I understand that the
VM host should not run many processes, so the name resolution function
is not run on the VM host, but on another I'm planning to move to a
server.

I understood where the problem is. Thank you very much for your cooperation.
I initially reported it as a bug in dnsmasq, but it turned out to be a problem 
in my environment.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  New

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it 

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-04 Thread Marc Deslauriers
By default bind will listen on all interfaces. I don't understand why
we're not seeing anything listening on 192.168.122.1 but you are still
getting the error message.

I suggest adding a listen-on directive to your
/etc/bind/named.conf.options file, restarting bind, and seeing if
libvirt will now successfully listen on virbr0.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  New

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
  726 
  727  

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-04 Thread Kazuhiro MIYASHITA
> Out of curiosity, what is the contents of your /etc/dnsmasq.d
directory? Is there a symlink in there to
/etc/dnsmasq.d-available/libvirt-daemon? What is the contents of that
file?

$ ls -l  /etc/dnsmasq.d 
total 0
lrwxrwxrwx 1 root root 39 Aug 29  2020 libvirt-daemon -> 
/etc/dnsmasq.d-available/libvirt-daemon
$ cat /etc/dnsmasq.d-available/libvirt-daemon
bind-interfaces
except-interface=virbr0
$ 


> Do you know what else could be listening on that interface? What's the output 
> of "sudo netstat --tcp --udp --listening --programs --numeric"?

$ sudo netstat --tcp --udp --listening --programs --numeric 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address   Foreign Address State   
PID/Program name
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 192.168.0.2:53  0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:530.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.53:53   0.0.0.0:*   LISTEN  
979/systemd-resolve 
tcp0  0 0.0.0.0:22  0.0.0.0:*   LISTEN  
1308/sshd: /usr/sbi 
tcp0  0 127.0.0.1:631   0.0.0.0:*   LISTEN  
995/cupsd   
tcp0  0 127.0.0.1:953   0.0.0.0:*   LISTEN  
1078/named  
tcp0  0 127.0.0.1:6010  0.0.0.0:*   LISTEN  
2530/sshd: miyakz@p 
tcp0  0 127.0.0.1:6011  0.0.0.0:*   LISTEN  
2758/sshd: miyakz@p 
tcp6   0  0 ::1:53  :::*LISTEN  
1078/named  
tcp6   0  0 ::1:53  :::*LISTEN  
1078/named  
tcp6   0  0 ::1:53  :::*LISTEN  
1078/named  
tcp6   0  0 ::1:53  :::*  

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-02 Thread Marc Deslauriers
** Information type changed from Public to Public Security

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  New

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
  726 
  727   if (dienow)
  728 {
  729   /* failure to bind addresses given by --listen-address at 
this
  729  point
  730  is OK if we're doing bind-dynamic */
  731   if (!option_bool(OPT_CLEVERBIND))
  732  

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-02 Thread Marc Deslauriers
Do you know what else could be listening on that interface? What's the
output of "netstat --tcp --udp --listening --programs --numeric"?

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  New

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
  726 
  727   if (dienow)
  728 {
  729   /* failure to bind addresses given by --listen-address at 
this
  729  point
  730  is OK if we're doing 

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-02 Thread Marc Deslauriers
I will prepare updates for testing with the problematic commit reverted.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  New

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
  726 
  727   if (dienow)
  728 {
  729   /* failure to bind addresses given by --listen-address at 
this
  729  point
  730  is OK if we're doing bind-dynamic */
  731   if (!option_bool(OPT_CLEVERBIND))
 

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-02 Thread Marc Deslauriers
Out of curiosity, what is the contents of your /etc/dnsmasq.d directory?
Is there a symlink in there to /etc/dnsmasq.d-available/libvirt-daemon?
What is the contents of that file?

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  New

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 close (fd);
  724 
  725   errno = errsave;
  726 
  727   if (dienow)
  728 {
  729   /* failure to bind addresses given by --listen-address at 
this
  729  point
  730   

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-02 Thread Marc Deslauriers
Thanks for filing this bug, and the excellent analysis.

So it looks like the dnsmasq change was introduced here:
https://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=commit;h=744231d99505cdead314d13506b5ff8c44a13088

That was in response to this mailing list discussion:
https://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2023q4/017333.html

I think we need to report this issue upstream, perhaps we can revert
that commit in the meantime.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  New

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if 

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-02 Thread Kazuhiro MIYASHITA
The error that I got is follow.

$ virsh net-start default
error: Failed to start network default
error: internal error: Child process (VIR_BRIDGE_NAME=virbr0 /usr/sbin/dnsmasq 
--conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro 
--dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper) unexpected exit status 2: 
dnsmasq: failed to create listening socket for 192.168.122.1: Address already 
in use
$

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  New

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d", port);
  720   s = _("failed to create listening socket for %s: %s");
  721   
  722   if (fd != -1)
  723 

[Touch-packages] [Bug 2055776] Re: After updating ubuntu, the network to which the subnet address is assigned does not become active in KVM.

2024-03-02 Thread Kazuhiro MIYASHITA
my environment is as follows.


$ cat /etc/issue
Ubuntu 20.04.5 LTS \n \l

$ virsh --version
6.0.0
$ /usr/sbin/dnsmasq --version
Dnsmasq version 2.90  Copyright (c) 2000-2024 Simon Kelley
Compile time options: IPv6 GNU-getopt no-DBus no-UBus no-i18n no-IDN DHCP 
DHCPv6 no-Lua TFTP no-conntrack ipset no-nftset auth no-cryptohash no-DNSSEC 
loop-detect inotify dumpfile

This software comes with ABSOLUTELY NO WARRANTY.
Dnsmasq is free software, and you are welcome to redistribute it
under the terms of the GNU General Public License, version 2 or 3.
$

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dnsmasq in Ubuntu.
https://bugs.launchpad.net/bugs/2055776

Title:
  After updating ubuntu, the network to which the subnet address is
  assigned does not become active in KVM.

Status in dnsmasq package in Ubuntu:
  New

Bug description:
  phenomenon:
After updating ubuntu, the network to which the subnet address is assigned 
does not become active in KVM.

  Cause:
This is because the following dnsmasq update operation performed by apt's 
automatic update causes an error. It worked properly with dnsmasq 2.80, but 
does not work properly with 2.90.

  $ cat /var/log/apt/history.log
  (snip)
  Start-Date: 2024-02-27  06:17:31
  Commandline: /usr/bin/unattended-upgrade
  Upgrade: dnsmasq-base:amd64 (2.80-1.1ubuntu1.7, 2.90-0ubuntu0.20.04.1)
  End-Date: 2024-02-27  06:17:44
  (snip)
  $

  Cause details:
As a premise, bind-dynamic is set in the dnsmasq config file for KVM. Below 
is an example.

  $ cat default.conf 
  ##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
  ##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
  ##virsh net-edit default
  ## or other application using the libvirt API.
  ##
  ## dnsmasq conf file created by libvirt
  strict-order
  user=libvirt-dnsmasq
  pid-file=/run/libvirt/network/default.pid
  except-interface=lo
  bind-dynamic
  interface=virbr0
  dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
  dhcp-no-override
  dhcp-authoritative
  dhcp-lease-max=253
  dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
  addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
  $ 

  
  When starting the network with KVM (virsh net-start), dnsmasq started from 
KVM executes the make_sock function twice as shown below.

 $ cat network.c
 (snip)
 1087 static struct listener *create_listeners(union mysockaddr *addr, int 
do_
 1087 tftp, int dienow)
 1088 {
 1089   struct listener *l = NULL;
 1090   int fd = -1, tcpfd = -1, tftpfd = -1;
 1091 
 1092   (void)do_tftp;
 1093 
 1094   if (daemon->port != 0)
 1095 {
 1096   fd = make_sock(addr, SOCK_DGRAM, dienow);
 1097   tcpfd = make_sock(addr, SOCK_STREAM, dienow);
 1098 }
 (snip)

  The following code causes an issue with the update made in dnsmasq
  2.90.

 $ cat network.c
 (snip)
  895 static int make_sock(union mysockaddr *addr, int type, int dienow)
  896 {
  (snip)
  934   if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
  935 {
  936   if (dienow)
  937 die(s, daemon->addrbuff, EC_BADNET);
  938   else
  939 my_syslog(LOG_WARNING, s, daemon->addrbuff, 
strerror(errno))939 ;
  940 }
  (snip)

  
  function "make_sock" in network.c:1096 binds the socket to 192.168.122.1/24, 
and then make_sock in network.c:1097 tries to bind to the same address. 
However, in network.c:934, when errno==98 occurs, network.c:937 is executed, so 
dnsmasq does not cause a startup error. As a result, virsh net-start fails.

  As a temporary workaround, it will work if you try not to die.

  $ diff -u  network_c_back  network.c 
  --- network_c_back  2024-02-29 15:36:05.156467935 +
  +++ network.c 2024-02-29 15:36:38.733324350 +
  @@ -934,7 +934,8 @@
 if (!option_bool(OPT_CLEVERBIND) || errno != EADDRNOTAVAIL)
{
  if (dienow)
  - die(s, daemon->addrbuff, EC_BADNET);
  + my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
  + //die(s, daemon->addrbuff, EC_BADNET);
  else
my_syslog(LOG_WARNING, s, daemon->addrbuff, strerror(errno));
}
  $ 

  If bind-dynamic is set, it should be modified so that it works even if
  errno==98.

  For reference, in the case of dnsmasq 2.80, the code is as follows, so
  no error occurs.

  network.c
  699 static int make_sock(union mysockaddr *addr, int type, int dienow)
  700 {
  701   int family = addr->sa.sa_family;
  702   int fd, rc, opt = 1;
  (snip)
  715 err:
  716   errsave = errno;
  717   port = prettyprint_addr(addr, daemon->addrbuff);
  718   if (!option_bool(OPT_NOWILD) && !option_bool(OPT_CLEVERBIND))
  719 sprintf(daemon->addrbuff, "port %d",