/usr/include/yuma/agt/agt_tree.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 | /*
* 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_agt_tree
#define _H_agt_tree
/* FILE: agt_tree.h
*********************************************************************
* *
* P U R P O S E *
* *
*********************************************************************
Server subtree filter processing for <filter> element in
<get> and <get-config> operations
*********************************************************************
* *
* C H A N G E H I S T O R Y *
* *
*********************************************************************
date init comment
----------------------------------------------------------------------
16-jun-06 abb Begun
*/
#ifndef _H_cfg
#include "cfg.h"
#endif
#ifndef _H_rpc
#include "rpc.h"
#endif
#ifndef _H_ses
#include "ses.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
/********************************************************************
* *
* F U N C T I O N S *
* *
*********************************************************************/
/********************************************************************
* FUNCTION agt_tree_prune_filter
*
* get and get-config step 1
* Need to evaluate the entire subtree filter and remove nodes
* which are not in the result set
*
* The filter subtree usually starts out as type NCX_BT_CONTAINER
* but a single select node could be present instead.
*
* The <filter> subtree starts out as type NCX_BT_CONTAINER (root)
* and is converted by val_parse as follows:
*
* Subtree Filter:
* NCX_BT_ANY -- start type
* changed to real types during parsing
* NCX_BT_CONTAINER --> container node
* NCX_BT_EMPTY --> select node
* NCX_BT_STRING --> content select node
*
* INPUTS:
* scb == session control block
* == NULL if access control should not be applied
* msg == rpc_msg_t in progress
* cfg == config target to check against
* getop == TRUE if this is a <get> and not a <get-config>
* The target is expected to be the <running>
* config, and all state data will be available for the
* filter output.
* FALSE if this is a <get-config> and only the
* specified target in available for filter output
*
* OUTPUTS:
* msg->rpc_filter.op_filter is pruned as needed by setting
* the VAL_FL_FILTERED bit.in the val->flags field
* for the start of subtrees which failed the filter test.
* Only nodes which result in non-NULL output should
* remain unchanged at the end of this procedure.
*
* RETURNS:
* pointer to generated tree of matching nodes
* NULL if no match
*********************************************************************/
extern ncx_filptr_t *
agt_tree_prune_filter (ses_cb_t *scb,
rpc_msg_t *msg,
const cfg_template_t *cfg,
boolean getop);
/********************************************************************
* FUNCTION agt_tree_output_filter
*
* get and get-config step 2
* Output the pruned subtree filter to the specified session
*
* INPUTS:
* scb == session control block
* == NULL if access control should not be applied
* msg == rpc_msg_t in progress
* top == ncx_filptr tree to output
* indent == start indent amount
* getop == TRUE if <get>, FALSE if <get-config>
*
* RETURNS:
* none
*********************************************************************/
extern void
agt_tree_output_filter (ses_cb_t *scb,
rpc_msg_t *msg,
ncx_filptr_t *top,
int32 indent,
boolean getop);
/********************************************************************
* FUNCTION agt_tree_test_filter
*
* notification filter evaluation
* Need to evaluate the entire subtree filter and return 'FALSE'
* if any nodes in the filter are not in the result set
* (this is probably a notification payload)
*
* INPUTS:
* msghdr == message in progress; needed for access control
* scb == session control block; needed for access control
* filter == subtree filter to use
* topval == value tree to check against
*
* RETURNS:
* TRUE if the filter matched; notification can be sent
* FALSE if the filter did not match; notification not sent
*********************************************************************/
extern boolean
agt_tree_test_filter (xml_msg_hdr_t *msghdr,
ses_cb_t *scb,
val_value_t *filter,
val_value_t *topval);
#ifdef __cplusplus
} /* end extern 'C' */
#endif
#endif /* _H_agt_tree */
|