1 mike 1.1 /*
2 **==============================================================================
3 **
4 ** Open Management Infrastructure (OMI)
5 **
6 ** Copyright (c) Microsoft Corporation
7 **
8 ** Licensed under the Apache License, Version 2.0 (the "License"); you may not
9 ** use this file except in compliance with the License. You may obtain a copy
10 ** of the License at
11 **
12 ** http://www.apache.org/licenses/LICENSE-2.0
13 **
14 ** THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 ** KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
16 ** WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
17 ** MERCHANTABLITY OR NON-INFRINGEMENT.
18 **
19 ** See the Apache 2 License for the specific language governing permissions
20 ** and limitations under the License.
21 **
22 mike 1.1 **==============================================================================
23 */
24
25 #ifndef _omi_wsmanparser_h
26 #define _omi_wsmanparser_h
27
28 #include "config.h"
29 #include <string.h>
30 #include <common.h>
31 #include <xml/xml.h>
32 #include <base/instance.h>
33
34 BEGIN_EXTERNC
35
36 /* wsman header struct */
37 typedef struct _WSMAN_WSHeader
38 {
39 /* True if an <s:Action> element was found */
40 MI_Boolean foundAction;
41
42 /* Attributes of the request */
43 mike 1.1 int rqtAction;
44 MI_Uint32 maxEnvelopeSize;
45 const char* rqtClassname;
46 const char* rqtNamespace;
47 const char* rqtMessageID;
48 const char* unknownMandatoryTag;
49
50 /* instance that holds keys of operation (invoke/get/delete etc) */
51 MI_Instance* instance;
52 Batch* instanceBatch;
53
54 /* invoke-specific */
55 const char* rqtMethod;
56 const char* rqtServer;
57 }
58 WSMAN_WSHeader;
59
60 typedef struct _WSMAN_AssociationFilter
61 {
62 const char* address;
63 MI_Instance* referenceParameters;
64 mike 1.1 const char* associationClassName;
65 const char* resultClassName;
66 const char* role;
67 const char* resultRole;
68 }
69 WSMAN_AssociationFilter;
70
71 typedef struct _WSMAN_WSEnumeratePullBody
72 {
73 /* Attributes of the enumerate/Pull request */
74 MI_Uint32 maxElements;
75 MI_Uint32 polymorphismMode; /* WSMANTAG_ENUM_POLYMORPHISM_MODE_xxx */
76 MI_Uint32 enumerationMode; /* WSMANTAG_ENUM_MODE_xxx */
77 MI_Boolean allowOptimization; /* tag wsman:OptimizeEnumeration present */
78 /* Pull-specific */
79 MI_Uint32 enumerationContextID;
80
81 /* Fields from <w:Filter Dialect="?"> ... </w:Filter> element */
82 const char* dialect;
83 const char* filter;
84
85 mike 1.1 /* Holds results from <b:AssociatedInstances> element */
86 MI_Boolean foundAssociationFilter;
87 WSMAN_AssociationFilter associationFilter;
88 }
89 WSMAN_WSEnumeratePullBody;
90
91 /* WS xml parsing routines */
92 int WS_ParseSoapEnvelope(
93 XML* xml);
94
95 int WS_ParseWSHeader(
96 XML* xml,
97 WSMAN_WSHeader* wsheader);
98
99 int WS_ParseEnumerateBody(
100 XML* xml,
101 Batch** batch,
102 WSMAN_WSEnumeratePullBody* wsenumbody);
103
104 int WS_ParsePullBody(
105 XML* xml,
106 mike 1.1 WSMAN_WSEnumeratePullBody* wsenumpullbody);
107
108 int WS_ParseReleaseBody(
109 XML* xml,
110 WSMAN_WSEnumeratePullBody* wsenumpullbody);
111
112 int WS_ParseInvokeBody(
113 XML* xml,
114 Batch* dynamicBatch,
115 MI_Instance** dynamicInstanceParams);
116
117 int WS_ParseCreateBody(
118 XML* xml,
119 Batch* dynamicBatch,
120 MI_Instance** dynamicInstanceParams);
121
122 int WS_ParseIdentifyBody(
123 XML* xml);
124
125 END_EXTERNC
126
127 mike 1.1 #endif /* _omi_wsmanparser_h */
|