xdrwtx.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:64k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* xdrwtx.c  - xdr routines for Wind River Tool eXchange protocol */
  2. /* Copyright 1984-1997 Wind River Systems, Inc. */
  3. #include "copyright_wrs.h"
  4. /*
  5. modification history
  6. --------------------
  7. 03b,03apr02,c_c  Changed xdr_wrapstring to xdr_string to workaround a xdr
  8.                  limitation on the target (SPR #74773).
  9. 03a,15jun01,pch  Add new WTX_TS_INFO_GET_V2 service to handle WTX_RT_INFO
  10.                  change (from BOOL32 hasFpp to UINT32 hasCoprocessor) without
  11.                  breaking existing clients.
  12. 02z,10may01,dtr  Changing coprocessor flags into one word.
  13. 02y,06feb01,dtr  Adding probe for Altivec registers.
  14. 02x,18aug98,pcn  Re-use WTX_MSG_EVTPT_LIST_2.
  15. 02w,20jul98,pcn  Added evtptNum and toolId in the wtxEventpointListGet return
  16.                  list.
  17. 02v,19jun98,pcn  Changed xdr_WTX_MSG_FILE_LOAD_DESC to accept new fields.
  18. 02u,26may98,pcn  Changed WTX_MSG_EVTPT_LIST_2 in WTX_MSG_EVTPT_LIST_GET.
  19. 02t,26mar98,pcn  Updated history.
  20. 02s,23mar98,pcn  WTX 2: added test in xdr_WTX_MSG_FILE_LOAD_DESC to take care 
  21.  of different behaviors of wtxObjModuleLoad_2.
  22. 02r,02mar98,pcn  WTX 2: added xdr_MEM_WIDTH_COPY_ALLOC,
  23.                  xdr_WTX_MSG_MEM_WIDTH_READ_DESC,
  24.                  xdr_WTX_MSG_MEM_WIDTH_COPY_DESC, xdr_WTX_EVENT_NODE,
  25.                  xdr_MSG_EVENT_LIST, xdr_WTX_MSG_FILE_LOAD_DESC,
  26.                  xdr_WTX_LD_M_FILE_DESC, xdr_WTX_EVENT_2, xdr_WTX_EVTPT_2,
  27.                  xdr_WTX_MSG_EVTPT_DESC_2, xdr_WTX_MSG_EVTPT_LIST_2. Changed
  28.                  xdr_WTX_MSG_EVTPT_LIST, xdr_WTX_EVENT_DESC.
  29. 02q,13feb98,c_c  Fixed a memory leak in xdr_WTX_MSG_CONTEXT_DESC
  30. 02p,29aug97,fle  Adding the WTX_MEM_DISASSEMBLE service
  31. 02o,30sep96,elp  put in share, adapted to be compiled on target side
  32.  (SPR# 6775).
  33. 02n,28jun96,c_s  subvert prototypes in AIX's <rpc/xdr.h> to temporarily
  34.                  work around problems with XDR arguments that change
  35.                  signedness.
  36. 02m,17jun96,p_m  changed flags type in xdr_WTX_MSG_OPEN_DESC() (SPR# 4941).
  37. 02l,10jun96,elp  re-installed 02j (fix SPR# 6502 without protocol change).
  38. 02k,20may96,elp  updated xdr_WTX_MSG_SYM_TBL_INFO to new WTX_MSG_SYM_TBL_INFO
  39.  type (SPR# 6205).
  40. 02j,31aug95,p_m  added free() in xdr_WTX_MSG_VIO_COPY_DESC() (SPR# 4804).
  41. 02i,06jun95,p_m  took care of WTX_MSG_SYM_MATCH_DESC changes in
  42.  xdr_WTX_MSG_SYM_MATCH_DESC().
  43. 02h,01jun95,p_m  removed WTX_MSG_CALL_PARAM and modified WTX_MSG_CONTEXT_DESC.
  44. 02g,30may95,p_m  completed WTX_MEM_SCAN and WTX_MEM_MOVE implementation.
  45. 02f,26may95,p_m  added match field in WTX_MSG_MEM_SCAN_DESC.
  46. 02e,23may95,p_m  made missing name changes.
  47. 02d,22may95,jcf  name revision.
  48. 02c,19may95,p_m  got rid of DETECTION related stuff.
  49. 02b,16may95,p_m  added xdr_WTX_MSG_KILL_DESC.
  50. 02a,14may95,c_s  fixed memory leak in xdr_WTX_MEM_XFER; fixed free-memory 
  51.                    fault in xdr_WTX_SYM_LIST.
  52. 01z,10may95,pad  modified xdr_WTX_MSG_SYM_LIST and xdr_WTX_MSG_SYM_MATCH_DESC.
  53. 01y,09may95,p_m  re-implemented wtxregd related XDR procedures. Added Target 
  54.  Server version in WTX_MSG_TS_INFO.
  55. 01x,05may95,p_m  added protVersion in xdr_WTX_CORE.
  56. 01w,02may95,pad  xdr_WTX_MSG_MODULE_INFO now handles format field as char *
  57. 01v,30mar95,p_m  changed xdr_CONTEXT_ID_T() to xdr_WTX_CONTEXT_ID_T().
  58. 01u,20mar95,c_s  updated GOPHER structure filters.
  59. 01t,16mar95,p_m  added xdr_WTX_MSG_VIO_FILE_LIST().
  60. 01s,10mar95,p_m  changed endian field to u_long.
  61. 01r,03mar95,p_m  merged with wtxxdr.c.
  62.  added gopher routines.
  63. 01q,27feb95,p_m  cleanup up xdr_WTX_MSG_MEM_SCAN_DESC.
  64.  added symTblId to xdr_WTX_MSG_SYM_TBL_INFO.
  65.  simplified WTX_WDB_SERVICE_DESC.
  66. 01p,25feb95,jcf  extended xdr_WTX_TS_INFO.
  67. 01o,21feb95,pad  added xdr_WTX_WTX_SERVICE_DESC() and modified
  68.  xdr_WTX_MSG_SERVICE_DESC().
  69. 01n,08feb95,p_m  added loadFlag in WTX_MODULE_INFO.
  70.  changed to xdr_WTX_MSG... for more coherency.
  71.  added many filters now that WTX and WDB are separated.
  72. 01m,30jan95,p_m  added additional routines objects and name to 
  73.  xdr_SERVICE_DESC().
  74.  added xdr_WTX_MEM_XFER(), xdr_WTX_REG_WRITE()
  75.  and  xdr_WTX_MEM_SET_DESC().
  76. 01l,23jan95,p_m  updated xdr_TOOL_DESC and xdr_WTX_TS_INFO.
  77.  replaced #include "wdb/xdrwdb.h" with #include "xdrwdb.h".
  78.  replace rtnName by initRtnName in xdr_SERVICE_DESC().
  79. 01k,21jan95,jcf  updated include files.
  80. 01j,13dec94,p_m  updated to use files generated from wtx.x.
  81.  added xdr_WTX_MEM_INFO().
  82.  added WTX_SYM_LIST to LD_M_FILE to return undefined symbols.
  83.  changed xdr_WTX_WRAP_STRING() to xdr_WRAPSTRING().
  84.  added addlDataLen and addData fields to WTX_EVENT.
  85. 01i,17nov94,p_m  added symFlag to xdr_LD_M_FILE(). changed all routine 
  86.  pointers to routine names in SERVICE_DESC.
  87. 01h,14nov94,p_m  renamed VIO_OPEN_DESC to OPEN_DESC and added channel to 
  88.  OPEN_DESC.
  89. 01g,11nov94,p_m  removed xdr_WTX_GOPHER_TAPE.
  90. 01f,28oct94,p_m  added returnType field in WTX_CALL_PARAMS.
  91.  added pEvtpt field management in EVTPT_LIST.
  92.  added xdr_SYM_TAB_INFO() and xdr_SYM_TAB_LIST().
  93.  changed xdr_SYM_TAB_PARAM() to xdr_SYM_TBL_PARAM().
  94.  added xdr object file names in xdr_SERVICE_DESC.
  95.  added display in xdr_CONSOLE_DESC.
  96. 01e,27oct94,p_m  added exactName field in WTX_SYMBOL.
  97. 01d,24oct94,p_m  added xdr_WTX_WRAP_STRING() and xdr_SYM_MATCH_DESC. 
  98.    changed xdr_WTX_CALL_PARAMS().
  99.  added moduleId handling in xdr_LD_M_FILE().
  100.  added xdr_WTX_SYM_LIST().
  101. 01c,20oct94,p_m  added xdr_MEM_COPY_ALLOC() and xdr_WTX_SYMBOL(). Added 
  102.  moduleId handling in xdr_WTX_MODULE_INFO. Added null
  103.  pointer handling in xdr_MOD_NAME_OR_ID.
  104. 01b,19oct94,p_m  added xdr_pointers in xdr_WTX_TS_INFO.
  105. 01a,04oct94,p_m  written.
  106. */
  107. /*
  108. DESCRIPTION
  109. This module contains the eXternal Data Representation (XDR) routines
  110. for the WTX protocol.
  111. */
  112. #if defined (RS6000_AIX4)
  113. /* AIX is extremely picky about the signedness of arguments passed to 
  114.    stock xdr rouintes.  This hack ends that debate. */
  115. #define _NO_PROTO
  116. #endif /* !RS6000_AIX4 */
  117. #include <stdlib.h>
  118. #include "rpc/rpc.h"
  119. #include "wtx.h"
  120. #include "wtxmsg.h"
  121. #include "wtxxdr.h"
  122. #define LASTUNSIGNED      ((u_int) 0-1) /* taken from SUN xdr.c file */
  123. /*******************************************************************************
  124. *
  125. * xdr_WRAPSTRING - possibly NULL string pointer
  126. *
  127. */
  128. bool_t xdr_WRAPSTRING 
  129.     (
  130.     XDR * xdrs,
  131.     char ** string
  132.     )
  133.     {
  134.     BOOL moreData;
  135.     moreData = (*string != NULL); /* string is a NULL pointer ?*/
  136.     if (!xdr_bool(xdrs, &moreData)) /* code/decode test result */
  137. return (FALSE);
  138.     if (!moreData)
  139. *string = NULL; /* YES: string is NULL */
  140.     else  /* NO: code/decode the string */
  141. {
  142. if (xdrs->x_op == XDR_DECODE)
  143.     *string = NULL;
  144.      if (!xdr_string (xdrs, string, LASTUNSIGNED))
  145.     return (FALSE);
  146. }
  147.     return (TRUE);
  148.     }
  149. #ifdef HOST
  150. /*******************************************************************************
  151. *
  152. * xdr_TGT_ADDR_T - WTX
  153. *
  154. */
  155. bool_t xdr_TGT_ADDR_T 
  156.     (
  157.     XDR *           xdrs,
  158.     TGT_ADDR_T * objp
  159.     )
  160.     {
  161.     if (!xdr_u_long (xdrs, objp))
  162. return (FALSE);
  163.     return (TRUE);
  164.     }
  165. #endif
  166. /*******************************************************************************
  167. *
  168. * xdr_TGT_ARG_T - WTX
  169. *
  170. */
  171. bool_t xdr_TGT_ARG_T 
  172.     (
  173.     XDR *       xdrs,
  174.     TGT_ARG_T * objp
  175.     )
  176.     {
  177.     if (!xdr_u_long (xdrs, objp))
  178. return (FALSE);
  179.     return (TRUE);
  180.     }
  181. /*******************************************************************************
  182. *
  183. * xdr_WTX_CONTEXT_ID_T - WTX
  184. *
  185. */
  186. bool_t xdr_WTX_CONTEXT_ID_T 
  187.     (
  188.     XDR *         xdrs,
  189.     WTX_CONTEXT_ID_T * objp
  190.     )
  191.     {
  192.     if (!xdr_u_long (xdrs, (u_long *)objp))
  193. return (FALSE);
  194.     return (TRUE);
  195.     }
  196. /*******************************************************************************
  197. *
  198. * xdr_WTX_VALUE - WTX
  199. *
  200. */
  201. bool_t xdr_WTX_VALUE
  202.     (
  203.     XDR *xdrs,
  204.     WTX_VALUE *objp
  205.     )
  206.     {
  207. if (!xdr_enum(xdrs, (enum_t *)&objp->valueType)) {
  208. return (FALSE);
  209. }
  210. switch (objp->valueType) {
  211. case 0:
  212. if (!xdr_char(xdrs, &objp->value_u.v_int8)) {
  213. return (FALSE);
  214. }
  215. break;
  216. case 1:
  217. if (!xdr_short(xdrs, &objp->value_u.v_int16)) {
  218. return (FALSE);
  219. }
  220. break;
  221. case 2:
  222. if (!xdr_long(xdrs, (long *)&objp->value_u.v_int32)) {
  223. return (FALSE);
  224. }
  225. break;
  226. case 3:
  227. if (!xdr_u_char(xdrs, &objp->value_u.v_uint8)) {
  228. return (FALSE);
  229. }
  230. break;
  231. case 4:
  232. if (!xdr_u_short(xdrs, &objp->value_u.v_uint16)) {
  233. return (FALSE);
  234. }
  235. break;
  236. case 5:
  237. if (!xdr_u_long(xdrs, (u_long *)&objp->value_u.v_uint32)) {
  238. return (FALSE);
  239. }
  240. break;
  241. case 6:
  242. if (!xdr_double(xdrs, &objp->value_u.v_double)) {
  243. return (FALSE);
  244. }
  245. break;
  246. case 7:
  247. if (!xdr_long(xdrs, (long *)&objp->value_u.v_bool32)) {
  248. return (FALSE);
  249. }
  250. break;
  251. case 8:
  252. if (!xdr_WRAPSTRING(xdrs, &objp->value_u.v_pchar)) {
  253. return (FALSE);
  254. }
  255. break;
  256. /* XXX p_m treat void * as a long for now */
  257. case 9:
  258. if (!xdr_long(xdrs, (long *)&objp->value_u.v_pvoid)) {
  259. return (FALSE);
  260. }
  261. break;
  262. case 10:
  263. if (!xdr_TGT_ADDR_T(xdrs, &objp->value_u.v_tgt_addr)) {
  264. return (FALSE);
  265. }
  266. break;
  267. case 11:
  268. if (!xdr_TGT_ARG_T(xdrs, &objp->value_u.v_tgt_arg)) {
  269. return (FALSE);
  270. }
  271. break;
  272. }
  273. return (TRUE);
  274.     }
  275. /*******************************************************************************
  276. *
  277. * xdr_WTX_MSG_RESULT - WTX
  278. *
  279. */
  280. bool_t xdr_WTX_MSG_RESULT 
  281.     (
  282.     XDR *           xdrs,
  283.     WTX_MSG_RESULT * objp
  284.     )
  285.     {
  286.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  287. return (FALSE);
  288.     if (!xdr_WTX_VALUE (xdrs, &objp->val))
  289. return (FALSE);
  290.     return (TRUE);
  291.     }
  292. /*******************************************************************************
  293. *
  294. * xdr_WTX_MSG_PARAM - WTX
  295. *
  296. */
  297. bool_t xdr_WTX_MSG_PARAM 
  298.     (
  299.     XDR *           xdrs,
  300.     WTX_MSG_PARAM * objp
  301.     )
  302.     {
  303.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  304. return (FALSE);
  305.     if (!xdr_WTX_VALUE (xdrs, &objp->param))
  306. return (FALSE);
  307.     return (TRUE);
  308.     }
  309. /*******************************************************************************
  310. *
  311. * xdr_WTX_MEM_REGION - WTX
  312. *
  313. */
  314. bool_t xdr_WTX_MEM_REGION 
  315.     (
  316.     XDR *           xdrs,
  317.     WTX_MEM_REGION * objp
  318.     )
  319.     {
  320.     if (!xdr_TGT_ADDR_T (xdrs, &objp->baseAddr))
  321. return (FALSE);
  322.     if (!xdr_u_long (xdrs, (u_long *)&objp->size))
  323. return (FALSE);
  324.     if (!xdr_u_long (xdrs, (u_long *)&objp->attribute))
  325. return (FALSE);
  326.     return (TRUE);
  327.     }
  328. /*******************************************************************************
  329. *
  330. * xdr_WTX_TGT_LINK_DESC - target link descriptor
  331. *
  332. */
  333. bool_t xdr_WTX_TGT_LINK_DESC 
  334.     (
  335.     XDR *     xdrs,
  336.     WTX_TGT_LINK_DESC * objp
  337.     )
  338.     {
  339.     if (!xdr_WRAPSTRING (xdrs, &objp->name))
  340. return (FALSE);
  341.     if (!xdr_u_long (xdrs, (u_long *)&objp->type))
  342. return (FALSE);
  343.     if (!xdr_u_long (xdrs, (u_long *)&objp->speed))
  344. return (FALSE);
  345.     return (TRUE);
  346.     }
  347. /*******************************************************************************
  348. *
  349. * xdr_WTX_RT_INFO - 
  350. *
  351. */
  352. LOCAL bool_t xdr_WTX_RT_INFO
  353.     (
  354.     XDR * xdrs,
  355.     WTX_RT_INFO * objp,
  356.     int msgVersion
  357.     )
  358.     {
  359. if (!xdr_u_long(xdrs, (u_long *)&objp->rtType)) {
  360. return (FALSE);
  361. }
  362. if (!xdr_WRAPSTRING(xdrs, &objp->rtVersion)) {
  363. return (FALSE);
  364. }
  365. if (!xdr_u_long(xdrs, (u_long *)&objp->cpuType)) {
  366. return (FALSE);
  367. }
  368. if (msgVersion == 1) {
  369.     /*
  370.      * The BOOL32 field named hasFpp has been replaced by a
  371.      * bit-significant UINT32 named hasCoprocessor.  For a
  372.      * v1 inquiry, report only the FPP bit (as a BOOL32).
  373.      */
  374.     BOOL32 bTemp = objp->hasCoprocessor & WTX_FPP_MASK;
  375.     if (!xdr_bool(xdrs, (bool_t *)&bTemp)) {
  376. return (FALSE);
  377.     }
  378. }
  379. else {
  380.     if (!xdr_u_long(xdrs, (u_long *)&objp->hasCoprocessor)) {
  381. return (FALSE);
  382.     }
  383. }
  384. if (!xdr_bool(xdrs, (bool_t *)&objp->hasWriteProtect)) {
  385. return (FALSE);
  386. }
  387. if (!xdr_u_long(xdrs, (u_long *)&objp->pageSize)) {
  388. return (FALSE);
  389. }
  390. if (!xdr_u_long(xdrs, (u_long *)&objp->endian)) {
  391. return (FALSE);
  392. }
  393. if (!xdr_WRAPSTRING(xdrs, &objp->bspName)) {
  394. return (FALSE);
  395. }
  396. if (!xdr_WRAPSTRING(xdrs, &objp->bootline)) {
  397. return (FALSE);
  398. }
  399. if (!xdr_TGT_ADDR_T(xdrs, &objp->memBase)) {
  400. return (FALSE);
  401. }
  402. if (!xdr_u_long(xdrs, (u_long *)&objp->memSize)) {
  403. return (FALSE);
  404. }
  405. if (!xdr_u_long(xdrs, (u_long *)&objp->numRegions)) {
  406. return (FALSE);
  407. }
  408. if (!xdr_pointer(xdrs, (char **)&objp->memRegion, 
  409. sizeof(WTX_MEM_REGION), xdr_WTX_MEM_REGION)) {
  410. return (FALSE);
  411. }
  412. if (!xdr_TGT_ADDR_T(xdrs, &objp->hostPoolBase)) {
  413. return (FALSE);
  414. }
  415. if (!xdr_u_long(xdrs, (u_long *)&objp->hostPoolSize)) {
  416. return (FALSE);
  417. }
  418.     return (TRUE);
  419.     }
  420. /*******************************************************************************
  421. *
  422. * xdr_WTX_AGENT_INFO - 
  423. *
  424. */
  425. bool_t xdr_WTX_AGENT_INFO
  426.     (
  427.     XDR * xdrs,
  428.     WTX_AGENT_INFO * objp
  429.     )
  430.     {
  431. if (!xdr_WRAPSTRING(xdrs, &objp->agentVersion)) {
  432. return (FALSE);
  433. }
  434. if (!xdr_u_long(xdrs, (u_long *)&objp->mtu)) {
  435. return (FALSE);
  436. }
  437. if (!xdr_u_long(xdrs, (u_long *)&objp->mode)) {
  438. return (FALSE);
  439. }
  440.     return (TRUE);
  441.     }
  442. /*******************************************************************************
  443. *
  444. * xdr_WTX_TGT_INFO - WTX
  445. *
  446. */
  447. LOCAL bool_t xdr_WTX_TGT_INFO 
  448.     (
  449.     XDR * xdrs,
  450.     WTX_TGT_INFO * objp,
  451.     int msgVersion
  452.     )
  453.     {
  454.     if (!xdr_WTX_AGENT_INFO (xdrs, &objp->agentInfo))
  455. return (FALSE);
  456.     if (!xdr_WTX_RT_INFO (xdrs, &objp->rtInfo, msgVersion))
  457. return (FALSE);
  458.     return (TRUE);
  459.     }
  460. /*******************************************************************************
  461. *
  462. * xdr_WTX_TOOL_DESC - host tool descriptor
  463. *
  464. */
  465. bool_t xdr_WTX_TOOL_DESC 
  466.     (
  467.     XDR *       xdrs,
  468.     WTX_TOOL_DESC * objp
  469.     )
  470.     {
  471.     if (!xdr_u_long (xdrs, (u_long *)&objp->id))
  472. return (FALSE);
  473.     if (!xdr_WRAPSTRING (xdrs, &objp->toolName))
  474. return (FALSE);
  475.     if (!xdr_WRAPSTRING (xdrs, &objp->toolArgv))
  476. return (FALSE);
  477.     if (!xdr_WRAPSTRING (xdrs, &objp->toolArgv))
  478. return (FALSE);
  479.     if (!xdr_WRAPSTRING (xdrs, &objp->userName))
  480. return (FALSE);
  481.     if (!xdr_pointer (xdrs, (char **) &objp->next, 
  482. sizeof(WTX_TOOL_DESC), xdr_WTX_TOOL_DESC))
  483. return (FALSE);
  484.     return (TRUE);
  485.     }
  486. /*******************************************************************************
  487. *
  488. * xdr_WTX_MSG_TOOL_DESC - WTX host tool descriptor
  489. *
  490. */
  491. bool_t xdr_WTX_MSG_TOOL_DESC 
  492.     (
  493.     XDR *           xdrs,
  494.     WTX_MSG_TOOL_DESC * objp
  495.     )
  496.     {
  497.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  498. return (FALSE);
  499.     if (!xdr_WTX_TOOL_DESC (xdrs, &objp->wtxToolDesc))
  500. return (FALSE);
  501.     return (TRUE);
  502.     }
  503. /*******************************************************************************
  504. *
  505. * xdr_WTX_MSG_TS_INFO - target server information
  506. *
  507. */
  508. LOCAL bool_t xdr_WTX_MSG_TS_INFO 
  509.     (
  510.     XDR * xdrs,
  511.     WTX_MSG_TS_INFO * objp,
  512.     int msgVersion
  513.     )
  514.     {
  515.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  516. return (FALSE);
  517.     if (!xdr_WTX_TGT_LINK_DESC (xdrs, &objp->tgtLinkDesc))
  518. return (FALSE);
  519.     if (!xdr_WTX_TGT_INFO (xdrs, &objp->tgtInfo, msgVersion))
  520. return (FALSE);
  521.     if (!xdr_pointer (xdrs, (char **)&objp->pWtxToolDesc, 
  522.       sizeof (WTX_TOOL_DESC), xdr_WTX_TOOL_DESC))
  523. return (FALSE);
  524.     if (!xdr_WRAPSTRING (xdrs, &objp->version))
  525. return (FALSE);
  526.     if (!xdr_WRAPSTRING (xdrs, &objp->userName))
  527. return (FALSE);
  528.     if (!xdr_WRAPSTRING (xdrs, &objp->startTime))
  529. return (FALSE);
  530.     if (!xdr_WRAPSTRING (xdrs, &objp->accessTime))
  531. return (FALSE);
  532.     if (!xdr_WRAPSTRING (xdrs, &objp->lockMsg))
  533. return (FALSE);
  534.     return (TRUE);
  535.     }
  536. /*******************************************************************************
  537. *
  538. * xdr_WTX_MSG_TS_INFO_V1 - target server information
  539. *
  540. */
  541. bool_t xdr_WTX_MSG_TS_INFO_V1
  542.     (
  543.     XDR * xdrs,
  544.     WTX_MSG_TS_INFO * objp
  545.     )
  546.     {
  547.     return xdr_WTX_MSG_TS_INFO (xdrs, objp, 1);
  548.     }
  549. /*******************************************************************************
  550. *
  551. * xdr_WTX_MSG_TS_INFO_V2 - target server information
  552. *
  553. */
  554. bool_t xdr_WTX_MSG_TS_INFO_V2
  555.     (
  556.     XDR * xdrs,
  557.     WTX_MSG_TS_INFO * objp
  558.     )
  559.     {
  560.     return xdr_WTX_MSG_TS_INFO (xdrs, objp, 2);
  561.     }
  562. /*******************************************************************************
  563. *
  564. * xdr_WTX_MSG_TS_LOCK - lock target server
  565. *
  566. */
  567. bool_t xdr_WTX_MSG_TS_LOCK 
  568.     (
  569.     XDR *   xdrs,
  570.     WTX_MSG_TS_LOCK * objp
  571.     )
  572.     {
  573.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  574. return (FALSE);
  575.     if (!xdr_u_long (xdrs, (u_long *)&objp->lockType))
  576. return (FALSE);
  577.     return (TRUE);
  578.     }
  579. /*******************************************************************************
  580. *
  581. * xdr_WTX_MSG_TS_UNLOCK - unlock target server
  582. *
  583. */
  584. bool_t xdr_WTX_MSG_TS_UNLOCK 
  585.     (
  586.     XDR *   xdrs,
  587.     WTX_MSG_TS_UNLOCK * objp
  588.     )
  589.     {
  590.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  591. return (FALSE);
  592.     if (!xdr_bool (xdrs, (bool_t *)&objp->force))
  593. return (FALSE);
  594.     return (TRUE);
  595.     }
  596. /*******************************************************************************
  597. *
  598. * xdr_MEM_COPY_ALLOC - allocate space and decode a MEM_COPY stucture
  599. *
  600. * This function decodes or frees the MEM_COPY structure protocol and
  601. * allocate space to copy the data area referenced by the MEM_COPY
  602. * structure.  The start address is handled by the source field and the size
  603. * by numBytes. At the decoding time, the data are decoded and saved in a
  604. * memory area allocated.  This function is needed to hanlde WTX_MEM_WRITE
  605. * requests that use a target address as the destination pointer. In this
  606. * case we must first copy the data into the target server before forwarding
  607. * them to the target.
  608. * RETURNS:  TRUE if it succeeds, FALSE otherwise.
  609. */
  610. bool_t xdr_MEM_COPY_ALLOC
  611.     (
  612.     XDR * xdrs,
  613.     WTX_MSG_MEM_COPY_DESC * objp
  614.     )
  615.     {
  616.     char * buff; /* buffer where to decode data */
  617.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  618. return (FALSE);
  619.     if (!xdr_u_long (xdrs, (u_long *)&objp->source))
  620. return (FALSE);
  621.     if (!xdr_TGT_ADDR_T (xdrs, &objp->destination))
  622. return (FALSE);
  623.     if (!xdr_u_long (xdrs, (u_long *)&objp->numBytes))
  624. return (FALSE);
  625.     switch (xdrs->x_op) 
  626. {
  627.      case XDR_DECODE:
  628.             {  /* export block */
  629.     if ((buff = (char *)malloc (objp->numBytes)) == NULL)
  630.         return (FALSE);
  631.     if (!xdr_opaque (xdrs, (char *)buff, objp->numBytes))
  632.         return (FALSE);
  633.             /* 
  634.      * Save the allocated buffer address in objp->source for
  635.      * later use by the target server.
  636.      */
  637.     objp->source = (u_int) buff;
  638.     return (TRUE);
  639.     }
  640.      case XDR_ENCODE:
  641.     return (FALSE); /* encoding not supported */
  642.      case XDR_FREE: /* free memory */
  643.     return (TRUE);
  644. }
  645.     return (FALSE);
  646.     }
  647. /*******************************************************************************
  648. *
  649. * xdr_MEM_WIDTH_COPY_ALLOC - allocate space and decode a MEM_COPY stucture
  650. *
  651. * This function decodes or frees the MEM_COPY structure protocol and
  652. * allocate space to copy the data area referenced by the MEM_COPY
  653. * structure.  The start address is handled by the source field and the size
  654. * by numBytes. At the decoding time, the data are decoded and saved in a
  655. * memory area allocated.  This function is needed to hanlde WTX_MEM_WRITE
  656. * requests that use a target address as the destination pointer. In this
  657. * case we must first copy the data into the target server before forwarding
  658. * them to the target.
  659. *
  660. * RETURNS:  TRUE if it succeeds, FALSE otherwise.
  661. */
  662. bool_t xdr_MEM_WIDTH_COPY_ALLOC
  663.     (
  664.     XDR *                             xdrs,
  665.     WTX_MSG_MEM_WIDTH_COPY_DESC *     objp
  666.     )
  667.     {
  668.     char * buff;        /* buffer where to decode data */
  669.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  670.         return (FALSE);
  671.     if (!xdr_u_long (xdrs, (u_long *)&objp->source))
  672.         return (FALSE);
  673.     if (!xdr_TGT_ADDR_T (xdrs, &objp->destination))
  674.         return (FALSE);
  675.     if (!xdr_u_long (xdrs, (u_long *)&objp->numBytes))
  676.         return (FALSE);
  677.     if (!xdr_u_char (xdrs, &objp->width))
  678.         return (FALSE);
  679.     switch (xdrs->x_op)
  680.         {
  681.         case XDR_DECODE:
  682.             {                                            /* export block */
  683.             if ((buff = (char *)malloc (objp->numBytes)) == NULL)
  684.                 return (FALSE);
  685.             if (!xdr_opaque (xdrs, (char *)buff, objp->numBytes))
  686.                 return (FALSE);
  687.             /*
  688.              * Save the allocated buffer address in objp->source for
  689.              * later use by the target server.
  690.              */
  691.             objp->source = (u_int) buff;
  692.             return (TRUE);
  693.             }
  694.         case XDR_ENCODE:
  695.             return (FALSE);                     /* encoding not supported */
  696.         case XDR_FREE:                          /* free memory */
  697.             return (TRUE);
  698.         }
  699.     return (FALSE);
  700.     }
  701. /*******************************************************************************
  702. *
  703. * xdr_WTX_MSG_TOOL_ID - WTX tool identifier
  704. *
  705. */
  706. bool_t xdr_WTX_MSG_TOOL_ID 
  707.     (
  708.     XDR *         xdrs,
  709.     WTX_MSG_TOOL_ID * objp
  710.     )
  711.     {
  712.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  713. return (FALSE);
  714.     return (TRUE);
  715.     }
  716. /*******************************************************************************
  717. *
  718. * xdr_WTX_MSG_KILL_DESC - WTX kill operation descriptor
  719. *
  720. */
  721. bool_t xdr_WTX_MSG_KILL_DESC 
  722.     (
  723.     XDR *         xdrs,
  724.     WTX_MSG_KILL_DESC * objp
  725.     )
  726.     {
  727.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  728. return (FALSE);
  729.     if (!xdr_u_long (xdrs, (u_long *)&objp->request))
  730. return (FALSE);
  731.     if (!xdr_WTX_VALUE (xdrs, &objp->arg))
  732. return (FALSE);
  733.     return (TRUE);
  734.     }
  735. /*******************************************************************************
  736. *
  737. * xdr_WTX_EVENT - WTX
  738. *
  739. */
  740. bool_t xdr_WTX_EVENT 
  741.     (
  742.     XDR *        xdrs,
  743.     WTX_EVENT * objp
  744.     )
  745.     {
  746.     if (!xdr_enum (xdrs, (enum_t *)&objp->eventType))
  747. return (FALSE);
  748.     if (!xdr_TGT_ARG_T (xdrs, &objp->eventArg))
  749. return (FALSE);
  750.     return (TRUE);
  751.     }
  752. /*******************************************************************************
  753. *
  754. * xdr_WTX_ACTION - WTX
  755. *
  756. */
  757. bool_t xdr_WTX_ACTION 
  758.     (
  759.     XDR *        xdrs,
  760.     WTX_ACTION * objp
  761.     )
  762.     {
  763.     if (!xdr_enum (xdrs, (enum_t *)&objp->actionType))
  764. return (FALSE);
  765.     if (!xdr_u_long (xdrs, (u_long *)&objp->actionArg))
  766. return (FALSE);
  767.     if (!xdr_TGT_ADDR_T (xdrs, &objp->callRtn))
  768. return (FALSE);
  769.     if (!xdr_TGT_ARG_T (xdrs, &objp->callArg))
  770. return (FALSE);
  771.     return (TRUE);
  772.     }
  773. /*******************************************************************************
  774. *
  775. * xdr_WTX_CONTEXT - WTX context
  776. *
  777. */
  778. bool_t xdr_WTX_CONTEXT 
  779.     (
  780.     XDR *        xdrs,
  781.     WTX_CONTEXT * objp
  782.     )
  783.     {
  784.     if (!xdr_enum (xdrs, (enum_t *)&objp->contextType))
  785. return (FALSE);
  786.     if (!xdr_WTX_CONTEXT_ID_T (xdrs, &objp->contextId))
  787. return (FALSE);
  788.     return (TRUE);
  789.     }
  790. /*******************************************************************************
  791. *
  792. * xdr_WTX_MSG_CONTEXT - WTX context message
  793. *
  794. */
  795. bool_t xdr_WTX_MSG_CONTEXT 
  796.     (
  797.     XDR *        xdrs,
  798.     WTX_MSG_CONTEXT * objp
  799.     )
  800.     {
  801.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  802. return (FALSE);
  803.     if (!xdr_enum (xdrs, (enum_t *)&objp->contextType))
  804. return (FALSE);
  805.     if (!xdr_WTX_CONTEXT_ID_T (xdrs, &objp->contextId))
  806. return (FALSE);
  807.     return (TRUE);
  808.     }
  809. /*******************************************************************************
  810. *
  811. * xdr_WTX_EVTPT - WTX
  812. *
  813. */
  814. bool_t xdr_WTX_EVTPT 
  815.     (
  816.     XDR *        xdrs,
  817.     WTX_EVTPT * objp
  818.     )
  819.     {
  820.     if (!xdr_WTX_EVENT (xdrs, &objp->event))
  821. return (FALSE);
  822.     if (!xdr_WTX_CONTEXT (xdrs, &objp->context))
  823. return (FALSE);
  824.     if (!xdr_WTX_ACTION (xdrs, &objp->action))
  825. return (FALSE);
  826.     return (TRUE);
  827.     }
  828. /*******************************************************************************
  829. *
  830. * xdr_WTX_MSG_EVTPT_DESC - WTX
  831. *
  832. */
  833. bool_t xdr_WTX_MSG_EVTPT_DESC 
  834.     (
  835.     XDR *        xdrs,
  836.     WTX_MSG_EVTPT_DESC * objp
  837.     )
  838.     {
  839.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  840. return (FALSE);
  841.     if (!xdr_WTX_EVTPT (xdrs, &objp->wtxEvtpt))
  842. return (FALSE);
  843.     return (TRUE);
  844.     }
  845. /*******************************************************************************
  846. *
  847. * xdr_WTX_MSG_EVTPT_LIST - eventpoint list
  848. *
  849. */
  850. bool_t xdr_WTX_MSG_EVTPT_LIST 
  851.     (
  852.     XDR *        xdrs,
  853.     WTX_MSG_EVTPT_LIST * objp
  854.     )
  855.     {
  856.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  857. return (FALSE);
  858.     if (!xdr_u_long (xdrs, (u_long *)&objp->nEvtpt))
  859. return (FALSE);
  860.     if (!xdr_array (xdrs, (char **)&objp->pEvtpt, (u_int *)&objp->nEvtpt, 
  861.     ~0, sizeof (WTX_EVTPT), xdr_WTX_EVTPT))
  862. return (FALSE);
  863.     return (TRUE);
  864.     }
  865. /*******************************************************************************
  866. *
  867. * xdr_WTX_MEM_XFER - allocate space and decode a WTX_MEM_XFER stucture
  868. *
  869. * This function decodes or frees the WTX_MEM_XFER structure and
  870. * allocate space to copy the data area referenced by the WTX_MEM_XFER
  871. * structure.  The start address is handled by the source field and the size
  872. * by numBytes. At the decoding time, the data are decoded and saved in a
  873. * memory area allocated.  
  874. * RETURNS:  TRUE if it succeeds, FALSE otherwise.
  875. */
  876. bool_t xdr_WTX_MEM_XFER
  877.     (
  878.     XDR * xdrs,
  879.     WTX_MEM_XFER * objp
  880.     )
  881.     {
  882.     char * buff; /* buffer where to decode data */
  883.     if (!xdr_u_long (xdrs, (u_long *)&objp->numBytes))
  884. return (FALSE);
  885.     if (!xdr_u_long (xdrs, (u_long *)&objp->source))
  886. return (FALSE);
  887.     if (!xdr_u_long (xdrs, (u_long *)&objp->destination))
  888. return (FALSE);
  889.     switch (xdrs->x_op) 
  890. {
  891.      case XDR_DECODE:
  892.             {  /* export block */
  893.     if ((buff = (char *) malloc (objp->numBytes)) == NULL)
  894.         return (FALSE);
  895.     if (!xdr_opaque (xdrs, (char *) buff, objp->numBytes))
  896.         return (FALSE);
  897.             /* 
  898.      * Save the allocated buffer address in objp->destination for
  899.      * later use by the client.
  900.      */
  901.     objp->source = (char *) buff;
  902.     return (TRUE);
  903.     }
  904.      case XDR_ENCODE:
  905.     if (!xdr_opaque (xdrs, (char *) objp->source, objp->numBytes))
  906.         return (FALSE);
  907.     else
  908. return (TRUE);
  909.      case XDR_FREE: /* free memory */
  910.     {
  911.     free (objp->source);
  912.     return (TRUE);
  913.     }
  914. }
  915.     return (FALSE);
  916.     }
  917. /*******************************************************************************
  918. *
  919. * xdr_WTX_MSG_MEM_XFER_DESC - memory set descriptor
  920. *
  921. */
  922. bool_t xdr_WTX_MSG_MEM_XFER_DESC 
  923.     (
  924.     XDR *          xdrs,
  925.     WTX_MSG_MEM_XFER_DESC * objp
  926.     )
  927.     {
  928.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  929. return (FALSE);
  930.     if (!xdr_WTX_MEM_XFER (xdrs, &objp->memXfer))
  931. return (FALSE);
  932.     return (TRUE);
  933.     }
  934. /*******************************************************************************
  935. *
  936. * xdr_WTX_MSG_REG_WRITE - code, decode or free the WTX_MSG_REG_WRITE structure. 
  937. *
  938. * This function codes, decodes or frees the WTX_MSG_REG_WRITE structure.
  939. *
  940. * RETURNS: TRUE if it succeeds, FALSE otherwise.
  941. */
  942. bool_t xdr_WTX_MSG_REG_WRITE
  943.     (
  944.     XDR * xdrs,
  945.     WTX_MSG_REG_WRITE * objp
  946.     )
  947.     {
  948.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  949. return (FALSE);
  950.     if (!xdr_enum (xdrs, (enum_t *)&objp->regSetType))
  951. return (FALSE);
  952.     if (!xdr_WTX_CONTEXT (xdrs, &objp->context))
  953. return (FALSE);
  954.     if (!xdr_WTX_MEM_XFER (xdrs, &objp->memXfer))
  955. return (FALSE);
  956.     return (TRUE);
  957.     }
  958. /*******************************************************************************
  959. *
  960. * xdr_WTX_MSG_REG_READ - code, decode or free the WTX_MSG_REG_READ structure. 
  961. *
  962. * This function codes, decodes or frees the WTX_MSG_REG_READ structure.
  963. *
  964. * RETURNS: TRUE if it succeeds, FALSE otherwise.
  965. */
  966. bool_t xdr_WTX_MSG_REG_READ
  967.     (
  968.     XDR * xdrs,
  969.     WTX_MSG_REG_READ * objp
  970.     )
  971.     {
  972.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  973. return (FALSE);
  974.     if (!xdr_enum (xdrs, (enum_t *)&objp->regSetType))
  975. return (FALSE);
  976.     if (!xdr_WTX_CONTEXT (xdrs, &objp->context))
  977. return (FALSE);
  978.     if (!xdr_WTX_MEM_REGION (xdrs, &objp->memRegion))
  979. return (FALSE);
  980.     return (TRUE);
  981.     }
  982. /*******************************************************************************
  983. *
  984. * xdr_WTX_MSG_MEM_BLOCK_DESC - WTX
  985. *
  986. * RETURNS: TRUE if it succeeds, FALSE otherwise.
  987. */
  988. bool_t xdr_WTX_MSG_MEM_BLOCK_DESC
  989.     (
  990.     XDR *       xdrs, /* xdr handle */
  991.     WTX_MSG_MEM_BLOCK_DESC * objp
  992.     )
  993.     {
  994.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  995. return (FALSE);
  996.     if (!xdr_TGT_ADDR_T (xdrs, &objp->startAddr))
  997. return (FALSE);
  998.     if (!xdr_u_long (xdrs, (u_long *)&objp->numBytes))
  999. return (FALSE);
  1000.     return (TRUE);
  1001.     }
  1002. /*******************************************************************************
  1003. *
  1004. * xdr_WTX_MSG_MEM_READ_DESC - WTX
  1005. *
  1006. * RETURNS: TRUE if it succeeds, FALSE otherwise.
  1007. */
  1008. bool_t xdr_WTX_MSG_MEM_READ_DESC
  1009.     (
  1010.     XDR * xdrs,
  1011.     WTX_MSG_MEM_READ_DESC * objp
  1012.     )
  1013.     {
  1014.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1015. return (FALSE);
  1016.     if (!xdr_TGT_ADDR_T (xdrs, &objp->source))
  1017. return (FALSE);
  1018.     if (!xdr_u_long (xdrs, (u_long *)&objp->destination))
  1019. return (FALSE);
  1020.     if (!xdr_u_long (xdrs, (u_long *)&objp->numBytes))
  1021. return (FALSE);
  1022.     return (TRUE);
  1023.     }
  1024. /*******************************************************************************
  1025. *
  1026. * xdr_WTX_MSG_MEM_WIDTH_READ_DESC - WTX
  1027. *
  1028. * RETURNS: TRUE if it succeeds, FALSE otherwise.
  1029. */
  1030. bool_t xdr_WTX_MSG_MEM_WIDTH_READ_DESC
  1031.     (
  1032.     XDR *       xdrs,
  1033.     WTX_MSG_MEM_WIDTH_READ_DESC *     objp
  1034.     )
  1035.     {
  1036.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1037.         return (FALSE);
  1038.     if (!xdr_TGT_ADDR_T (xdrs, &objp->source))
  1039.         return (FALSE);
  1040.     if (!xdr_u_long (xdrs, (u_long *)&objp->destination))
  1041.         return (FALSE);
  1042.     if (!xdr_u_long (xdrs, (u_long *)&objp->numBytes))
  1043.         return (FALSE);
  1044.     if (!xdr_u_char (xdrs, &objp->width))
  1045.         return (FALSE);
  1046.     return (TRUE);
  1047.     }
  1048. /*******************************************************************************
  1049. *
  1050. * xdr_WTX_MSG_MEM_COPY_DESC - WTX
  1051. *
  1052. * RETURNS: TRUE if it succeeds, FALSE otherwise.
  1053. */
  1054. bool_t xdr_WTX_MSG_MEM_COPY_DESC
  1055.     (
  1056.     XDR * xdrs,
  1057.     WTX_MSG_MEM_COPY_DESC * objp
  1058.     )
  1059.     {
  1060.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1061. return (FALSE);
  1062.     if (!xdr_u_long (xdrs, (u_long *)&objp->source))
  1063. return (FALSE);
  1064.     if (!xdr_TGT_ADDR_T (xdrs, &objp->destination))
  1065. return (FALSE);
  1066.     if (!xdr_u_long (xdrs, (u_long *)&objp->numBytes))
  1067. return (FALSE);
  1068.     if (xdrs->x_op == XDR_ENCODE)
  1069.         {                                                /* export block */
  1070.         if (!xdr_opaque (xdrs, (char *)objp->source, objp->numBytes))
  1071.             return (FALSE);
  1072.         }
  1073.     else if (xdrs->x_op == XDR_DECODE)                  /* import block */
  1074.         {
  1075.         if (!xdr_opaque (xdrs, (char *)objp->destination, objp->numBytes))
  1076.             return (FALSE);
  1077. }
  1078.     return (TRUE);
  1079.     }
  1080. /*******************************************************************************
  1081. *
  1082. * xdr_WTX_MSG_MEM_WIDTH_COPY_DESC - WTX
  1083. *
  1084. * RETURNS: TRUE if it succeeds, FALSE otherwise.
  1085. */
  1086. bool_t xdr_WTX_MSG_MEM_WIDTH_COPY_DESC
  1087.     (
  1088.     XDR *       xdrs,
  1089.     WTX_MSG_MEM_WIDTH_COPY_DESC *     objp
  1090.     )
  1091.     {
  1092.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1093.         return (FALSE);
  1094.     if (!xdr_u_long (xdrs, (u_long *)&objp->source))
  1095.         return (FALSE);
  1096.     if (!xdr_TGT_ADDR_T (xdrs, &objp->destination))
  1097.         return (FALSE);
  1098.     if (!xdr_u_long (xdrs, (u_long *)&objp->numBytes))
  1099.         return (FALSE);
  1100.     if (!xdr_u_char (xdrs, &objp->width))
  1101.         return (FALSE);
  1102.     if (xdrs->x_op == XDR_ENCODE)
  1103.         {                                                /* export block */
  1104.         if (!xdr_opaque (xdrs, (char *)objp->source, objp->numBytes))
  1105.             return (FALSE);
  1106.         }
  1107.     else if (xdrs->x_op == XDR_DECODE)                  /* import block */
  1108.         {
  1109.         if (!xdr_opaque (xdrs, (char *)objp->destination, objp->numBytes))
  1110.             return (FALSE);
  1111.         }
  1112.     return (TRUE);
  1113.     }
  1114. /*******************************************************************************
  1115. *
  1116. * xdr_WTX_MSG_MEM_SCAN_DESC - WTX
  1117. *
  1118. * RETURNS: TRUE if it succeeds, FALSE otherwise.
  1119. */
  1120. bool_t xdr_WTX_MSG_MEM_SCAN_DESC
  1121.     (
  1122.     XDR * xdrs,
  1123.     WTX_MSG_MEM_SCAN_DESC * objp
  1124.     )
  1125.     {
  1126.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1127. return (FALSE);
  1128.     if (!xdr_u_long (xdrs, (u_long *)&objp->match))
  1129. return (FALSE);
  1130.     if (!xdr_TGT_ADDR_T (xdrs, &objp->startAddr))
  1131. return (FALSE);
  1132.     if (!xdr_TGT_ADDR_T (xdrs, &objp->endAddr))
  1133. return (FALSE);
  1134.     if (!xdr_bytes (xdrs, (char **)&objp->pattern, (u_int *)&objp->numBytes,
  1135.     WTX_MAX_PATTERN_LEN))
  1136. return (FALSE);
  1137.     return (TRUE);
  1138.     }
  1139. /*******************************************************************************
  1140. *
  1141. * xdr_WTX_MSG_MEM_MOVE_DESC - WTX
  1142. *
  1143. * RETURNS: TRUE if it succeeds, FALSE otherwise.
  1144. */
  1145. bool_t xdr_WTX_MSG_MEM_MOVE_DESC
  1146.     (
  1147.     XDR * xdrs,
  1148.     WTX_MSG_MEM_MOVE_DESC * objp
  1149.     )
  1150.     {
  1151.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1152. return (FALSE);
  1153.     if (!xdr_TGT_ADDR_T (xdrs, &objp->source))
  1154. return (FALSE);
  1155.     if (!xdr_TGT_ADDR_T (xdrs, &objp->destination))
  1156. return (FALSE);
  1157.     if (!xdr_u_long (xdrs, (u_long *)&objp->numBytes))
  1158. return (FALSE);
  1159.     return (TRUE);
  1160.     }
  1161. /*******************************************************************************
  1162. *
  1163. * xdr_WTX_MSG_MEM_SET_DESC - WTX
  1164. *
  1165. * RETURNS: TRUE if it succeeds, FALSE otherwise.
  1166. */
  1167. bool_t xdr_WTX_MSG_MEM_SET_DESC
  1168.     (
  1169.     XDR * xdrs,
  1170.     WTX_MSG_MEM_SET_DESC * objp
  1171.     )
  1172.     {
  1173.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1174. return (FALSE);
  1175.     if (!xdr_u_long (xdrs, (u_long *)&objp->value))
  1176. return (FALSE);
  1177.     if (!xdr_u_char (xdrs, &objp->width))
  1178. return (FALSE);
  1179.     if (!xdr_TGT_ADDR_T (xdrs, &objp->startAddr))
  1180. return (FALSE);
  1181.     if (!xdr_u_long (xdrs, (u_long *)&objp->numItems))
  1182. return (FALSE);
  1183.     return (TRUE);
  1184.     }
  1185. /*******************************************************************************
  1186. *
  1187. * xdr_WTX_MSG_CONTEXT_DESC - WTX
  1188. *
  1189. * RETURNS:  TRUE if it succeeds, FALSE otherwise.
  1190. */
  1191. bool_t xdr_WTX_MSG_CONTEXT_DESC
  1192.     (
  1193.     XDR * xdrs, /* xdr handle */
  1194.     WTX_MSG_CONTEXT_DESC * objp
  1195.     )
  1196.     {
  1197.     u_int  argNum = WTX_MAX_ARG_CNT;
  1198.     TGT_ADDR_T * pArgs = (TGT_ADDR_T *)objp->args;/* argument table pointer */
  1199.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1200. return (FALSE);
  1201.     if (!xdr_enum (xdrs, (enum_t *)&objp->contextType))
  1202. return (FALSE);
  1203.     if (!xdr_u_long (xdrs, (u_long *)&objp->returnType))
  1204. return (FALSE);
  1205.     if (!xdr_WRAPSTRING (xdrs, &objp->name))
  1206. return (FALSE);
  1207.     if (!xdr_u_long (xdrs, (u_long *)&objp->priority))
  1208. return (FALSE);
  1209.     if (!xdr_u_long (xdrs, (u_long *)&objp->options))
  1210. return (FALSE);
  1211.     if (!xdr_TGT_ADDR_T (xdrs, &objp->stackBase))
  1212. return (FALSE);
  1213.     if (!xdr_u_long (xdrs, (u_long *)&objp->stackSize))
  1214. return (FALSE);
  1215.     if (!xdr_TGT_ADDR_T (xdrs, &objp->entry))
  1216. return (FALSE);
  1217.     if (!xdr_long (xdrs, (long *)&objp->redirIn))
  1218. return (FALSE);
  1219.     if (!xdr_long (xdrs, (long *)&objp->redirOut))
  1220. return (FALSE);
  1221.     /*
  1222.      * The arg array is not dynamically allocated. So when freeing memory, 
  1223.      * xdr_array *MUST NOT* free this array.
  1224.      */
  1225.     if (xdrs->x_op == XDR_FREE)
  1226. {
  1227. char * ptr = NULL; /* dummy array */
  1228. if (!xdr_array (xdrs, (caddr_t *)&ptr, &argNum, ~0, 
  1229.     sizeof (TGT_ARG_T), xdr_TGT_ARG_T))
  1230. return (FALSE);
  1231. }
  1232.     else
  1233.      {
  1234. if (!xdr_array (xdrs, (caddr_t *)&pArgs, &argNum, ~0, 
  1235.     sizeof (TGT_ARG_T), xdr_TGT_ARG_T))
  1236. return (FALSE);
  1237. }
  1238.     return (TRUE);
  1239.     }
  1240. /*******************************************************************************
  1241. *
  1242. * xdr_WTX_MSG_CONTEXT_STEP_DESC - WTX
  1243. *
  1244. * RETURNS: TRUE if it succeeds, FALSE otherwise.
  1245. */
  1246. bool_t xdr_WTX_MSG_CONTEXT_STEP_DESC
  1247.     (
  1248.     XDR * xdrs,
  1249.     WTX_MSG_CONTEXT_STEP_DESC * objp
  1250.     )
  1251.     {
  1252.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1253. return (FALSE);
  1254.     if (!xdr_WTX_CONTEXT (xdrs, &objp->context))
  1255. return (FALSE);
  1256.     if (!xdr_TGT_ADDR_T (xdrs, &objp->startAddr))
  1257. return (FALSE);
  1258.     if (!xdr_TGT_ADDR_T (xdrs, &objp->endAddr))
  1259. return (FALSE);
  1260.     return (TRUE);
  1261.     }
  1262. /*******************************************************************************
  1263. *
  1264. * xdr_WTX_MSG_OPEN_DESC - virtual I/O descriptor  
  1265. *
  1266. */
  1267. bool_t xdr_WTX_MSG_OPEN_DESC
  1268.     (
  1269.     XDR * xdrs,
  1270.     WTX_MSG_OPEN_DESC * objp
  1271.     )
  1272.     {
  1273.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1274. return (FALSE);
  1275.     if (!xdr_WRAPSTRING (xdrs, &objp->filename))
  1276. return (FALSE);
  1277.     if (!xdr_enum (xdrs, (enum_t *)&objp->flags))
  1278. return (FALSE);
  1279.     if (!xdr_int (xdrs, &objp->mode))
  1280. return (FALSE);
  1281.     if (!xdr_int (xdrs, &objp->channel))
  1282. return (FALSE);
  1283.     return (TRUE);
  1284.     }
  1285. /*******************************************************************************
  1286. *
  1287. * xdr_WTX_MSG_VIO_CTL_DESC - virtual I/O control descriptor
  1288. *
  1289. */
  1290. bool_t xdr_WTX_MSG_VIO_CTL_DESC
  1291.     (
  1292.     XDR *          xdrs,
  1293.     WTX_MSG_VIO_CTL_DESC * objp
  1294.     )
  1295.     {
  1296.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1297. return (FALSE);
  1298.     if (!xdr_u_long (xdrs, (u_long *)&objp->channel))
  1299. return (FALSE);
  1300.     if (!xdr_u_long (xdrs, (u_long *)&objp->request))
  1301. return (FALSE);
  1302.     if (!xdr_u_long (xdrs, (u_long *)&objp->arg))
  1303. return (FALSE);
  1304.     return (TRUE);
  1305.     }
  1306. /*******************************************************************************
  1307. *
  1308. * xdr_WTX_MSG_VIO_COPY_DESC - 
  1309. *
  1310. * This function codes, decodes or frees the VIO_COPY structure and copies the
  1311. * data buffer of a specific virtual I/O channel. If the VIO_COPY baseAddr field
  1312. * is a NULL pointer no data are copied, otherwise the data are coded. The
  1313. * number of bytes to encode are handled by the maxBytes field. When the data
  1314. * are decoded their values are saved in a memory area allocted by the
  1315. * xdr_opaque function. 
  1316. *
  1317. * RETURNS:  TRUE if it succeeds, FALSE otherwise.
  1318. */
  1319. bool_t xdr_WTX_MSG_VIO_COPY_DESC
  1320.     (
  1321.     XDR * xdrs,
  1322.     WTX_MSG_VIO_COPY_DESC * objp
  1323.     )
  1324.     {
  1325.     bool_t moreData; /* NULL pointer flag */
  1326.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1327. return (FALSE);
  1328.     if (!xdr_u_long (xdrs, (u_long *)&objp->channel))
  1329. return (FALSE);
  1330.     if (!xdr_u_long (xdrs, (u_long *)&objp->maxBytes))
  1331. return (FALSE);
  1332.     moreData = (objp->baseAddr != NULL); /*  NULL pointer ? */
  1333.     if (! xdr_bool(xdrs, (bool_t *)&moreData)) /* code/decode test result */
  1334. return (FALSE);
  1335.     if (! moreData)
  1336. objp->baseAddr  = NULL; /* YES: return a NULL pointer */
  1337.     else /* NO: code/decode the data */
  1338. {
  1339. if (xdrs->x_op == XDR_DECODE) /* if decode force mem alloc */
  1340.     objp->baseAddr  = (void *) malloc (objp->maxBytes);
  1341. if (xdrs->x_op == XDR_FREE) /* if free de-alloc memory */
  1342.     free (objp->baseAddr);
  1343. if (! xdr_opaque (xdrs, (char *) objp->baseAddr, objp->maxBytes))
  1344.     return (FALSE);
  1345. }
  1346.     return (TRUE);
  1347.     }
  1348. /*******************************************************************************
  1349. *
  1350. * xdr_WTX_VIO_FILE_DESC - WTX VIO file descriptor
  1351. *
  1352. */
  1353. bool_t xdr_WTX_VIO_FILE_DESC 
  1354.     (
  1355.     XDR *          xdrs,
  1356.     WTX_VIO_FILE_DESC * objp
  1357.     )
  1358.     {
  1359.     if (!xdr_WRAPSTRING (xdrs, &objp->name))
  1360. return (FALSE);
  1361.     if (!xdr_long (xdrs, (long *)&objp->fd))
  1362. return (FALSE);
  1363.     if (!xdr_long (xdrs, (long *)&objp->channel))
  1364. return (FALSE);
  1365.     if (!xdr_long (xdrs, (long *)&objp->fp))
  1366. return (FALSE);
  1367.     if (!xdr_long (xdrs, (long *)&objp->type))
  1368. return (FALSE);
  1369.     if (!xdr_long (xdrs, (long *)&objp->mode))
  1370. return (FALSE);
  1371.     if (!xdr_long (xdrs, (long *)&objp->status))
  1372. return (FALSE);
  1373.     if (!xdr_long (xdrs, (long *)&objp->addlInfo))
  1374. return (FALSE);
  1375.     if (!xdr_pointer (xdrs, (char **)&objp->next, sizeof (WTX_VIO_FILE_DESC),
  1376.       xdr_WTX_VIO_FILE_DESC))
  1377. return (FALSE);
  1378.     return (TRUE);
  1379.     }
  1380. /*******************************************************************************
  1381. *
  1382. * xdr_WTX_MSG_VIO_FILE_LIST - WTX VIO files list message
  1383. *
  1384. */
  1385. bool_t xdr_WTX_MSG_VIO_FILE_LIST 
  1386.     (
  1387.     XDR *           xdrs,
  1388.     WTX_MSG_VIO_FILE_LIST * objp
  1389.     )
  1390.     {
  1391.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1392. return (FALSE);
  1393.     if (!xdr_pointer (xdrs, (char **)&objp->pVioFileList, 
  1394.       sizeof (WTX_VIO_FILE_DESC), xdr_WTX_VIO_FILE_DESC))
  1395. return (FALSE);
  1396.     return (TRUE);
  1397.     }
  1398. /*******************************************************************************
  1399. *
  1400. * xdr_WTX_SYMBOL - symbol information
  1401. *
  1402. */
  1403. bool_t xdr_WTX_SYMBOL 
  1404.     (
  1405.     XDR *        xdrs,
  1406.     WTX_SYMBOL *  objp
  1407.     )
  1408.     {
  1409.     if (!xdr_u_long (xdrs, (u_long *)&objp->status))
  1410. return (FALSE);
  1411.     if (!xdr_u_long (xdrs, (u_long *)&objp->symTblId))
  1412. return (FALSE);
  1413.     if (!xdr_WRAPSTRING (xdrs, &objp->name))
  1414. return (FALSE);
  1415.     if (!xdr_bool (xdrs, (bool_t *)&objp->exactName))
  1416. return (FALSE);
  1417.     if (!xdr_TGT_ADDR_T (xdrs, &objp->value))
  1418. return (FALSE);
  1419.     if (!xdr_u_char (xdrs, &objp->type))
  1420. return (FALSE);
  1421.     if (!xdr_u_char (xdrs, &objp->typeMask))
  1422. return (FALSE);
  1423.     if (!xdr_u_short (xdrs, &objp->group))
  1424. return (FALSE);
  1425.     if (!xdr_WRAPSTRING (xdrs, &objp->moduleName))
  1426. return (FALSE);
  1427.     /* 
  1428.      * There is no need to xdr the next field since it is only meaningfull
  1429.      * on one side of the protocol.
  1430.      */
  1431.     return (TRUE);
  1432.     }
  1433. /*******************************************************************************
  1434. *
  1435. * xdr_WTX_MSG_SYMBOL_DESC - WTX symbol descriptor
  1436. *
  1437. */
  1438. bool_t xdr_WTX_MSG_SYMBOL_DESC 
  1439.     (
  1440.     XDR *        xdrs,
  1441.     WTX_MSG_SYMBOL_DESC *  objp
  1442.     )
  1443.     {
  1444.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1445. return (FALSE);
  1446.     if (!xdr_WTX_SYMBOL (xdrs, &objp->symbol))
  1447. return (FALSE);
  1448.     return (TRUE);
  1449.     }
  1450. /*******************************************************************************
  1451. *
  1452. * xdr_WTX_SYM_LIST - symbol list
  1453. *
  1454. * We avoid recursives routines here since the symbol list may be huge and
  1455. * can blow the C stack.
  1456. */
  1457. bool_t xdr_WTX_SYM_LIST 
  1458.     (
  1459.     XDR *        xdrs,
  1460.     WTX_SYM_LIST *  pList
  1461.     )
  1462.     {
  1463.     bool_t moreData;
  1464.     WTX_SYMBOL * pSym;
  1465.     WTX_SYMBOL * pNext;
  1466.     WTX_SYMBOL ** ppSymLink = 0;
  1467.     /* The tough one, xdr the list of symbols */
  1468.     if (xdrs->x_op == XDR_FREE)
  1469. {
  1470. /* move through the list and free each one. */
  1471. for (pSym = pList->pSymbol; pSym; pSym = pNext)
  1472.     {
  1473.     pNext = pSym->next;
  1474.     if (!xdr_reference (xdrs, (caddr_t *)&pSym, sizeof (WTX_SYMBOL), 
  1475. xdr_WTX_SYMBOL))
  1476. return (FALSE);
  1477.     }
  1478. }
  1479.     else
  1480. {
  1481. /* we need to store the links ourselves. */
  1482. ppSymLink = &(pList->pSymbol);
  1483. for (;;)
  1484.     {
  1485.     moreData = (*ppSymLink != NULL); /* test for end of list */
  1486.     if (!xdr_bool(xdrs, &moreData)) /* xdr the moreData field */
  1487. return (FALSE);
  1488.     if (!moreData) /* if end of list it's time to leave */
  1489. break;
  1490.     /* 
  1491.      * Now xdr the current symbol. Note that xdr_WTX_SYMBOL is not 
  1492.      * recursive and will only serialize/de-serialize one symbol node.
  1493.      */
  1494.     if (!xdr_reference (xdrs, (caddr_t *)ppSymLink, sizeof (WTX_SYMBOL), 
  1495. xdr_WTX_SYMBOL))
  1496. return (FALSE);
  1497.     /* 
  1498.      * point to next node, if we are freeing buffers, use the node
  1499.      * whose address was saved prior calling xdr_reference().
  1500.      */
  1501.     ppSymLink = & ((*ppSymLink)->next);
  1502.     }
  1503. }
  1504.     return (TRUE);
  1505.     }
  1506. /*******************************************************************************
  1507. *
  1508. * xdr_LD_M_SECTION - object module section desciptor
  1509. *
  1510. */
  1511. bool_t xdr_LD_M_SECTION
  1512.     (
  1513.     XDR *          xdrs,
  1514.     LD_M_SECTION * objp
  1515.     )
  1516.     {
  1517.     if (!xdr_u_long (xdrs, (u_long *)&objp->flags))
  1518. return (FALSE);
  1519.     if (!xdr_u_long (xdrs, (u_long *)&objp->addr))
  1520. return (FALSE);
  1521.     if (!xdr_u_long (xdrs, (u_long *)&objp->length))
  1522. return (FALSE);
  1523.     return (TRUE);
  1524.     }
  1525. /*******************************************************************************
  1526. *
  1527. * xdr_WTX_MSG_LD_M_FILE_DESC - multiple section object file
  1528. *
  1529. */
  1530. bool_t xdr_WTX_MSG_LD_M_FILE_DESC 
  1531.     (
  1532.     XDR *       xdrs,
  1533.     WTX_MSG_LD_M_FILE_DESC * objp
  1534.     )
  1535.     {
  1536.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1537. return (FALSE);
  1538.     if (!xdr_WRAPSTRING (xdrs, &objp->filename))
  1539. return (FALSE);
  1540.     if (!xdr_int (xdrs, &objp->loadFlag))
  1541. return (FALSE);
  1542.     if (!xdr_u_long (xdrs, (u_long *)&objp->moduleId))
  1543. return (FALSE);
  1544.     if (!xdr_u_long (xdrs, (u_long *)&objp->nSections))
  1545. return (FALSE);
  1546.     if (!xdr_array (xdrs, (char **) &objp->section, 
  1547.     (u_int *) &objp->nSections, 
  1548.     (WTX_MAX_SECTION_CNT * sizeof (LD_M_SECTION)), 
  1549.     sizeof (LD_M_SECTION), xdr_LD_M_SECTION))
  1550. return (FALSE);
  1551.     if (!xdr_WTX_SYM_LIST (xdrs, &objp->undefSymList))
  1552. return (FALSE);
  1553.     
  1554.     return (TRUE);
  1555.     }
  1556. /*******************************************************************************
  1557. *
  1558. * xdr_MODULE_LIST - object module list
  1559. *
  1560. */
  1561. bool_t xdr_WTX_MSG_MODULE_LIST
  1562.     (
  1563.     XDR *          xdrs,
  1564.     WTX_MSG_MODULE_LIST * objp
  1565.     )
  1566.     {
  1567.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1568. return (FALSE);
  1569.     if (!xdr_u_long (xdrs, (u_long *)&objp->numObjMod))
  1570. return (FALSE);
  1571.     if (!xdr_array (xdrs, (char **)&objp->modIdList, (u_int *)&objp->numObjMod, 
  1572.     (WTX_MAX_MODULE_CNT * sizeof (u_int)), sizeof (u_int), 
  1573.     xdr_u_long))
  1574. return (FALSE);
  1575.     return (TRUE);
  1576.     }
  1577. /*******************************************************************************
  1578. *
  1579. * xdr_OBJ_SEGMENT - object module segment
  1580. *
  1581. */
  1582. bool_t xdr_OBJ_SEGMENT
  1583.     (
  1584.     XDR *         xdrs,
  1585.     OBJ_SEGMENT * objp
  1586.     )
  1587.     {
  1588.     if (!xdr_u_long (xdrs, (u_long *)&objp->flags))
  1589. return (FALSE);
  1590.     if (!xdr_u_long (xdrs, (u_long *)&objp->addr))
  1591. return (FALSE);
  1592.     if (!xdr_u_long (xdrs, (u_long *)&objp->length))
  1593. return (FALSE);
  1594.     if (!xdr_u_long (xdrs, (u_long *)&objp->reserved1))
  1595. return (FALSE);
  1596.     if (!xdr_u_long (xdrs, (u_long *)&objp->reserved2))
  1597. return (FALSE);
  1598.     return (TRUE);
  1599.     }
  1600. /*******************************************************************************
  1601. *
  1602. * xdr_WTX_MSG_MODULE_INFO - object module information
  1603. *
  1604. */
  1605. bool_t xdr_WTX_MSG_MODULE_INFO 
  1606.     (
  1607.     XDR *          xdrs,
  1608.     WTX_MSG_MODULE_INFO *  objp
  1609.     )
  1610.     {
  1611.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1612. return (FALSE);
  1613.     if (!xdr_u_long (xdrs, (u_long *)&objp->moduleId))
  1614. return (FALSE);
  1615.     if (!xdr_WRAPSTRING (xdrs, &objp->moduleName))
  1616. return (FALSE);
  1617.     if (!xdr_WRAPSTRING (xdrs, &objp->format))
  1618. return (FALSE);
  1619.     if (!xdr_u_long (xdrs, (u_long *)&objp->group))
  1620. return (FALSE);
  1621.     if (!xdr_u_long (xdrs, (u_long *)&objp->nSegments))
  1622. return (FALSE);
  1623.     if (!xdr_int (xdrs, &objp->loadFlag))
  1624. return (FALSE);
  1625.     if (!xdr_array (xdrs, (char **)&objp->segment, (u_int *)&objp->nSegments, 
  1626.     (WTX_MAX_OBJ_SEG_CNT * sizeof (OBJ_SEGMENT)), 
  1627.     sizeof (OBJ_SEGMENT), xdr_OBJ_SEGMENT))
  1628. return (FALSE);
  1629.     return (TRUE);
  1630.     }
  1631. /*******************************************************************************
  1632. *
  1633. * xdr_WTX_MSG_MOD_NAME_OR_ID - object module name or identifier
  1634. *
  1635. */
  1636. bool_t xdr_WTX_MSG_MOD_NAME_OR_ID
  1637.     (
  1638.     XDR *            xdrs,
  1639.     WTX_MSG_MOD_NAME_OR_ID * objp
  1640.     )
  1641.     {
  1642.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1643. return (FALSE);
  1644.     if (!xdr_u_long (xdrs, (u_long *)&objp->moduleId))
  1645. return (FALSE);
  1646.     if (!xdr_WRAPSTRING (xdrs, &objp->filename))
  1647. return (FALSE);
  1648.     return (TRUE);
  1649.     }
  1650. /*******************************************************************************
  1651. *
  1652. * xdr_WTX_MSG_SYM_LIST - symbol list message
  1653. *
  1654. */
  1655. bool_t xdr_WTX_MSG_SYM_LIST
  1656.     (
  1657.     XDR *           xdrs,
  1658.     WTX_MSG_SYM_LIST * objp
  1659.     )
  1660.     {
  1661.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1662. return (FALSE);
  1663.     if (!xdr_WTX_SYM_LIST (xdrs, &objp->symList))
  1664. return (FALSE);
  1665.     if (!xdr_bool (xdrs, (bool_t *)&objp->moreToCome))
  1666. return (FALSE);
  1667.     return (TRUE);
  1668.     }
  1669. /*******************************************************************************
  1670. *
  1671. * xdr_WTX_MSG_SYM_MATCH_DESC - symbol matching information
  1672. *
  1673. */
  1674. bool_t xdr_WTX_MSG_SYM_MATCH_DESC 
  1675.     (
  1676.     XDR *        xdrs,
  1677.     WTX_MSG_SYM_MATCH_DESC *  objp
  1678.     )
  1679.     {
  1680.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1681. return (FALSE);
  1682.     if (!xdr_u_long (xdrs, (u_long *)&objp->symTblId))
  1683. return (FALSE);
  1684.     if (!xdr_bool (xdrs, (bool_t *)&objp->matchString))
  1685. return (FALSE);
  1686.     if (!xdr_TGT_ADDR_T (xdrs, &objp->adrs))
  1687. return (FALSE);
  1688.     if (!xdr_WRAPSTRING (xdrs, &objp->stringToMatch))
  1689. return (FALSE);
  1690.     if (!xdr_bool (xdrs, (bool_t *)&objp->byModuleName)) 
  1691. return (FALSE);
  1692.     /* check if we were given a module name or a module Identifier */
  1693.     if (objp->byModuleName) 
  1694. {
  1695. if (!xdr_WRAPSTRING (xdrs, &objp->module.moduleName))
  1696.     return (FALSE);
  1697. }
  1698.     else
  1699. {
  1700. if (!xdr_u_long (xdrs, (u_long *)&objp->module.moduleId))
  1701.     return (FALSE);
  1702. }
  1703.     if (!xdr_bool (xdrs, (bool_t *)&objp->listUnknownSym))
  1704. return (FALSE);
  1705.     if (!xdr_bool (xdrs, (bool_t *)&objp->giveMeNext))
  1706. return (FALSE);
  1707.     return (TRUE);
  1708.     }
  1709. /*******************************************************************************
  1710. *
  1711. * xdr_WTX_MSG_SYM_TBL_INFO - symbol table information
  1712. *
  1713. */
  1714. bool_t xdr_WTX_MSG_SYM_TBL_INFO
  1715.     (
  1716.     XDR *          xdrs,
  1717.     WTX_MSG_SYM_TBL_INFO * objp
  1718.     )
  1719.     {
  1720.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1721. return (FALSE);
  1722.     if (!xdr_u_long (xdrs, (u_long *)&objp->symTblId))
  1723. return (FALSE);
  1724.     if (!xdr_u_long (xdrs, (u_long *)&objp->symNum))
  1725. return (FALSE);
  1726.     if (!xdr_bool (xdrs, (bool_t *)&objp->sameNameOk))
  1727. return (FALSE);
  1728.     return (TRUE);
  1729.     }
  1730. /*******************************************************************************
  1731. *
  1732. * xdr_WTX_EVENT_DESC - WTX event descriptor
  1733. *
  1734. */
  1735. bool_t xdr_WTX_EVENT_DESC
  1736.     (
  1737.     XDR *       xdrs,
  1738.     WTX_EVENT_DESC * objp
  1739.     )
  1740.     {
  1741.     if (!xdr_WRAPSTRING (xdrs, &objp->event))
  1742. return (FALSE);
  1743.     if (!xdr_bytes (xdrs, (char **) &objp->addlData, 
  1744.     (u_int *) &objp->addlDataLen, ~0))
  1745. return (FALSE);
  1746.     return (TRUE);
  1747.     }
  1748. /*******************************************************************************
  1749. *
  1750. * xdr_WTX_MSG_EVENT_DESC - WTX event descriptor
  1751. *
  1752. */
  1753. bool_t xdr_WTX_MSG_EVENT_DESC
  1754.     (
  1755.     XDR *       xdrs,
  1756.     WTX_MSG_EVENT_DESC * objp
  1757.     )
  1758.     {
  1759.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1760. return (FALSE);
  1761.     if (!xdr_WTX_EVENT_DESC (xdrs, &objp->eventDesc))
  1762. return (FALSE);
  1763.     return (TRUE);
  1764.     }
  1765. /*******************************************************************************
  1766. *
  1767. * xdr_WTX_MSG_EVENT_REG_DESC - register for event descriptor
  1768. *
  1769. */
  1770. bool_t xdr_WTX_MSG_EVENT_REG_DESC 
  1771.     (
  1772.     XDR *            xdrs,
  1773.     WTX_MSG_EVENT_REG_DESC * objp
  1774.     )
  1775.     {
  1776.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1777. return (FALSE);
  1778.     if (!xdr_WRAPSTRING (xdrs, &objp->evtRegExp))
  1779. return (FALSE);
  1780.     return (TRUE);
  1781.     }
  1782. /*******************************************************************************
  1783. *
  1784. * xdr_WTX_WDB_SERVICE_DESC - service descriptor 
  1785. *
  1786. */
  1787. bool_t xdr_WTX_WDB_SERVICE_DESC
  1788.     (
  1789.     XDR *          xdrs,
  1790.     WTX_WDB_SERVICE_DESC * objp
  1791.     )
  1792.     {
  1793.     if (!xdr_u_int (xdrs, &objp->rpcNum))
  1794. return (FALSE);
  1795.     if (!xdr_WRAPSTRING (xdrs, &objp->name))
  1796. return (FALSE);
  1797.     if (!xdr_WRAPSTRING (xdrs, &objp->svcObjFile))
  1798. return (FALSE);
  1799.     if (!xdr_WRAPSTRING (xdrs, &objp->initRtnName))
  1800. return (FALSE);
  1801.     return (TRUE);
  1802.     }
  1803. /*******************************************************************************
  1804. *
  1805. * xdr_WTX_WTX_SERVICE_DESC - service descriptor 
  1806. *
  1807. */
  1808. bool_t xdr_WTX_WTX_SERVICE_DESC
  1809.     (
  1810.     XDR *          xdrs,
  1811.     WTX_WTX_SERVICE_DESC * objp
  1812.     )
  1813.     {
  1814.     if (!xdr_WRAPSTRING (xdrs, &objp->svcObjFile))
  1815. return (FALSE);
  1816.     if (!xdr_WRAPSTRING (xdrs, &objp->svcProcName))
  1817. return (FALSE);
  1818.     if (!xdr_WRAPSTRING (xdrs, &objp->inProcName))
  1819. return (FALSE);
  1820.     if (!xdr_WRAPSTRING (xdrs, &objp->outProcName))
  1821. return (FALSE);
  1822.     return (TRUE);
  1823.     }
  1824. /*******************************************************************************
  1825. *
  1826. * xdr_WTX_MSG_SERVICE_DESC - 
  1827. *
  1828. */
  1829. bool_t xdr_WTX_MSG_SERVICE_DESC 
  1830.     (
  1831.     XDR *            xdrs,
  1832.     WTX_MSG_SERVICE_DESC * objp
  1833.     )
  1834.     {
  1835.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1836. return (FALSE);
  1837.     if (!xdr_pointer (xdrs, (char **)&objp->pWtxServiceDesc,
  1838.       sizeof (WTX_WTX_SERVICE_DESC), 
  1839.       xdr_WTX_WTX_SERVICE_DESC))
  1840. return (FALSE);
  1841.     if (!xdr_pointer (xdrs, (char **)&objp->pWdbServiceDesc,
  1842.       sizeof (WTX_WDB_SERVICE_DESC), 
  1843.       xdr_WTX_WDB_SERVICE_DESC))
  1844. return (FALSE);
  1845.     return (TRUE);
  1846.     }
  1847. /*******************************************************************************
  1848. *
  1849. * xdr_WTX_MSG_SERVICE_LIST - list of protocol services
  1850. *
  1851. */
  1852. bool_t xdr_WTX_MSG_SERVICE_LIST 
  1853.     (
  1854.     XDR *          xdrs,
  1855.     WTX_MSG_SERVICE_LIST * objp
  1856.     )
  1857.     {
  1858.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1859. return (FALSE);
  1860.     if (!xdr_u_long (xdrs, (u_long *)&objp->nServices))
  1861. return (FALSE);
  1862.     if (!xdr_array (xdrs, (char **)&objp->serviceDesc, 
  1863.     (u_int *)&objp->nServices, 
  1864.     (WTX_MAX_SERVICE_CNT * sizeof (WTX_WDB_SERVICE_DESC)), 
  1865.     sizeof (WTX_WDB_SERVICE_DESC), xdr_WTX_WDB_SERVICE_DESC))
  1866. return (FALSE);
  1867.     return (TRUE);
  1868.     }
  1869. /*******************************************************************************
  1870. *
  1871. * xdr_WTX_CONSOLE_DESC - WTX console descriptor
  1872. *
  1873. */
  1874. bool_t xdr_WTX_CONSOLE_DESC 
  1875.     (
  1876.     XDR *          xdrs,
  1877.     WTX_CONSOLE_DESC * objp
  1878.     )
  1879.     {
  1880.     if (!xdr_int (xdrs, &objp->fdIn))
  1881. return (FALSE);
  1882.     if (!xdr_int (xdrs, &objp->fdOut))
  1883. return (FALSE);
  1884.     if (!xdr_int (xdrs, &objp->pid))
  1885. return (FALSE);
  1886.     if (!xdr_WRAPSTRING (xdrs, &objp->name))
  1887. return (FALSE);
  1888.     if (!xdr_WRAPSTRING (xdrs, &objp->display))
  1889. return (FALSE);
  1890.     return (TRUE);
  1891.     }
  1892. /*******************************************************************************
  1893. *
  1894. * xdr_WTX_MSG_CONSOLE_DESC - WTX console descriptor message
  1895. *
  1896. */
  1897. bool_t xdr_WTX_MSG_CONSOLE_DESC 
  1898.     (
  1899.     XDR *          xdrs,
  1900.     WTX_MSG_CONSOLE_DESC * objp
  1901.     )
  1902.     {
  1903.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1904. return (FALSE);
  1905.     if (!xdr_WTX_CONSOLE_DESC (xdrs, &objp->wtxConsDesc))
  1906. return (FALSE);
  1907.     return (TRUE);
  1908.     }
  1909. /*******************************************************************************
  1910. *
  1911. * xdr_WTX_MSG_MEM_INFO - target server memory information
  1912. *
  1913. */
  1914. bool_t xdr_WTX_MSG_MEM_INFO 
  1915.     (
  1916.     XDR *   xdrs,
  1917.     WTX_MSG_MEM_INFO * objp
  1918.     )
  1919.     {
  1920.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1921. return (FALSE);
  1922.     if (!xdr_u_long (xdrs, (u_long *)&objp->curBytesFree))
  1923. return (FALSE);
  1924.     if (!xdr_u_long (xdrs, (u_long *)&objp->curBytesAllocated))
  1925. return (FALSE);
  1926.     if (!xdr_u_long (xdrs, (u_long *)&objp->cumBytesAllocated))
  1927. return (FALSE);
  1928.     if (!xdr_u_long (xdrs, (u_long *)&objp->curBlocksFree))
  1929. return (FALSE);
  1930.     if (!xdr_u_long (xdrs, (u_long *)&objp->curBlocksAlloc))
  1931. return (FALSE);
  1932.     if (!xdr_u_long (xdrs, (u_long *)&objp->cumBlocksAlloc))
  1933. return (FALSE);
  1934.     if (!xdr_u_long (xdrs, (u_long *)&objp->avgFreeBlockSize))
  1935. return (FALSE);
  1936.     if (!xdr_u_long (xdrs, (u_long *)&objp->avgAllocBlockSize))
  1937. return (FALSE);
  1938.     if (!xdr_u_long (xdrs, (u_long *)&objp->cumAvgAllocBlockSize))
  1939. return (FALSE);
  1940.     if (!xdr_u_long (xdrs, (u_long *)&objp->biggestBlockSize))
  1941. return (FALSE);
  1942.     return (TRUE);
  1943.     }
  1944. /*******************************************************************************
  1945. *
  1946. * xdr_WTX_CORE - xdr routine for wtx core
  1947. */
  1948. bool_t xdr_WTX_CORE
  1949.     (
  1950.     XDR * xdrs,
  1951.     WTX_CORE * objp
  1952.     )
  1953.     {
  1954.     if (!xdr_u_long (xdrs, (u_long *)&objp->objId))
  1955. return (FALSE);
  1956.     if (!xdr_u_long (xdrs, (u_long *)&objp->errCode))
  1957. return (FALSE);
  1958.     if (!xdr_u_long (xdrs, (u_long *)&objp->protVersion))
  1959. return (FALSE);
  1960.     return (TRUE);
  1961.     }
  1962. /*******************************************************************************
  1963. *
  1964. * xdr_WTX_SVR_DESC - xdr routine for wtx descriptor
  1965. */
  1966. bool_t xdr_WTX_SVR_DESC
  1967.     (
  1968.     XDR * xdrs,
  1969.     WTX_SVR_DESC * objp
  1970.     )
  1971.     {
  1972.     if (!xdr_WRAPSTRING (xdrs, &objp->wpwrName))
  1973. return (FALSE);
  1974.     if (!xdr_WRAPSTRING (xdrs, &objp->wpwrType))
  1975. return (FALSE);
  1976.     if (!xdr_WRAPSTRING (xdrs, &objp->wpwrKey))
  1977. return (FALSE);
  1978.     return (TRUE);
  1979.     }
  1980. /*******************************************************************************
  1981. *
  1982. * xdr_WTX_MSG_SVR_DESC - xdr routine for wtx descriptor
  1983. */
  1984. bool_t xdr_WTX_MSG_SVR_DESC
  1985.     (
  1986.     XDR * xdrs,
  1987.     WTX_MSG_SVR_DESC * objp
  1988.     )
  1989.     {
  1990.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  1991. return (FALSE);
  1992.     if (!xdr_WTX_SVR_DESC (xdrs, &objp->wtxSvrDesc))
  1993. return (FALSE);
  1994.     return (TRUE);
  1995.     }
  1996. /*******************************************************************************
  1997. *
  1998. * xdr_WTX_SVR_DESC_Q - xdr routine for wtx all descriptor
  1999. */
  2000. bool_t xdr_WTX_SVR_DESC_Q
  2001.     (
  2002.     XDR * xdrs,
  2003.     WTX_SVR_DESC_Q * objp
  2004.     )
  2005.     {
  2006.     if (!xdr_WTX_SVR_DESC (xdrs, &objp->wtxSvrDesc))
  2007. return (FALSE);
  2008.     if (!xdr_pointer (xdrs, (char **)&objp->pNext, sizeof (WTX_SVR_DESC_Q), 
  2009.       xdr_WTX_SVR_DESC_Q))
  2010. return (FALSE);
  2011.     return (TRUE);
  2012.     }
  2013. /*******************************************************************************
  2014. *
  2015. * xdr_WTX_MSG_SVR_DESC - xdr routine for wtx descriptor
  2016. */
  2017. bool_t xdr_WTX_MSG_SVR_DESC_Q
  2018.     (
  2019.     XDR * xdrs,
  2020.     WTX_MSG_SVR_DESC_Q * objp
  2021.     )
  2022.     {
  2023.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  2024. return (FALSE);
  2025.     if (!xdr_WTX_SVR_DESC_Q (xdrs, &objp->wtxSvrDescQ))
  2026. return (FALSE);
  2027.     return (TRUE);
  2028.     }
  2029. /*******************************************************************************
  2030. *
  2031. * xdr_WTX_MSG_WTXREGD_PATTERN - xdr routine for WindPower deamon pattern
  2032. */
  2033. bool_t xdr_WTX_MSG_WTXREGD_PATTERN
  2034.     (
  2035.     XDR * xdrs,
  2036.     WTX_MSG_WTXREGD_PATTERN * objp
  2037.     )
  2038.     {
  2039.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  2040. return (FALSE);
  2041.     if (!xdr_WRAPSTRING (xdrs, &objp->name))
  2042. return (FALSE);
  2043.     if (!xdr_WRAPSTRING (xdrs, &objp->type))
  2044. return (FALSE);
  2045.     if (!xdr_WRAPSTRING (xdrs, &objp->key))
  2046. return (FALSE);
  2047.     return (TRUE);
  2048.     }
  2049. /******************************************************************************
  2050. *
  2051. * xdr_WTX_GOPHER_TAPE -
  2052. */
  2053. static bool_t xdr_WTX_GOPHER_TAPE
  2054.     (
  2055.     XDR * xdrs,
  2056.     WTX_GOPHER_TAPE * objp
  2057.     )
  2058.     {
  2059.     u_int len = objp->len;
  2060.     if (!xdr_u_short (xdrs, &objp->len))
  2061. return (FALSE);
  2062.     if (!xdr_bytes (xdrs, &objp->data, &len, ~0))
  2063. return (FALSE);
  2064.     return (TRUE);
  2065.     }
  2066. /******************************************************************************
  2067. *
  2068. * xdr_WTX_MSG_GOPHER_TAPE -
  2069. */
  2070. bool_t xdr_WTX_MSG_GOPHER_TAPE
  2071.     (
  2072.     XDR * xdrs,
  2073.     WTX_MSG_GOPHER_TAPE * objp
  2074.     )
  2075.     {
  2076.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  2077. return (FALSE);
  2078.     if (!xdr_WTX_GOPHER_TAPE  (xdrs, &objp->tape))
  2079. return (FALSE);
  2080.     return (TRUE);
  2081.     }
  2082. /*******************************************************************************
  2083. *
  2084. * xdr_WTX_MSG_DASM_DESC - XDR WTX_MSG_DASM_DESC transfer routine
  2085. *
  2086. */
  2087. bool_t xdr_WTX_MSG_DASM_DESC 
  2088.     (
  2089.     XDR *        xdrs,
  2090.     WTX_MSG_DASM_DESC *  objp
  2091.     )
  2092.     {
  2093.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  2094. return (FALSE);
  2095.     if (!xdr_TGT_ADDR_T (xdrs, &objp->startAddr))
  2096. return (FALSE);
  2097.     if (!xdr_u_long (xdrs, (u_long *)&objp->nInst))
  2098. return (FALSE);
  2099.     if (!xdr_TGT_ADDR_T (xdrs, &objp->endAddr))
  2100. return (FALSE);
  2101.     if (!xdr_bool (xdrs, (bool_t *)&objp->printAddr))
  2102. return (FALSE);
  2103.     if (!xdr_bool (xdrs, (bool_t *)&objp->printOpcodes))
  2104. return (FALSE);
  2105.     if (!xdr_bool (xdrs, (bool_t *)&objp->hexAddr))
  2106. return (FALSE);
  2107.     if (!xdr_bool (xdrs, (bool_t *)&objp->giveMeNext))
  2108. return (FALSE);
  2109.     return (TRUE);
  2110.     }
  2111. /*******************************************************************************
  2112. *
  2113. * xdr_WTX_MSG_DASM_INST_LIST - XDR WTX_MSG_DASM_INST_LIST transfer routine
  2114. *
  2115. */
  2116. bool_t xdr_WTX_MSG_DASM_INST_LIST
  2117.     (
  2118.     XDR * xdrs,
  2119.     WTX_MSG_DASM_INST_LIST * objp
  2120.     )
  2121.     {
  2122.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  2123. return (FALSE);
  2124.     if (!xdr_WRAPSTRING (xdrs, &objp->instList.pInst))
  2125. return (FALSE);
  2126.     if (!xdr_u_long (xdrs, (u_long *) &objp->instList.nextInst))
  2127. return (FALSE);
  2128.     if (!xdr_u_long (xdrs, (u_long *) &objp->instList.listSize))
  2129. return (FALSE);
  2130.     if (!xdr_bool (xdrs, (bool_t *) &objp->moreToCome))
  2131. return (FALSE);
  2132.     return (TRUE);
  2133.     }
  2134. /******************************************************************************
  2135. *
  2136. * xdr_WTX_EVENT_NODE -
  2137. */
  2138. bool_t xdr_WTX_EVENT_NODE
  2139.     (
  2140.     XDR *             xdrs,
  2141.     WTX_EVENT_NODE *  objp
  2142.     )
  2143.     {
  2144.     if (!xdr_WTX_EVENT_DESC (xdrs, &objp->event))
  2145.         return (FALSE);
  2146.     if (!xdr_pointer (xdrs, (char **)&objp->pNext, sizeof (WTX_EVENT_NODE),
  2147.                       xdr_WTX_EVENT_NODE))
  2148.         return (FALSE);
  2149.     return (TRUE);
  2150.     }
  2151. /******************************************************************************
  2152. *
  2153. * xdr_MSG_EVENT_LIST -
  2154. *
  2155. */
  2156. bool_t xdr_WTX_MSG_EVENT_LIST
  2157.     (
  2158.     XDR *                  xdrs,
  2159.     WTX_MSG_EVENT_LIST *   objp
  2160.     )
  2161.     {
  2162.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  2163.         return (FALSE);
  2164.     if (!xdr_pointer(xdrs, (char **)&objp->pEventList,
  2165.                      sizeof(WTX_EVENT_NODE), xdr_WTX_EVENT_NODE))
  2166.         return (FALSE);
  2167.     return (TRUE);
  2168.     }
  2169. /*******************************************************************************
  2170. *
  2171. * xdr_WTX_MSG_FILE_LOAD_DESC -
  2172. *
  2173. */
  2174. bool_t xdr_WTX_MSG_FILE_LOAD_DESC
  2175.     (
  2176.     XDR *       xdrs,
  2177.     WTX_MSG_FILE_LOAD_DESC * objp
  2178.     )
  2179.     {
  2180.     /* Buffer where to decode data */
  2181.     char * buff;
  2182.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  2183.         return (FALSE);
  2184.     if (!xdr_u_long (xdrs, (u_long *)&objp->flags))
  2185. return (FALSE);
  2186.     if (!xdr_WTX_LD_M_FILE_DESC (xdrs, &objp->fileDesc))
  2187.         return (FALSE);
  2188.     if (!xdr_u_long (xdrs, (u_long *)&objp->buffer))
  2189.         return (FALSE);
  2190.     if (!xdr_int (xdrs, &objp->numItems))
  2191.         return (FALSE);
  2192.     if (!xdr_int (xdrs, &objp->fileSize))
  2193.         return (FALSE);
  2194.     if (!xdr_int (xdrs, &objp->numPacket))
  2195.         return (FALSE);
  2196.     switch (xdrs->x_op)
  2197.         {
  2198.         case XDR_DECODE:
  2199.             {
  2200.     if (objp->numItems != 0)
  2201. {
  2202. /* Export block */
  2203. if ((buff = (char *) malloc (objp->numItems)) == NULL)
  2204.     return (FALSE);
  2205. if (!xdr_opaque (xdrs, (char *) buff, objp->numItems))
  2206.     return (FALSE);
  2207. /*
  2208.  * Save the allocated buffer address in objp->destination for
  2209.  * later use by the client.
  2210.  */
  2211. objp->buffer = (char *) buff;
  2212. }
  2213.     else
  2214. objp->buffer = NULL;
  2215.     return (TRUE);
  2216.     }
  2217.         case XDR_ENCODE:
  2218.     {
  2219.     if (objp->numItems != 0)
  2220. {
  2221. if (!xdr_opaque (xdrs, (char *) objp->buffer, objp->numItems))
  2222.     return (FALSE);
  2223. }
  2224.     return (TRUE);
  2225.     }
  2226.         case XDR_FREE:
  2227.             {
  2228.             /* Free memory */
  2229.             free (objp->buffer);
  2230.             return (TRUE);
  2231.             }
  2232.         }
  2233.     return (FALSE);
  2234.     }
  2235. /*******************************************************************************
  2236. *
  2237. * xdr_WTX_LD_M_FILE_DESC - multiple section object file
  2238. *
  2239. */
  2240. bool_t xdr_WTX_LD_M_FILE_DESC
  2241.     (
  2242.     XDR *       xdrs,
  2243.     WTX_LD_M_FILE_DESC * objp
  2244.     )
  2245.     {
  2246.     if (!xdr_WRAPSTRING (xdrs, &objp->filename))
  2247.         return (FALSE);
  2248.     if (!xdr_int (xdrs, &objp->loadFlag))
  2249.         return (FALSE);
  2250.     if (!xdr_u_long (xdrs, (u_long *)&objp->moduleId))
  2251.         return (FALSE);
  2252.     if (!xdr_u_long (xdrs, (u_long *)&objp->nSections))
  2253.         return (FALSE);
  2254.     if (!xdr_array (xdrs, (char **)&objp->section, (u_int *)&objp->nSections,
  2255.                     (WTX_MAX_SECTION_CNT * sizeof (LD_M_SECTION)),
  2256.                     sizeof (LD_M_SECTION), xdr_LD_M_SECTION))
  2257.         return (FALSE);
  2258.     if (!xdr_WTX_SYM_LIST (xdrs, &objp->undefSymList))
  2259.         return (FALSE);
  2260.     return (TRUE);
  2261.     }
  2262. /*******************************************************************************
  2263. *
  2264. * xdr_WTX_EVENT_2 - WTX
  2265. *
  2266. */
  2267. bool_t xdr_WTX_EVENT_2
  2268.     (
  2269.     XDR *        xdrs,
  2270.     WTX_EVENT_2 * objp
  2271.     )
  2272.     {
  2273.     if (!xdr_enum (xdrs, (enum_t *)&objp->eventType))
  2274.         return (FALSE);
  2275.     if (!xdr_u_long (xdrs, (u_long *)&objp->numArgs))
  2276.         return (FALSE);
  2277.     if (!xdr_array (xdrs, (char **)&objp->args, &objp->numArgs,
  2278.                     ~0, sizeof (u_long), xdr_u_long))
  2279.         return (FALSE);
  2280.     return (TRUE);
  2281.     }
  2282. /*******************************************************************************
  2283. *
  2284. * xdr_WTX_EVTPT_2 - WTX
  2285. *
  2286. */
  2287. bool_t xdr_WTX_EVTPT_2
  2288.     (
  2289.     XDR *        xdrs,
  2290.     WTX_EVTPT_2 * objp
  2291.     )
  2292.     {
  2293.     if (!xdr_WTX_EVENT_2 (xdrs, &objp->event))
  2294.         return (FALSE);
  2295.     if (!xdr_WTX_CONTEXT (xdrs, &objp->context))
  2296.         return (FALSE);
  2297.     if (!xdr_WTX_ACTION (xdrs, &objp->action))
  2298.         return (FALSE);
  2299.     return (TRUE);
  2300.     }
  2301. /*******************************************************************************
  2302. *
  2303. * xdr_WTX_MSG_EVTPT_DESC_2 - WTX
  2304. *
  2305. */
  2306. bool_t xdr_WTX_MSG_EVTPT_DESC_2
  2307.     (
  2308.     XDR *        xdrs,
  2309.     WTX_MSG_EVTPT_DESC_2 * objp
  2310.     )
  2311.     {
  2312.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  2313.         return (FALSE);
  2314.     if (!xdr_WTX_EVTPT_2 (xdrs, &objp->wtxEvtpt))
  2315.         return (FALSE);
  2316.     return (TRUE);
  2317.     }
  2318. /*******************************************************************************
  2319. *
  2320. * xdr_WTX_EVTPT_INFO - eventpoint info
  2321. *
  2322. */
  2323. bool_t xdr_WTX_EVTPT_INFO
  2324.     (
  2325.     XDR * xdrs,
  2326.     WTX_EVTPT_INFO * objp
  2327.     )
  2328.     {
  2329.     if (!xdr_WTX_EVTPT_2 (xdrs, &objp->wtxEvtpt))
  2330.         return (FALSE);
  2331.     if (!xdr_u_long (xdrs, (u_long *)&objp->toolId))
  2332.         return (FALSE);
  2333.     if (!xdr_u_long (xdrs, (u_long *)&objp->evtptNum))
  2334.         return (FALSE);
  2335.     if (!xdr_u_long (xdrs, (u_long *)&objp->pReserved1))
  2336.         return (FALSE);
  2337.     if (!xdr_u_long (xdrs, (u_long *)&objp->pReserved2))
  2338.         return (FALSE);
  2339.     return (TRUE);
  2340.     }
  2341. /*******************************************************************************
  2342. *
  2343. * xdr_WTX_MSG_EVTPT_LIST_2 - eventpoint list
  2344. *
  2345. */
  2346. bool_t xdr_WTX_MSG_EVTPT_LIST_2
  2347.     (
  2348.     XDR * xdrs,
  2349.     WTX_MSG_EVTPT_LIST_2 * objp
  2350.     )
  2351.     {
  2352.     if (!xdr_WTX_CORE (xdrs, &objp->wtxCore))
  2353.         return (FALSE);
  2354.     if (!xdr_u_long (xdrs, (u_long *)&objp->nEvtpt))
  2355.         return (FALSE);
  2356.     if (!xdr_array (xdrs, (char **)&objp->pEvtptInfo, (u_int *)&objp->nEvtpt,
  2357.                     ~0, sizeof (WTX_EVTPT_INFO), xdr_WTX_EVTPT_INFO))
  2358.         return (FALSE);
  2359.     return (TRUE);
  2360.     }