YANG keywords "action" and "belongs-to" implemented by syntactically by parser (but not proper semantics).

This commit is contained in:
Olof hagsand 2018-11-04 18:36:55 +01:00
parent 270bf78e1f
commit 366cf041bd
8 changed files with 41 additions and 9 deletions

View file

@ -72,6 +72,7 @@
example backend_main() and others if you need details.
### Minor changes
* YANG keywords "action" and "belongs-to" implemented by syntactically by parser (but not proper semantics).
* clixon-config YAML file has new revision: 2018-10-21.
* Allow new lines in CLI prompts
* uri_percent_encode() and xml_chardata_encode() changed to use stdarg parameters

View file

@ -68,12 +68,12 @@ depend:
install:
for i in $(SUBDIRS) doc; \
do (cd $$i; $(MAKE) $(MFLAGS) $@)||exit 1; done; \
echo "Install for compilation by: make install-include"
@echo "Install for compilation by: make install-include"
install-include:
for i in $(SUBDIRS) doc; \
do (cd $$i && $(MAKE) $(MFLAGS) $@)||exit 1; done; \
echo "To install example app: cd example; make; make install"
@echo "To install example app: cd example; make; make install"
uninstall:
for i in $(SUBDIRS) doc example docker; \

View file

@ -1738,7 +1738,7 @@ yang_parse_str(char *str,
/*! Parse yang spec from an open file descriptor
* @param[in] fd File descriptor containing the YANG file as ASCII characters
* @param[in] name For debug, eg filename
* @param[in] ysp Yang specification. Should ave been created by caller using yspec_new
* @param[in] ysp Yang specification. Should have been created by caller using yspec_new
* @retval ymod Top-level yang (sub)module
* @retval NULL Error
*/

View file

@ -418,6 +418,7 @@ submodule_header_stmts : submodule_header_stmts submodule_header_stmt
submodule_header_stmt : yang_version_stmt
{ clicon_debug(2,"submodule-header-stmt -> yang-version-stmt"); }
| belongs_to_stmt { clicon_debug(2,"submodule-header-stmt -> belongs-to-stmt"); }
;
/* linkage */
@ -1359,6 +1360,15 @@ prefix_stmt : K_PREFIX string ';' /* XXX prefix-arg-str */
clicon_debug(2,"prefix-stmt -> PREFIX string ;");}
;
belongs_to_stmt : K_BELONGS_TO id_arg_str ';'
{ if (ysp_add(_yy, Y_BELONGS_TO, $2, NULL)== NULL) _YYERROR("100");
clicon_debug(2,"belongs-to-stmt -> BELONGS-TO id-arg-str ;");}
| K_BELONGS_TO id_arg_str '{' prefix_stmt '}'
{ if (ysp_add(_yy, Y_BELONGS_TO, $2, NULL)== NULL) _YYERROR("98");
clicon_debug(2,"belongs-to-stmt -> BELONGS-TO id-arg-str { prefix-stmt } ");}
;
description_stmt: K_DESCRIPTION string ';'
{ if (ysp_add(_yy, Y_DESCRIPTION, $2, NULL)== NULL) _YYERROR("101");
clicon_debug(2,"description-stmt -> DESCRIPTION string ;");}

View file

@ -54,10 +54,12 @@ cat <<EOF > $cfg
<CLICON_STREAM_PATH>streams</CLICON_STREAM_PATH>
<CLICON_STREAM_URL>https://localhost</CLICON_STREAM_URL>
<CLICON_STREAM_RETENTION>60</CLICON_STREAM_RETENTION>
<CLICON_STREAM_PUB>http://localhost/pub</CLICON_STREAM_PUB>
</config>
EOF
# For nchan testing add this line to above config
# <CLICON_STREAM_PUB>http://localhost/pub</CLICON_STREAM_PUB>
# RFC5277 NETCONF Event Notifications
# using reportingEntity (rfc5277) not reporting-entity (rfc8040)
cat <<EOF > $fyang
@ -261,6 +263,7 @@ fi
#--------------------------------------------------------------------
# NCHAN Need manual testing
echo "Nchan streams requires manual testing"
echo "Add <CLICON_STREAM_PUB>http://localhost/pub</CLICON_STREAM_PUB> to config"
echo "Eg: curl -H \"Accept: text/event-stream\" -s -X GET http://localhost/sub/EXAMPLE"
#-----------------

View file

@ -1,7 +1,9 @@
#!/bin/bash
# Test: YANG parser tests
# First an example yang, second all openconfig yangs
#PROG="valgrind --leak-check=full --show-leak-kinds=all ../util/clixon_util_yang"
PROG=../util/clixon_util_yang
OPENCONFIG=~/syssrc/openconfig
# include err() and new() functions and creates $dir
. ./lib.sh
@ -13,13 +15,28 @@ module test{
description "Example from RFC 6020";
argument "name";
}
ex:not-defined ARGUMENT;;
ex:not-defined ARGUMENT;
}
EOF
)
new "yang parse"
expecteof "$PROG" 0 "$YANG" "^$YANG$"
#expecteof "$PROG" 0 "$YANG" "^$YANG$"
if [ ! -d $OPENCONFIG ]; then
echo "$OPENCONFIG not found. Do git clone https://github.com/openconfig/public and point DIR to it to run these tests"
rm -rf $dir
exit 0
fi
# Openconfig
new "Openconfig"
files=$(find $OPENCONFIG -name "*.yang")
for f in $files; do
new "$f"
YANG=$(cat $f)
# expecteof "$PROG" 0 "$YANG" "module"
done
rm -rf $dir

View file

@ -75,7 +75,7 @@ APPSRC += clixon_util_xpath.c
APPS = $(APPSRC:.c=)
all: $(APPS)
echo "You may want to make clixon_util_stream separately (curl dependency)"
@echo "You may want to make clixon_util_stream separately (curl dependency)"
clean:
rm -f $(APPS) *.core

View file

@ -78,10 +78,11 @@ main(int argc, char **argv)
usage(argv[0]);
return -1;
}
clicon_log_init("clixon_util_yang", LOG_INFO, CLICON_LOG_STDERR);
if ((yspec = yspec_new()) == NULL)
goto done;
if (yang_parse_file(0, "yang test", yspec) < 0){
fprintf(stderr, "xml parse error %s\n", clicon_err_reason);
if (yang_parse_file(0, "yang test", yspec) == NULL){
fprintf(stderr, "yang parse error %s\n", clicon_err_reason);
return -1;
}
yang_print(stdout, (yang_node*)yspec);