[CRIU] [PATCH] net/sysctl: remove excess type conversions for sysctl_entry.type

Pavel Tikhomirov ptikhomirov at virtuozzo.com
Wed May 18 04:05:58 PDT 2016



On 05/17/2016 02:52 PM, Pavel Emelyanov wrote:
> On 05/16/2016 05:32 PM, Pavel Tikhomirov wrote:
>> use SYSCTL_TYPE__CTL_32 and SYSCTL_TYPE____CTL_STR from SysctlEntry enum
>>
>> Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
>> ---
>>  criu/net.c | 29 +++++++++++++++--------------
>>  1 file changed, 15 insertions(+), 14 deletions(-)
>>
>> diff --git a/criu/net.c b/criu/net.c
>> index 59c1161..a28ad80 100644
>> --- a/criu/net.c
>> +++ b/criu/net.c
>> @@ -66,11 +66,12 @@ static bool sysctl_entries_equal(SysctlEntry *a, SysctlEntry *b)
>>  	if (a->type != b->type)
>>  		return false;
>>
>> -	switch (CTL_TYPE(a->type)) {
>> -		case CTL_32:
>> +	switch (a->type) {
>> +		case SYSCTL_TYPE__CTL_32:
>
> Should SYSCTL_TYPE__CTL_32 == CTL_32?

Here SYSCTL_TYPE__CTL_32 is enumeration constant and CTL_32 is 
preprocessor constant and they are both equal to 6 of course. But it 
seem to me that using enumeration constants when work with enumeration 
variable is a bit clearer.

>
>>  			return a->has_iarg && b->has_iarg && a->iarg == b->iarg;
>> -		case __CTL_STR:
>> +		case SYSCTL_TYPE____CTL_STR:
>
> Any reason we need 4 underscores here?

We have CTL_STR(len) - string with length and __CTL_STR for string 
without length. So I named the enumeration const in SysctlType similarly 
__CTL_STR as it do not save lenght. And protobuf adds SYSCTL_TYPE__ 
prefix to all enum consts. These way I got SYSCTL_TYPE____CTL_STR with 4 
underscores, no other reason.

>
>>  			return a->sarg && b->sarg && !strcmp(a->sarg, b->sarg);
>> +		default:;
>>  	}
>>
>>  	return false;
>> @@ -191,8 +192,8 @@ static int net_conf_op(char *tgt, SysctlEntry **conf, int n, int op, char *proto
>>
>>  		snprintf(path[i], MAX_CONF_OPT_PATH, CONF_OPT_PATH, proto, tgt, devconfs[i]);
>>  		req[ri].name = path[i];
>> -		switch (CTL_TYPE(conf[i]->type)) {
>> -			case CTL_32:
>> +		switch (conf[i]->type) {
>> +			case SYSCTL_TYPE__CTL_32:
>>  				req[ri].type = CTL_32;
>>
>>  				/* skip non-existing sysctl */
>> @@ -201,7 +202,7 @@ static int net_conf_op(char *tgt, SysctlEntry **conf, int n, int op, char *proto
>>
>>  				req[ri].arg = &conf[i]->iarg;
>>  				break;
>> -			case __CTL_STR:
>> +			case SYSCTL_TYPE____CTL_STR:
>>  				req[ri].type = CTL_STR(MAX_STR_CONF_LEN);
>>  				flags |= op == CTL_READ && !strcmp(devconfs[i], "stable_secret")
>>  					? CTL_FLAGS_READ_EIO_SKIP : 0;
>> @@ -230,10 +231,10 @@ static int net_conf_op(char *tgt, SysctlEntry **conf, int n, int op, char *proto
>>  		/* (un)mark (non-)existing sysctls in image */
>>  		for (i = 0; i < ri; i++)
>>  			if (req[i].flags & CTL_FLAGS_HAS) {
>> -				if (CTL_TYPE(rconf[i]->type) == CTL_32)
>> +				if (rconf[i]->type == SYSCTL_TYPE__CTL_32)
>>  					rconf[i]->has_iarg = true;
>>  			} else {
>> -				if (CTL_TYPE(rconf[i]->type) == __CTL_STR)
>> +				if (rconf[i]->type == SYSCTL_TYPE____CTL_STR)
>>  					rconf[i]->sarg = NULL;
>>  			}
>>  	}
>> @@ -380,9 +381,9 @@ static int dump_one_netdev(int type, struct ifinfomsg *ifi,
>>  		sysctl_entry__init(&confs6[i]);
>>  		netdev.conf6[i] = &confs6[i];
>>  		if (strcmp(devconfs6[i], "stable_secret")) {
>> -			netdev.conf6[i]->type = CTL_32;
>> +			netdev.conf6[i]->type = SYSCTL_TYPE__CTL_32;
>>  		} else {
>> -			netdev.conf6[i]->type = __CTL_STR;
>> +			netdev.conf6[i]->type = SYSCTL_TYPE____CTL_STR;
>>  			netdev.conf6[i]->sarg = stable_secret;
>>  		}
>>  	}
>> @@ -1179,11 +1180,11 @@ static int dump_netns_conf(struct cr_imgset *fds)
>>  		netns.def_conf6[i] = &def_confs6[i];
>>  		netns.all_conf6[i] = &all_confs6[i];
>>  		if (strcmp(devconfs6[i], "stable_secret")) {
>> -			netns.def_conf6[i]->type = CTL_32;
>> -			netns.all_conf6[i]->type = CTL_32;
>> +			netns.def_conf6[i]->type = SYSCTL_TYPE__CTL_32;
>> +			netns.all_conf6[i]->type = SYSCTL_TYPE__CTL_32;
>>  		} else {
>> -			netns.def_conf6[i]->type = __CTL_STR;
>> -			netns.all_conf6[i]->type = __CTL_STR;
>> +			netns.def_conf6[i]->type = SYSCTL_TYPE____CTL_STR;
>> +			netns.all_conf6[i]->type = SYSCTL_TYPE____CTL_STR;
>>  			netns.def_conf6[i]->sarg = def_stable_secret;
>>  			netns.all_conf6[i]->sarg = all_stable_secret;
>>  		}
>>
>

-- 
Best regards, Tikhomirov Pavel
Software Developer, Virtuozzo.


More information about the CRIU mailing list