From 204bc8c27e50fb7a43d7a9b9ccb3b91a8eda563e Mon Sep 17 00:00:00 2001 From: Jan Chaloupka Date: Mon, 8 Sep 2014 13:28:18 +0200 Subject: [PATCH] parse.y: extending cgroup names with "default" default is used as a keyword for defining default group permissions. Having "default" as a group name (with double quotes "), parsing is successfull. Howerver, using default without double quotes, parsing fails. This patch modifies parsing rule and lex for default group name without double quotes. Tested on: default { perm { task { uid = root; gid = rgel6610; fperm = 770; } admin { uid = root; gid = root; dperm = 775; fperm = 744; } } } group default { cpuset { cpuset.mems = 0; cpuset.cpus = 0; } } Signed-off-by: Jan Chaloupka Acked-by: Jan Safranek --- src/lex.l | 2 +- src/parse.y | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/lex.l b/src/lex.l index d7bf575a..ecd212c4 100644 --- a/src/lex.l +++ b/src/lex.l @@ -42,7 +42,7 @@ jmp_buf parser_error_env; "group" {return GROUP;} "namespace" {return NAMESPACE;} "template" {return TEMPLATE;} -"default" {return DEFAULT;} +"default" {yylval.name = strdup(yytext); return DEFAULT;} [a-zA-Z0-9_\-\/\.\,\%\@\\]+ {yylval.name = strdup(yytext); return ID;} \"[^"]*\" {yylval.name = strdup(yytext+1); yylval.name[strlen(yylval.name)-1] = '\0'; return ID; } . {return yytext[0];} diff --git a/src/parse.y b/src/parse.y index 9adbc0ef..98f7699d 100644 --- a/src/parse.y +++ b/src/parse.y @@ -45,9 +45,9 @@ int yywrap(void) int val; struct cgroup_dictionary *values; } -%type ID +%type ID DEFAULT %type mountvalue_conf mount task_namevalue_conf admin_namevalue_conf -%type admin_conf task_conf task_or_admin group_conf group start +%type admin_conf task_conf task_or_admin group_conf group start group_name %type namespace namespace_conf default default_conf %type namevalue_conf %type template template_conf @@ -99,7 +99,7 @@ default_conf } ; -group : GROUP ID '{' group_conf '}' +group : GROUP group_name '{' group_conf '}' { $$ = $4; if ($$) { @@ -119,6 +119,16 @@ group : GROUP ID '{' group_conf '}' } ; +group_name + : ID + { + $$ = $1; + } + | DEFAULT + { + $$ = $1; + } + group_conf : ID '{' namevalue_conf '}' { -- 2.47.2