This file is indexed.

/usr/include/yuma/ncx/yang_grp.h is in libyuma-dev 2.10-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
/*
 * Copyright (c) 2008 - 2012, Andy Bierman, All Rights Reserved.
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.    
 */
#ifndef _H_yang_grp
#define _H_yang_grp

/*  FILE: yang_grp.h
*********************************************************************
*								    *
*			 P U R P O S E				    *
*								    *
*********************************************************************

    YANG Module parser grouping statement support

    
*********************************************************************
*								    *
*		   C H A N G E	 H I S T O R Y			    *
*								    *
*********************************************************************

date	     init     comment
----------------------------------------------------------------------
14-dec-07    abb      Begun; start from yang_typ.h

*/

#ifndef _H_dlq
#include "dlq.h"
#endif

#ifndef _H_grp
#include "grp.h"
#endif

#ifndef _H_ncxtypes
#include "ncxtypes.h"
#endif

#ifndef _H_obj
#include "obj.h"
#endif

#ifndef _H_status
#include "status.h"
#endif

#ifndef _H_tk
#include "tk.h"
#endif

#ifndef _H_yang
#include "yang.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

/********************************************************************
*								    *
*			     T Y P E S				    *
*								    *
*********************************************************************/


/********************************************************************
*								    *
*			F U N C T I O N S			    *
*								    *
*********************************************************************/


/********************************************************************
* FUNCTION yang_grp_consume_grouping
* 
* 2nd pass parsing
* Parse the next N tokens as a grouping-stmt
* Create a grp_template_t struct and add it to the specified Q
*
* Error messages are printed by this function!!
* Do not duplicate error messages upon error return
*
* Current token is the 'grouping' keyword
*
* INPUTS:
*   pcb == parser control block to use
*   tkc == token chain
*   mod == module in progress
*   que == queue will get the grp_template_t 
*   parent == parent object or NULL if top-level grouping-stmt
*
* RETURNS:
*   status of the operation
*********************************************************************/
extern status_t 
    yang_grp_consume_grouping (yang_pcb_t *pcb,
                               tk_chain_t *tkc,
			       ncx_module_t  *mod,
			       dlq_hdr_t *que,
			       obj_template_t *parent);


/********************************************************************
* FUNCTION yang_grp_resolve_groupings
* 
* 3rd pass parsing
* Analyze the entire 'groupingQ' within the module struct
* Finish all the clauses within this struct that
* may have been defered because of possible forward references
*
* Any uses or augment within the grouping is deferred
* until later passes because of forward references
*
* Error messages are printed by this function!!
* Do not duplicate error messages upon error return
*
* INPUTS:
*   pcb == parser control block to use
*   tkc == token chain from parsing (needed for error msgs)
*   mod == module in progress
*   groupingQ == Q of grp_template_t structs to check
*   parent == obj_template containing this groupingQ
*          == NULL if this is a module-level groupingQ
*
* RETURNS:
*   status of the operation
*********************************************************************/
extern status_t 
    yang_grp_resolve_groupings (yang_pcb_t *pcb,
                                tk_chain_t *tkc,
				ncx_module_t  *mod,
				dlq_hdr_t *groupingQ,
				obj_template_t *parent);


/********************************************************************
* FUNCTION yang_grp_resolve_complete
* 
* 4th pass parsing
* Analyze the entire 'groupingQ' within the module struct
* Expand any uses and augment statements within the group and 
* validate as much as possible
*
* Completes processing for all the groupings
* sust that it is safe to expand any uses clauses
* within objects, via the yang_obj_resolve_final fn
*
* Error messages are printed by this function!!
* Do not duplicate error messages upon error return
*
* INPUTS:
*   pcb == parser control block
*   tkc == token chain from parsing (needed for error msgs)
*   mod == module in progress
*   groupingQ == Q of grp_template_t structs to check
*   parent == parent object contraining groupingQ (may be NULL)
*
* RETURNS:
*   status of the operation
*********************************************************************/
extern status_t 
    yang_grp_resolve_complete (yang_pcb_t *pcb,
                               tk_chain_t *tkc,
			       ncx_module_t  *mod,
			       dlq_hdr_t *groupingQ,
			       obj_template_t *parent);


/********************************************************************
* FUNCTION yang_grp_resolve_final
* 
* Analyze the entire 'groupingQ' within the module struct
* Check final warnings etc.
*
*
* Error messages are printed by this function!!
* Do not duplicate error messages upon error return
*
* INPUTS:
*   pcb == parser control block
*   tkc == token chain from parsing (needed for error msgs)
*   mod == module in progress
*   groupingQ == Q of grp_template_t structs to check
*
* RETURNS:
*   status of the operation
*********************************************************************/
extern status_t 
    yang_grp_resolve_final (yang_pcb_t *pcb,
                            tk_chain_t *tkc,
			    ncx_module_t  *mod,
			    dlq_hdr_t *groupingQ);


/********************************************************************
* FUNCTION yang_grp_check_nest_loop
* 
* Check the 'uses' object and determine if it is contained
* within the group being used.
*
*    grouping A {
*      uses A;
*    }
*
*    grouping B {
*      container C {
*        grouping BB {
*          uses B;
*        }
*      }
*    } 
*
* Error messages are printed by this function!!
* Do not duplicate error messages upon error return
*
* INPUTS:
*   tkc == token chain from parsing (needed for error msgs)
*   mod == module in progress
*   obj == 'uses' obj_template containing the ref to 'grp'
*   grp == grp_template_t that this 'obj' is using
*
* RETURNS:
*   status of the operation
*********************************************************************/
extern status_t 
    yang_grp_check_nest_loop (tk_chain_t *tkc,
			      ncx_module_t  *mod,
			      obj_template_t *obj,
			      grp_template_t *grp);

#ifdef __cplusplus
}  /* end extern 'C' */
#endif

#endif	    /* _H_yang_grp */