Add new config parse tree node definitions

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Rewrite bison/flex parser combo

Lots of changes at one go:

* parser is reentrant
* rework of include file handling
* rework of output to use new data structures
* Cleanups of mem leaks, yacc rules.
* New config parsing to new parser APIs

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Tabify C macro in Bison source

This is a purely whitespace change, but should make the kernel format
check happier.

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>

(cherry picked from commit 3dc7ec1ed296216df599ff9dd63ac3d6b742dcfd)
from review branch

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Fix up lexer state passing problem

The macro that Jim Lieb used to pass the parameter for lexer state in
Bison 2.7 was removed in Bison 3.0. The Bison documentation was not very
forthcoming and provided no obvious alternative for the removed macro.

Therefore, I have adopted the somewhat ugly (sorry) fix used by the Mesa
folks to work around similar problems in the bug at
https://bugs.freedesktop.org/show_bug.cgi?id=67354

We have a minimal 'lexer' in the Bison source that takes the parser
state, pulls the lexer state out, and calls the Flex lexer.

Signed-off-by: Adam C. Emerson <aemerson@linuxbox.com>

(cherry picked from commit f9d1ee4da09e6174ba515be395afdd859f3c80db)
from config review branch.  Discovered on Debian "sid"

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Rework parse tree printing and free to use new data structures

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Rework old config lookup functions

Move to new data structures.  These functions will be in place until
various config processing modules are changed to the new api.

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Remove obsolete config file parsing code and references

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Add new config parse tree to runtime config struct infrastructure

This is table driven semantic and validation logic.  The table is a
mapping between the parse tree nodes and the structure members.

* add enum, path and unique (only once) param processing

* Do init pass for block before lookup.  Missing block fallback to defaults

* Add attributes mode processing to config processor

* Add sub-block and inet addr and port processing

* Handle processing of subblocks

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Rework nfs_read_core_conf to use new config infrastructure

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Remove static initialization for nfs_core

We don't need this anymore because new infrastructure sets defaults

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Convert allocated char arrays to char * in krb5 config

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Rework krb5 params to new config infrastructure

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Remove static initialization for krb5 params

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Remove nfs_ip_name preload from a config file

This may have been part of old stats code.  Now it is only used
by exports which makes this preload unnecessary.

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Rework ip name cache params to new config infrastructure

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Remove static initialization for ip name params

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Rework nfsv4 params to new config infrastructure

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Remove nfsv4 static initialization

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Rework 9P params to new config infrastructure

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Remove static initialization for 9P params

Signed-off-by: Jim Lieb <jlieb@panasas.com>