David Ahern wrote: > On 2/26/18 11:20 AM, Serhey Popovych wrote: >> Stephen Hemminger wrote: >>> On Thu, 22 Feb 2018 15:02:06 +0200 >>> Serhey Popovych <serhe.popov...@gmail.com> wrote: >>> >>>> +struct iplink_parse_args { >>>> + const char *dev; >>>> + const char *name; >>>> + const char *type; >>>> + >>>> + /* This definitely must be the last one and initialized >>>> + * by the caller of iplink_parse() that will initialize rest. >>>> + */ >>>> + struct iplink_req *req; >>>> +}; >>>> + >>> >>> No control block please. >> Accepted. >> >>> If you have too many arguments, then that means you need to do >>> some refactoring. >> >> So using structure as single argument to a function isn't an option? >> >>> >> >> > > As I mentioned before, iplink_parse should not be used by vxcan or veth > as they only want a subset of the parsing. Once you take those users > out, iplink_parse becomes local to iplink.c with a single user. In which > case I suspect the compiler will always inline the function so no > refactoring on the number of arguments is needed. > I will implement cut down function to parse vxcan and veth peer device parameters and reuse it in iplink_parse() to avoid code duplications.
But my final goal not to refactor on number of arguments to parse, that's side product of this series, I want to take @name, @dev and other parameters for later use. In ->parse_opt() modules @name, @dev and others are not available easily. It seems only way to get them is to parse supplied netlink buffer.
signature.asc
Description: OpenPGP digital signature