[PATCH 04/21] net: Add functions to get/set nameserver and domainname

Sascha Hauer s.hauer at pengutronix.de
Mon Nov 27 07:18:38 PST 2017


On Sat, Nov 25, 2017 at 12:47:09AM +0100, Sam Ravnborg wrote:
> On Fri, Nov 24, 2017 at 09:12:20AM +0100, Sascha Hauer wrote:
> > It's more convenient to have getter/setter functions for
> > variables rather than using the detour around global vars
> > which use string matching and all kinds of overhead in the
> > background.
> > 
> > Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> > ---
> >  include/net.h |  4 ++++
> >  net/dns.c     |  8 ++------
> >  net/net.c     | 24 ++++++++++++++++++++++++
> >  3 files changed, 30 insertions(+), 6 deletions(-)
> > 
> > diff --git a/include/net.h b/include/net.h
> > index 632b6d5410..0fcde2f0b3 100644
> > --- a/include/net.h
> > +++ b/include/net.h
> > @@ -218,8 +218,12 @@ void net_set_ip(IPaddr_t ip);
> >  void net_set_serverip(IPaddr_t ip);
> >  void net_set_netmask(IPaddr_t ip);
> >  void net_set_gateway(IPaddr_t ip);
> > +void net_set_nameserver(IPaddr_t ip);
> > +void net_set_domainname(const char *name);
> >  IPaddr_t net_get_ip(void);
> >  IPaddr_t net_get_serverip(void);
> > +IPaddr_t net_get_nameserver(void);
> > +const char *net_get_domainname(void);
> >  
> >  /* Do the work */
> >  void net_poll(void);
> > diff --git a/net/dns.c b/net/dns.c
> > index 69b8a24861..a8ce7a4484 100644
> > --- a/net/dns.c
> > +++ b/net/dns.c
> > @@ -202,7 +202,6 @@ static void dns_handler(void *ctx, char *packet, unsigned len)
> >  IPaddr_t resolv(const char *host)
> >  {
> >  	IPaddr_t ip;
> > -	const char *ns;
> >  
> >  	if (!string_to_ip(host, &ip))
> >  		return ip;
> > @@ -211,16 +210,13 @@ IPaddr_t resolv(const char *host)
> >  
> >  	dns_state = STATE_INIT;
> >  
> > -	ns = getenv("global.net.nameserver");
> > -	if (!ns || !*ns) {
> > +	ip = net_get_nameserver();
> > +	if (!ip) {
> >  		printk("%s: no nameserver specified in $net.nameserver\n",
> >  				__func__);
> Should this use pr_info - and not printk direct?

Yes, although this hasn't been touched in this patch. I added a patch to
this series changing this consitently for this file.

> > +void net_set_domainname(const char *name)
> > +{
> > +	free(net_domainname);
> > +	if (name)
> > +		net_domainname = xstrdup(name);
> 
> > +	else
> > +		net_domainname = xstrdup(name);
> Looks strange that we check name - and then the if and else clause is the same.

Yeah, indeed. Changed to xstrdup("") for the name == NULL case.

Sascha


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list