Skip to content

Commit 4af996e

Browse files
committed
Add action/anydata/modifier stmt for yang2yin
1 parent 835dbfa commit 4af996e

File tree

1 file changed

+35
-1
lines changed

1 file changed

+35
-1
lines changed

tools/yang2yin/main.c

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ enum yang_arg {
3030

3131
enum yang_token {
3232
YANG_UNKNOWN = 0,
33+
YANG_ACTION,
34+
YANG_ANYDATA,
3335
YANG_ANYXML,
3436
YANG_ARGUMENT,
3537
YANG_AUGMENT,
@@ -65,6 +67,7 @@ enum yang_token {
6567
YANG_MANDATORY,
6668
YANG_MAX_ELEMENTS,
6769
YANG_MIN_ELEMENTS,
70+
YANG_MODIFIER,
6871
YANG_MODULE,
6972
YANG_MUST,
7073
YANG_NAMESPACE,
@@ -106,6 +109,10 @@ static const char *
106109
keyword2str(enum yang_token keyword)
107110
{
108111
switch (keyword) {
112+
case YANG_ACTION:
113+
return "action";
114+
case YANG_ANYDATA:
115+
return "anydata";
109116
case YANG_ANYXML:
110117
return "anyxml";
111118
case YANG_ARGUMENT:
@@ -176,6 +183,8 @@ keyword2str(enum yang_token keyword)
176183
return "max-elements";
177184
case YANG_MIN_ELEMENTS:
178185
return "min-elements";
186+
case YANG_MODIFIER:
187+
return "modifier";
179188
case YANG_MODULE:
180189
return "module";
181190
case YANG_MUST:
@@ -508,7 +517,15 @@ get_keyword(char *word, enum yang_arg *arg)
508517
switch (word[0]) {
509518
case 'a':
510519
++word;
511-
if (!strncmp(word, "nyxml", 5)) {
520+
if (!strncmp(word, "ction", 5)) {
521+
word += 5;
522+
ret = YANG_ACTION;
523+
*arg = Y_STR_ARG;
524+
} else if (!strncmp(word, "nydata", 6)) {
525+
word += 6;
526+
ret = YANG_ANYDATA;
527+
*arg = Y_IDENTIF_ARG;
528+
} else if (!strncmp(word, "nyxml", 5)) {
512529
word += 5;
513530
ret = YANG_ANYXML;
514531
*arg = Y_IDENTIF_ARG;
@@ -714,6 +731,10 @@ get_keyword(char *word, enum yang_arg *arg)
714731
word += 11;
715732
ret = YANG_MIN_ELEMENTS;
716733
*arg = Y_STR_ARG;
734+
} else if (!strncmp(word, "odifier", 7)) {
735+
word += 7;
736+
ret = YANG_MODIFIER;
737+
*arg = Y_STR_ARG;
717738
} else if (!strncmp(word, "odule", 5)) {
718739
word += 5;
719740
ret = YANG_MODULE;
@@ -998,6 +1019,14 @@ print_keyword(enum yang_token keyword, enum yang_arg arg, FILE *out, int level,
9981019
const char *yin_element = NULL, *close_tag;
9991020

10001021
switch (keyword) {
1022+
case YANG_ACTION:
1023+
fprintf(out, "%*s<action name=\"", LEVEL(level), INDENT(level));
1024+
close_tag = "action";
1025+
break;
1026+
case YANG_ANYDATA:
1027+
fprintf(out, "%*s<anydata name=\"", LEVEL(level), INDENT(level));
1028+
close_tag = "anydata";
1029+
break;
10011030
case YANG_ANYXML:
10021031
fprintf(out, "%*s<anyxml name=\"", LEVEL(level), INDENT(level));
10031032
close_tag = "anyxml";
@@ -1141,6 +1170,10 @@ print_keyword(enum yang_token keyword, enum yang_arg arg, FILE *out, int level,
11411170
fprintf(out, "%*s<min-elements value=\"", LEVEL(level), INDENT(level));
11421171
close_tag = "min-elements";
11431172
break;
1173+
case YANG_MODIFIER:
1174+
fprintf(out, "%*s<modifier value=\"", LEVEL(level), INDENT(level));
1175+
close_tag = "modifier";
1176+
break;
11441177
case YANG_MUST:
11451178
fprintf(out, "%*s<must condition=\"", LEVEL(level), INDENT(level));
11461179
close_tag = "must";
@@ -1601,6 +1634,7 @@ find_namespace_imports(FILE *in, char **buf, int *buf_len, char **name_space, ch
16011634
case YANG_LIST:
16021635
case YANG_CHOICE:
16031636
case YANG_ANYXML:
1637+
case YANG_ANYDATA:
16041638
case YANG_USES:
16051639
case YANG_AUGMENT:
16061640
case YANG_RPC:

0 commit comments

Comments
 (0)