Merge "Fix latency accuracy and dumping latencies to file"
[samplevnf.git] / VNFs / DPPD-PROX / cfgfile.h
1 /*
2 // Copyright (c) 2010-2017 Intel Corporation
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 */
16
17 #ifndef _CFG_FILE_H_
18 #define _CFG_FILE_H_
19
20 #include <stdio.h>
21
22 #define DEFAULT_CONFIG_FILE     "./prox.cfg"
23
24 /* configuration file line parser procedure */
25 typedef int (*cfg_parser)(unsigned sindex, char *str, void *data);
26
27 #define CFG_INDEXED     0x80000000      /* section contains index [name #] */
28 #define MAX_INDEX       64
29
30 struct cfg_section {
31         const char      *name;  /* section name without [] */
32         cfg_parser      parser; /* section parser function */
33         void            *data;  /* data to be passed to the parser */
34         /* set by parsing procedure */
35         unsigned        indexp[MAX_INDEX];
36         int             raw_lines; /* if set, do not remove text after ';' */
37         int             nbindex;
38         int             error;
39 };
40
41 #define MAX_CFG_STRING_LEN 8192
42 #define STRING_TERMINATOR_LEN 4
43
44 struct cfg_file {
45         char            *name;
46         FILE            *pfile;
47         unsigned        line;
48         unsigned        index_line;
49         /* set in case of any error */
50         unsigned        err_line;
51         char            *err_section;
52         unsigned        err_entry;
53         char            cur_line[MAX_CFG_STRING_LEN + STRING_TERMINATOR_LEN];
54 };
55
56 struct cfg_file *cfg_open(const char *cfg_name);
57 int cfg_parse(struct cfg_file *pcfg, struct cfg_section *psec);
58 int cfg_close(struct cfg_file *pcfg);
59
60 #endif /* _CFGFILE_H_ */