Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.debian.bugs.dist > #1251728 > unrolled thread

Bug#1069897: Netcfg to get search domain

Started byFrédéric Guyot <guyot.frederic26@gmail.com>
First post2025-07-03 12:40 +0200
Last post2025-07-03 14:20 +0200
Articles 2 — 1 participant

Back to article view | Back to linux.debian.bugs.dist

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Bug#1069897: Netcfg to get search domain Frédéric Guyot <guyot.frederic26@gmail.com> - 2025-07-03 12:40 +0200
    Bug#1069897: Netcfg to get search domain Frédéric Guyot <guyot.frederic26@gmail.com> - 2025-07-03 14:20 +0200

#1251728 — Bug#1069897: Netcfg to get search domain

FromFrédéric Guyot <guyot.frederic26@gmail.com>
Date2025-07-03 12:40 +0200
SubjectBug#1069897: Netcfg to get search domain
Message-ID<L4pwd-eVD3-3@gated-at.bofh.it>

[Multipart message — attachments visible in raw view] — view raw

Here is an updated patch for this issue:

--- dhcp.c
+++ dhcp.c
@@ -41,6 +41,7 @@
                                                   "domain",
                                                   "hostname",
                                                   "dns",
+                                                  "search",
                                                   "ntpsrv", /* extra */
                                                   NULL };

@@ -510,7 +511,7 @@
              * nameservers now so we can do rDNS lookups later to possibly
              * find out the domain.
              */
-            netcfg_write_resolv(NULL, interface);
+            netcfg_write_resolv(NULL, NULL, interface);
             state = HOSTNAME;
             break;

@@ -613,7 +614,7 @@
                 netcfg_write_common("", hostname, domain);
                 netcfg_write_loopback();
                 netcfg_write_interface(interface);
-                netcfg_write_resolv(domain, interface);
+                netcfg_write_resolv(domain, search, interface);
 #if !defined(__FreeBSD_kernel__)
                 kill_dhcp_client();
 #endif

--- static.c
+++ static.c
@@ -258,14 +258,16 @@
     return 1;
 }

-int netcfg_write_resolv (const char *domain, const struct
netcfg_interface *interface)
+int netcfg_write_resolv (const char *domain , const char *search,
const struct netcfg_interface *interface)
 {
     FILE* fp = NULL;

     if ((fp = file_open(RESOLV_FILE, "w"))) {
         unsigned int i = 0;
+        if (search && !empty_str(search))
+            fprintf(fp, "search %s\n", search);
         if (domain && !empty_str(domain))
-            fprintf(fp, "search %s\n", domain);
+            fprintf(fp, "domain %s\n", domain);

         for (i = 0; i < NETCFG_NAMESERVERS_MAX; i++)
             if (!empty_str(interface->nameservers[i]))

This should do the trick.

If someone comes across this issue and this patch hasn't been merged
we found an ugly workaround using a preseed file:

d-i preseed/early_command string \
        sed -i '/^case /i domain="$search"' /etc/udhcpc/default.script; \
        mv /sbin/udhcpc /sbin/udhcpc.real; \
        echo '#!/bin/sh' > /sbin/udhcpc; \
        echo 'exec /bin/busybox udhcpc -O search "$@"' >> /sbin/udhcpc; \
        chmod +x /sbin/udhcpc

It will make a wrapper for udhcpc that will force netcfg to query
search domains, patch the default.script callback script from udhcpc
to make domain="$seach".

regards

[toc] | [next] | [standalone]


#1251732

FromFrédéric Guyot <guyot.frederic26@gmail.com>
Date2025-07-03 14:20 +0200
Message-ID<L4r4Z-eWGF-3@gated-at.bofh.it>
In reply to#1251728

[Multipart message — attachments visible in raw view] — view raw

Right so I was wrong, netcfg reads the domain from here: /tmp/domain_name
which is filled by udhcpc default.script
The patch above won't work alone as we would need udhcpc to write the
search domain to a file and make a read function in netcfg to get the info
(or something along those lines)

Here is an updated version of the hack:
d-i preseed/early_command string \
        sed -i 's|printf "\$domain" > /tmp/domain_name|printf "$search" >
/tmp/domain_name|' /etc/udhcpc/default.script; \
        mv /sbin/udhcpc /sbin/udhcpc.real; \
        echo '#!/bin/sh' > /sbin/udhcpc; \
        echo 'exec /bin/busybox udhcpc -O search "$@"' >> /sbin/udhcpc; \
        chmod +x /sbin/udhcpc

On Thu, Jul 3, 2025 at 12:30 PM Frédéric Guyot <guyot.frederic26@gmail.com>
wrote:

> Here is an updated patch for this issue:
>
> --- dhcp.c
> +++ dhcp.c
> @@ -41,6 +41,7 @@
>                                                    "domain",
>                                                    "hostname",
>                                                    "dns",
> +                                                  "search",
>                                                    "ntpsrv", /* extra */
>                                                    NULL };
>
> @@ -510,7 +511,7 @@
>               * nameservers now so we can do rDNS lookups later to possibly
>               * find out the domain.
>               */
> -            netcfg_write_resolv(NULL, interface);
> +            netcfg_write_resolv(NULL, NULL, interface);
>              state = HOSTNAME;
>              break;
>
> @@ -613,7 +614,7 @@
>                  netcfg_write_common("", hostname, domain);
>                  netcfg_write_loopback();
>                  netcfg_write_interface(interface);
> -                netcfg_write_resolv(domain, interface);
> +                netcfg_write_resolv(domain, search, interface);
>  #if !defined(__FreeBSD_kernel__)
>                  kill_dhcp_client();
>  #endif
>
> --- static.c
> +++ static.c
> @@ -258,14 +258,16 @@
>      return 1;
>  }
>
> -int netcfg_write_resolv (const char *domain, const struct netcfg_interface *interface)
> +int netcfg_write_resolv (const char *domain , const char *search, const struct netcfg_interface *interface)
>  {
>      FILE* fp = NULL;
>
>      if ((fp = file_open(RESOLV_FILE, "w"))) {
>          unsigned int i = 0;
> +        if (search && !empty_str(search))
> +            fprintf(fp, "search %s\n", search);
>          if (domain && !empty_str(domain))
> -            fprintf(fp, "search %s\n", domain);
> +            fprintf(fp, "domain %s\n", domain);
>
>          for (i = 0; i < NETCFG_NAMESERVERS_MAX; i++)
>              if (!empty_str(interface->nameservers[i]))
>
> This should do the trick.
>
> If someone comes across this issue and this patch hasn't been merged we found an ugly workaround using a preseed file:
>
> d-i preseed/early_command string \
>         sed -i '/^case /i domain="$search"' /etc/udhcpc/default.script; \
>         mv /sbin/udhcpc /sbin/udhcpc.real; \
>         echo '#!/bin/sh' > /sbin/udhcpc; \
>         echo 'exec /bin/busybox udhcpc -O search "$@"' >> /sbin/udhcpc; \
>         chmod +x /sbin/udhcpc
>
> It will make a wrapper for udhcpc that will force netcfg to query search domains, patch the default.script callback script from udhcpc to make domain="$seach".
>
> regards
>
>
>

[toc] | [prev] | [standalone]


Back to top | Article view | linux.debian.bugs.dist


csiph-web