open-vm-tools 10.1.5
guestrpc.h
Go to the documentation of this file.
1 /*********************************************************
2  * Copyright (C) 2008,2014-2016 VMware, Inc. All rights reserved.
3  *
4  * This program is free software; you can redistribute it and/or modify it
5  * under the terms of the GNU Lesser General Public License as published
6  * by the Free Software Foundation version 2.1 and no later version.
7  *
8  * This program is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
10  * or FITNESS FOR A PARTICULAR PURPOSE. See the Lesser GNU General Public
11  * License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program; if not, write to the Free Software Foundation, Inc.,
15  * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
16  *
17  *********************************************************/
18 
19 #ifndef _VMWARE_TOOLS_GUESTRPC_H_
20 #define _VMWARE_TOOLS_GUESTRPC_H_
21 
39 #include <glib.h>
40 #include "vmware/tools/utils.h"
41 
42 G_BEGIN_DECLS
43 
45 #define RPCIN_SETRETVALS RpcChannel_SetRetVals
46 #define RPCIN_SETRETVALSF RpcChannel_SetRetValsF
47 
48 typedef struct _RpcChannel RpcChannel;
49 
51 typedef struct RpcInData {
53  const char *name;
58  const char *args;
60  size_t argsSize;
65  char *result;
67  size_t resultLen;
72  gboolean freeResult;
74  void *appCtx;
76  void *clientData;
77 } RpcInData;
78 
79 typedef enum RpcChannelType {
80  RPCCHANNEL_TYPE_INACTIVE,
81  RPCCHANNEL_TYPE_BKDOOR,
82  RPCCHANNEL_TYPE_PRIV_VSOCK,
83  RPCCHANNEL_TYPE_UNPRIV_VSOCK
84 } RpcChannelType;
85 
90 typedef gboolean (*RpcIn_Callback)(RpcInData *data);
91 
92 
94 typedef struct RpcChannelCallback {
96  const char *name;
100  gpointer clientData;
102  gpointer xdrIn;
109  gpointer xdrOut;
114  size_t xdrInSize;
116 
124 typedef void (*RpcChannelResetCb)(RpcChannel *chan,
125  gboolean success,
126  gpointer data);
127 
128 gboolean
129 RpcChannel_Start(RpcChannel *chan);
130 
131 void
132 RpcChannel_Stop(RpcChannel *chan);
133 
134 RpcChannelType
135 RpcChannel_GetType(RpcChannel *chan);
136 
137 gboolean
138 RpcChannel_Send(RpcChannel *chan,
139  char const *data,
140  size_t dataLen,
141  char **result,
142  size_t *resultLen);
143 
144 void
145 RpcChannel_Free(void *ptr);
146 
147 gboolean
148 RpcChannel_BuildXdrCommand(const char *cmd,
149  void *xdrProc,
150  void *xdrData,
1"lineno"> 144 void
*xdrProc,
94 typedoid GKeyFile *  config, < html1(0nclickan> *xdrProc,
GKeyFile *  config, < html1(0nclickan> *xdrProc,
GKeyFile *  config, < html1(0nclickan> *xdrProc,
GKeyFile *  ' 2 ss="paramtype">GKeyFile *  config, < html1(0nclickan> *xdrProc,
config, < html1(0nciv claofcfconfig, < html1(0nclickan> *xdrProtahight" valign="top"> gchar * VMTools_GetLibdir (void)   f="http://www.doxygen.org/index.html"/td> /tr> /tr> /tr> /tr> /tr> /tr> /tr>
/tr> /tr> or:ga5a3e0http://wwdoxygen.org/index.html"/tle="padding-left: 0.5em;">
/tr> /tr> or:ga5a3e0http://wwdoxygen.org/index.html"/tle="padding-left: 0.5em;">   /tr> key, * ' 2 ss="paramtype"ead>
config, < html1(0nclickan> *xd name="l001or:ga5a3e0htt /trw open-vm-tools 10.1.5: lib/include/vmware/tools/guestrpc.1or:ga5a3e0beoRiv clayress> </oid</span>b5659350fd76"><td class="memSep35feb74437bf3paramname"><ivm-tools 10.1.5: lib/include/vmware/tools/guestrpc.1or:ga5a3e0beoRiv clayress> </oid</span>b5659350fd76"><td class="memSep35feb5: lib/include/vmware/tools/guestrpc.1or:ga5a3e0beoRiv clayress> </oid</span>br"> <div <td>(</td> (ccde8.13"/> <meta name="viewport" content="width=devi8his progrme"><ivm-t62045970964">&# program; if not, write to the Free Software Founheader"> <div class="headertitle"> <div clogrme"><ivm-t62045970964">&# program; if not, write to the Free Software Founheader"> <div class="headertitle"> <div clogr04352ef4255dc24354b02eb2d20.html">include</a></li><ue class="navelem"><a class="en"h<div class="h4">&# program; if not, write to the Free Softf2d20.html">include</a></li><ue e/tools/guestrpc.1or:ga5a3e0beoRiv clayress> </oid</span>b5659350fd76"><td class=" .al-scale=1"/>s="code" href="structRpcInD><nde6"><td class=" * .al-scalsv1"/>s="code" href="struop"> void </td><td class="memItemRightclass="en"le * </t"></a><span class="lfemItemRight" valign="bottom"><bl00098"></a><span class="lineno"><a class="line" href="structRpcChannelCallback.html#ab35feb74437bf3paramname"><em>config</em>lign="top"> vo="keywordtypespan class="keyword">const</span>(<span class="keywordtypfcrce-width, iniwmdemo"><a class,78%037dfletd><td class="memItemRightclass="tclickan> *xd"4160; RPADcae </td><td class="memItemRightclass="en"le * </t"></a><span class="lfemItemRight" valistart footer part --> <hr classnfig</em>, < html1(0nclickan> *xdlass="lfemItemR`ass="memItemRightclass=cae </td><td class="memItemRightclass=RpcChannelCallback.html#ab35feb74437bf3paramname"><em>config</em>, < html1(0nem>lign="top"> vo="keywordtypespan class="keyword">const</span>(<span class="keywordtypfcrce-width, iniwmdemo"><a class,78%03 /tr> <tr chttp://wwdoxygen.org/i[FDm>lign="top"> vo="keywordtypes4437bf3paramname"><p"> vo="keywordtypes4437bf3paramname"><p"> vo="keywordtypes4437b7bf3paramname"><em>config</em>, < html1(0nem>lign="top"> vo="keywordtypespan class="kekeywordtypfcrce-width, iniwmdemo"><a class,78%03 /tr> <tr chttp://wwdoxygen.org/i[FDm>lign="top"> vobdi9 8(*-"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-lea* .al-scalsv1"/>s="code" href="struop"> void </td><td class="memItemclass=RpcChannelCallback.html#ao35feb74437bnelCallback</a> v class="line"><a namspan>  <a class="code" hreonass="paramname"><em>keytd 9lasKeyFile$b74437bnelCallback</a> v class="line"><a namspan>  <a class="code" hreonass="paramname"><em>keytd 9lasKeyFile$b74437bnelCallbabr</a> v class="line"><a abmspan>  <a class="code" hreonass="paramname"><em>keytd 9lasKeyFifne"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/***8ddine"><a namspan>#160;</div><div class="line"> v class="line"><a namspan> span>  <a class="code" hreonass="paramname"><em>keytd 9lasKeyFifne"><a name="l00001"></a><span class="lineno"> 1</sp namspan> span>  <a class="code" hreonass="paramname"?0s="keywordtyplass="lineno"> 1</sp namspan> span>  <a class="code"ass="paramnamline"><a name="l001or:ga5a3e0http01or:ga5a3e0s="heading"><td colspan="2"><h2 class="groupheader"><a } .se * <59bc2c"><td class="memItemLeft" alig wdoxygen.org/index.html"/td> /trw <tr chttp://wwdoxygen.org/index.htme"><a name="l001or:ge0http01or:gaa abmspan>  <a class="code1f8746737bf3paramnfig</em> html1(0x//wwdoxygen><a class="line" href="structRpcChannelCallback.html#ab35feb74437bf3paramnameiv clayress> </oid</span> *xdrProc,</div><div clas7a9fa42"><td class="m�������ChannelCallback.html"> 94</a></span>/a><span class="li @g="line"><a name="l001or:ga5a3e0htt <tdg"><ndex.html"/td> /trw <tr</t"></a><span class="li @g="line"><a name="l001or2<span class="keyword">typedef</span> <span class="keyword">enum</span> RpcChannelType {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  RPCCHANNEL_TYPE_INACTIVE,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</sŁnelCallback.html#a3008a91b7952792cls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <="line"><a name= <a class="cke"><a name="l001or2<span class="keyword">typedef</span> <span class="keywotdpheader"><a name="func-members"><no"><a classspan class="keyword">typedefename= <a class="cke"><a name="in|e"line"><a <tdg"><ndex.html"/td1 /trw <tr</t"></a><span class="li @g="line"><a name="l001or2<spaame= <a class="cke"><a name="in|e"line"><a <tdg"><ndex.html"/td1 /trw <tr</t"></a><span class="li @g="line"><a name="l001oe="l001or2<spaame= 0;gboolean</div><div cl������������<no"><a classspan class="keyword"0 <span class="keywordtype">void</span> *xdrData,</div><div class="line"><a name="l00151"></a><span class="litr chttp://wwdoxygen.orglass="keyword"0 iv><div cl������html"/td1 iv clayress> <></tr> <="l chttp://wwdoxygen.orglass="keyword"0 iv><div cl������html"/td1 iv clayress> <></tr> <="l chttp://wwdoxygen.orglass="keyword"0tml"/td1 iv clayress> <; <a class=")5="litr chtt1or:ge0http01oralass="keyword"0 iv><div al������html"/td1 iv clayress> <></tr> <="l chttp://wen.orglass="keyword"0 iv><div cl���cke"><a name="in|e"line"><a <tdg"><ndex.html"/td1 /trw <tr</t"></a><span class="li @g="line"><a name="l001or2<spaame=" href="structRpcInData.html#adae797a3791dd835f07fdd678aff592c"> 67</a></span>  <span class="keywordtype">size_t</span> <a claname="in|e"line"><a <tdg"><ndex.html"/td1 /trw/span> <span class="preproce <a class=")5="litr chtt1or:ge0http01oralass="keyword"0 iv><div al������html"/td1 iv clayress> <></tr> <="l ="lineno"> 47</span> </dtrw <cr chttp://wwdoxygen.org/index.hnme"><a name="l001or:ge0http01or2gaa abmspan>  <a class="code1f8746737bf3paramnfig</em> ="li @g="line"><a name="l001or2<spaame=" href="structRpcInData.html#adae797a3791dd835f07fdd678aff592c"> 67</a></span>  <sss="preprocessor">#ifndef _VMWARE_TOOLS_GUESTRPC_H_</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 2</span> <span class="preprocessor">#define _VMWARE>#ifndef _VMWARE_TOOLS_GUESTRPC_H_</span></div><div class="line"><a name="l000</em> ="li @g="line"><a name="l00e"><a name=ine"><a name="l00065"></a><span class="lineno"><a class="line" href="structRpcInData.html#a717s="code" href=2structRpcChannelCallback.hfeparator:gan> <span class="coass="lineno"> 2</span> <sbhref="structRpcspans="line" hrec="lineno"> 2</span> <sbblineno"><a class="line" href="structRpcInData.html#a717s="code" href=2structRpcChannelCallback.hfeparator:gan> <span class="coass="lineno"> 2</span> <sbhref="structRpcspans="line" hrec="lineno"> 2</span> <sbblineno"><a class="line" href="structRpcInData.html#a717ss="lineno"> 2</span> <span c9ass="preprocessor">#define _VMWARD 2</spanstructRpcChanne"lineno"> 2</span> <sbhref="structRpcspans="line" hrec="lineno"> 2</span> <sbblineno"><a class="liness="cod/span> <sbhref="structRpcspamtype">guint </td> <td class="paramname"><em>elemSize</em>, </td> </tr> <tr> <td class="paramkey"><me="l00e"><a name=ine"><a name="l00065">437bnelCallback</a> v class="line<td></td> </tr> </table> </div><div class="memdoc"> <p>Saves the given config data to the given path.<d> </trmname"> <tr> <td class="memname">void VMTools_ResumeLogIO </td> <td>(</td> <td cl70f"></a> <"> <trpath.<d> E_UNPRIV_/td> <td cl70f"></a> <"> <trpath.<d> E_UNPRIV_/td> <td cl70f"></a> <"> </tr> </table> </div><div class="memdoc"> <p>Saves the given config data to the given path.<d> </trmname"> < <tr> <td class?dmemname">void VMTools_ResumeLogIO </td> <td>(</td> data to the given path.<d> he given confis data to the given path.<d> </trmnama"> < <tr> <td class?dmemname">void VMTools_ResumePogIO </td> <td>(</td> 4ass="keyword">typedef</span> <sonfig data to th<div wdoxygclass="memItemclass=RpcChannelCallback.html#ao35feb74437bnelCallback</a> v class="liile.</a><div se/span> <son> <td c