[PATCH 1/2] net: add linux.bootarg parameter from ifup call

Sascha Hauer s.hauer at pengutronix.de
Wed Sep 21 01:33:02 PDT 2016


On Mon, Sep 19, 2016 at 06:03:48PM +0200, Enrico Jorns wrote:
> This sets a `ip=dhcp` or
> `ip=<clientip>:<serverip>:<gatewayip>:<netmaskip>::<iface>:` bootarg for
> the network device upon execution of 'ifup'. This is the only point
> where we can distinguish between a static ip and a dhcp-based network
> setup and thus set a valid bootarg options as it will be required for
> nfs boot, for example.
> 
> Signed-off-by: Enrico Jorns <ejo at pengutronix.de>

Applied both with two little adjustments

> --- a/net/eth.c
> +++ b/net/eth.c
> @@ -384,6 +384,7 @@ int eth_register(struct eth_device *edev)
>  	dev_add_param_ip(dev, "netmask", NULL, NULL, &edev->netmask, edev);
>  	dev_add_param_mac(dev, "ethaddr", eth_param_set_ethaddr, NULL,
>  			edev->ethaddr, edev);
> +	dev_add_param_string(dev, "linux.bootargs", NULL, NULL, &edev->bootarg, NULL);

Added a edev->bootarg = xstrdup(""); here to not have a <NULL> string in
the variable when not initialized.

>  
>  	if (edev->init)
>  		edev->init(edev);
> diff --git a/net/ifup.c b/net/ifup.c
> index 30ac3f5..618eb8a 100644
> --- a/net/ifup.c
> +++ b/net/ifup.c
> @@ -106,12 +106,22 @@ int ifup(const char *name, unsigned flags)
>  		ret = eth_set_param(dev, "serverip");
>  		if (ret)
>  			goto out;
> +		dev_set_param(dev, "linux.bootargs", "ip=dhcp");
>  	} else if (!strcmp(ip, "static")) {
> +		char *bootarg;
>  		for (i = 0; i < ARRAY_SIZE(vars); i++) {
>  			ret = eth_set_param(dev, vars[i]);
>  			if (ret)
>  				goto out;
>  		}
> +		bootarg = basprintf("ip=%pI4:%pI4:%pI4:%pI4::%s:",
> +				&edev->ipaddr,
> +				&edev->serverip,
> +				&edev->gateway,
> +				&edev->netmask,
> +				edev->devname);

I dropped setting the devname here since we do not know if it's the same
under Linux. If there are multiple interfaces in Linux we can only hope
that the right one is used anyway.

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