Index: branches/fep_client_cpp/fep_server.c
===================================================================
--- branches/fep_client_cpp/fep_server.c	(revision 69)
+++ branches/fep_client_cpp/fep_server.c	(revision 69)
@@ -0,0 +1,350 @@
+/*
+ * This is sample code generated by rpcgen.
+ * These are only templates and you can use them
+ * as a guideline for developing your own functions.
+ */
+
+#include "fep.h"
+#include "fep_print.cpp"		
+
+int *
+fep_getlineinfocount_32_svc(void *argp, struct svc_req *rqstp)
+{
+	static int  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+lineinfo_ret *
+fep_getlineinfo_32_svc(int *argp, struct svc_req *rqstp)
+{
+	static lineinfo_ret  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+lineinfo_ret *
+fep_getlineinfovalue_32_svc(int *argp, struct svc_req *rqstp)
+{
+	static lineinfo_ret  result;
+
+	/*
+	 * insert server code here
+	 */
+	return &result;
+}
+
+lineinfo_ret *
+fep_sendlineinfo_32_svc(fep_lineinfo *argp, struct svc_req *rqstp)
+{
+	static lineinfo_ret  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+std_time_ret *
+fep_gettime_32_svc(void *argp, struct svc_req *rqstp)
+{
+	static std_time_ret  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+std_time_ret *
+fep_settime_32_svc(fep_std_time *argp, struct svc_req *rqstp)
+{
+	static std_time_ret  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+std_time_ret *
+fep_advancetime_32_svc(int *argp, struct svc_req *rqstp)
+{
+	static std_time_ret  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+int *
+fep_getschedulecount_32_svc(void *argp, struct svc_req *rqstp)
+{
+	static int  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+schedule_ret *
+fep_getschedule_32_svc(int *argp, struct svc_req *rqstp)
+{
+	static schedule_ret  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+schedule_ret *
+fep_getschedulevalue_32_svc(int *argp, struct svc_req *rqstp)
+{
+	static schedule_ret  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+schedule_ret *
+fep_sendschedule_32_svc(fep_schedule *argp, struct svc_req *rqstp)
+{
+	static schedule_ret  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+errorstatus *
+fep_setlinemgr_schedule_32_svc(fep_setschedule *argp, struct svc_req *rqstp)
+{
+	static errorstatus  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+errorstatus *
+fep_free_schedule_32_svc(int *argp, struct svc_req *rqstp)
+{
+	static errorstatus  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+errorstatus *
+fep_idleline_32_svc(fep_lineop *argp, struct svc_req *rqstp)
+{
+	static errorstatus  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+errorstatus *
+fep_modemsignals_32_svc(fep_lineop *argp, struct svc_req *rqstp)
+{
+	static errorstatus  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+reply_ret *
+fep_getreply_32_svc(fep_reply_request *argp, struct svc_req *rqstp)
+{
+	static reply_ret  result;
+	/*
+	 * insert server code here
+	 */
+		
+	return &result;
+}
+
+errorstatus *
+fep_clearreply_32_svc(void *argp, struct svc_req *rqstp)
+{
+	static errorstatus  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+schedule_ret *
+fep_updateschedule_32_svc(fep_schedule *argp, struct svc_req *rqstp)
+{
+	static schedule_ret  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+int *
+fep_getreportcount_32_svc(void *argp, struct svc_req *rqstp)
+{
+	static int  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+report_ret *
+fep_getreport_32_svc(int *argp, struct svc_req *rqstp)
+{
+	static report_ret  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+report_ret *
+fep_getreportvalue_32_svc(int *argp, struct svc_req *rqstp)
+{
+	static report_ret  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+report_ret *
+fep_sendreport_32_svc(fep_report *argp, struct svc_req *rqstp)
+{
+	static report_ret  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+void *
+fep_reply_xfer_32_svc(fep_reply *argp, struct svc_req *rqstp)
+{
+	static reply_ret result;
+	print_fep_reply(*argp);
+	return (void *) &result;
+}
+
+errorstatus *
+fep_set_debug_32_svc(int *argp, struct svc_req *rqstp)
+{
+	static errorstatus  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+int *
+fep_get_stack_left_32_svc(void *argp, struct svc_req *rqstp)
+{
+	static int  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+errorstatus *
+fep_setlmdebug_32_svc(fep_setschedule *argp, struct svc_req *rqstp)
+{
+	static errorstatus  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+errorstatus *
+fep_shutdown_32_svc(void *argp, struct svc_req *rqstp)
+{
+	static errorstatus  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+int *
+fep_initsystem_32_svc(int *argp, struct svc_req *rqstp)
+{
+	static int  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
+
+int *
+fep_initrealix_32_svc(init_form *argp, struct svc_req *rqstp)
+{
+	static int  result;
+
+	/*
+	 * insert server code here
+	 */
+
+	return &result;
+}
Index: branches/fep_client_cpp/localcli
===================================================================
--- branches/fep_client_cpp/localcli	(revision 69)
+++ branches/fep_client_cpp/localcli	(revision 69)
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+./client localhost 
Index: branches/fep_client_cpp/ATMSDriverRPC.depend
===================================================================
--- branches/fep_client_cpp/ATMSDriverRPC.depend	(revision 69)
+++ branches/fep_client_cpp/ATMSDriverRPC.depend	(revision 69)
@@ -0,0 +1,11 @@
+# depslib dependency file v1.0
+1504297240 source:/home/andrew/ATMSDriverRPC/fep_clnt.c
+	<memory.h>
+	"fep.h"
+
+1504297240 /home/andrew/ATMSDriverRPC/fep.h
+	<rpc/rpc.h>
+
+1504297240 source:/home/andrew/ATMSDriverRPC/fep_xdr.c
+	"fep.h"
+
Index: branches/fep_client_cpp/ATMSDriverRPC.cbp
===================================================================
--- branches/fep_client_cpp/ATMSDriverRPC.cbp	(revision 69)
+++ branches/fep_client_cpp/ATMSDriverRPC.cbp	(revision 69)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+	<FileVersion major="1" minor="6" />
+	<Project>
+		<Option title="ATMSDriverRPC" />
+		<Option pch_mode="2" />
+		<Option compiler="gcc" />
+		<Build>
+			<Target title="Debug">
+				<Option output="bin/Debug/ATMSDriverRPC" prefix_auto="1" extension_auto="1" />
+				<Option object_output="obj/Debug/" />
+				<Option type="1" />
+				<Option compiler="gcc" />
+				<Compiler>
+					<Add option="-g" />
+				</Compiler>
+			</Target>
+			<Target title="Release">
+				<Option output="bin/Release/ATMSDriverRPC" prefix_auto="1" extension_auto="1" />
+				<Option object_output="obj/Release/" />
+				<Option type="1" />
+				<Option compiler="gcc" />
+				<Compiler>
+					<Add option="-O2" />
+				</Compiler>
+				<Linker>
+					<Add option="-s" />
+				</Linker>
+			</Target>
+		</Build>
+		<Compiler>
+			<Add option="-Wall" />
+		</Compiler>
+		<Unit filename="fep.h" />
+		<Unit filename="fep_client.cpp" />
+		<Unit filename="fep_clnt.c">
+			<Option compilerVar="CC" />
+		</Unit>
+		<Unit filename="fep_xdr.c">
+			<Option compilerVar="CC" />
+		</Unit>
+		<Extensions>
+			<code_completion />
+			<debugger />
+		</Extensions>
+	</Project>
+</CodeBlocks_project_file>
Index: branches/fep_client_cpp/fep_client.cpp
===================================================================
--- branches/fep_client_cpp/fep_client.cpp	(revision 69)
+++ branches/fep_client_cpp/fep_client.cpp	(revision 69)
@@ -0,0 +1,137 @@
+#include "fep.h"
+#include "fep_print.cpp"
+#include <stdio.h>
+#include <stdlib.h>
+
+/* Author: John A. Torres
+   The fep_program_32 function creates a new RPC Client which
+   sends an fep_reply structure to the ATMS Server. After the
+   reply is sent, the ATMS Sends a response and the RPC Client
+   is destroyed.
+ */
+
+/* Handles the ATMS's response to RPC Call */
+void handle_ATMS_response(CLIENT *clnt, void *response)
+{
+	/* If ATMS reply call fails */
+	if (response == NULL)
+	{
+		clnt_perror(clnt, "RPC call failed");
+	}
+	/* If ATMS reply is successful */
+	else
+	{
+		printf("Successful RPC call to ATMS...\n");
+		printf("Printing ATMS RPC Call response...\n");
+		print_reply_ret(*(reply_ret *) (&response));
+	}
+}
+
+fep_reply generate_reply()
+{
+	/* Declarations to construct an fep_reply */
+	fep_answer_info fai;
+	fep_pollerror fpe;
+	fep_answer_short_msg fasm;
+	fep_shortanswer fsa;
+	fep_reply  fep_reply_xfer_32_arg; // the reply to be sent to ATMS
+
+	/* Populate fep_shortmessage data */
+	printf("Setting fep_reply values...\n");
+
+	fasm.message_len = 5;
+	fasm.message[0] = 0x0a;
+	fasm.message[1] = 0x0d;
+	fasm.message[2] = 0x11;
+	fasm.message[3] = 0x12;
+	fasm.message[4] = 0x13;
+
+	fpe.msgerror = (enum answererror) 0;
+	fpe.state = (enum Polling_FSM_States) 0x00;
+	fpe.perrno = 0;
+	fpe.termination = 0;
+	fpe.count = 0;
+
+	fai.poll_time = 1111443466;
+	fai.status = (enum replystatus) 1;
+	fai.poll_user_info1 = 1;
+	fai.poll_user_info2 = 2;
+	fai.retries = 0;
+	fai.poll_error_count = 1;
+	fai.pollerror[0] = fpe;
+
+	fsa.info = fai;
+	fsa.msg = fasm;
+
+	fep_reply_xfer_32_arg.reply = 0;
+	fep_reply_xfer_32_arg.schedule = 0;
+	fep_reply_xfer_32_arg.lineinfo = 0;
+	fep_reply_xfer_32_arg.kind = (enum polltype)0;
+	fep_reply_xfer_32_arg.flag = (enum replykind) 0;
+	fep_reply_xfer_32_arg.schedule_sequence = 0;
+	fep_reply_xfer_32_arg.global_sequence = 0;
+	fep_reply_xfer_32_arg.schedule_time = 1111443466;
+	fep_reply_xfer_32_arg.user_info1 = 0;
+	fep_reply_xfer_32_arg.user_info2 = 0;
+	fep_reply_xfer_32_arg.system_key = 0;
+	fep_reply_xfer_32_arg.answers.size = 1;
+	fep_reply_xfer_32_arg.answers.fep_answer_list_u.shortp.count = 1;
+	fep_reply_xfer_32_arg.answers.fep_answer_list_u.shortp.answers[0] = fsa;
+
+	return fep_reply_xfer_32_arg;
+}
+
+/* Creates an RPC client, populates the fep_reply data structure,
+   makes an RPC Call to the ATMS Server to pass the fep_reply,
+   destroys the RPC Client and returns
+ */
+void fep_program_32(char *host)
+{
+	CLIENT *clnt;
+
+	/* Var to recieve message back from ATMS */
+	void  *rv;
+
+	/* Create RPC Client to communicate with ATMS */
+	printf("Preparing to create RPC client...\n");
+	clnt = clnt_create(host, /*100090,*/ 103121, 32, "tcp");
+
+	/* Check if client creation failed */ 
+	if (clnt == (CLIENT *) NULL)
+	{
+		fprintf(stderr, "Can't create client to %s\n", host);
+		exit(1);
+	}
+
+	/* Make RPC Call to transfer reply to ATMS */
+	printf("Transferring data to ATMS Server...\n");
+	fep_reply reply = generate_reply();
+	rv = fep_reply_xfer_32(&reply, clnt);
+
+	/* Handle ATMS response to RPC Call */
+	printf("Handling ATMS response...\n");
+	handle_ATMS_response(clnt, rv);
+
+	/* Destroy client */
+	printf("Destroying client...\n");
+	clnt_destroy(clnt);
+	printf("Returning to main...\n");
+}
+
+/* Main driver function to create an RPC Client, make a single RPC Call to the
+   ATMS Server */
+int main(int argc, char *argv[]) {
+	char *host;
+
+	if (argc < 2)
+	{
+		printf("usage:  %s server_host\n", argv[0]);
+		exit(1);
+	}
+
+	/* Create RPC Client to send an fep_reply to ATMS */
+	host = argv[1];
+	fep_program_32(host);
+
+	return 0;
+}
Index: branches/fep_client_cpp/hexdump.c
===================================================================
--- branches/fep_client_cpp/hexdump.c	(revision 69)
+++ branches/fep_client_cpp/hexdump.c	(revision 69)
@@ -0,0 +1,53 @@
+#include <stdio.h>
+
+void hexDump (char *desc, void *addr, int len) {
+    int i;
+    unsigned char buff[17];
+    unsigned char *pc = (unsigned char*)addr;
+
+    // Output description if given.
+    if (desc != NULL)
+        printf ("%s:\n", desc);
+
+    if (len == 0) {
+        printf("  ZERO LENGTH\n");
+        return;
+    }
+    if (len < 0) {
+        printf("  NEGATIVE LENGTH: %i\n",len);
+        return;
+    }
+
+    // Process every byte in the data.
+    for (i = 0; i < len; i++) {
+        // Multiple of 16 means new line (with line offset).
+
+        if ((i % 16) == 0) {
+            // Just don't print ASCII for the zeroth line.
+            if (i != 0)
+                printf ("  %s\n", buff);
+
+            // Output the offset.
+            printf ("  %04x ", i);
+        }
+
+        // Now the hex code for the specific character.
+        printf (" %02x", pc[i]);
+
+        // And store a printable ASCII character for later.
+        if ((pc[i] < 0x20) || (pc[i] > 0x7e))
+            buff[i % 16] = '.';
+        else
+            buff[i % 16] = pc[i];
+        buff[(i % 16) + 1] = '\0';
+    }
+
+    // Pad out last line if not exactly 16 characters.
+    while ((i % 16) != 0) {
+        printf ("   ");
+        i++;
+    }
+
+    // And print the final ASCII bit.
+    printf ("  %s\n", buff);
+}
Index: branches/fep_client_cpp/atmscli
===================================================================
--- branches/fep_client_cpp/atmscli	(revision 69)
+++ branches/fep_client_cpp/atmscli	(revision 69)
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+./client 192.168.251.27
Index: branches/fep_client_cpp/build
===================================================================
--- branches/fep_client_cpp/build	(revision 69)
+++ branches/fep_client_cpp/build	(revision 69)
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+g++ -g fep_client.cpp fep_clnt.c fep_xdr.c -o client && gcc fep_server.c fep_svc.c fep_xdr.c -o server
Index: branches/fep_client_cpp/fep.h
===================================================================
--- branches/fep_client_cpp/fep.h	(revision 69)
+++ branches/fep_client_cpp/fep.h	(revision 69)
@@ -0,0 +1,761 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#ifndef _FEP_H_RPCGEN
+#define _FEP_H_RPCGEN
+
+#include <rpc/rpc.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RPC HDR test */
+#ifndef FEP_PROGRAM
+#define MAXDEVLEN 32
+#define _MAXSHORTMESSAGELEN 128
+#define _MAXLONGMESSAGELEN 1024
+#define _MAXSHORTPOLLS 20
+#define _MAXLONGPOLLS 2
+#define _MAXPOLLRETRY 2
+#define _MAXSHORTREPLYLEN 128
+#define _MAXLONGREPLYLEN 1024
+#define MAXADDRLEN 64
+#define MAXSHORTMESSAGELEN _MAXSHORTMESSAGELEN
+#define MAXLONGMESSAGELEN _MAXLONGMESSAGELEN
+#define MAXSHORTPOLLS _MAXSHORTPOLLS
+#define MAXLONGPOLLS _MAXLONGPOLLS
+#define MAXPOLLRETRY _MAXPOLLRETRY
+#define MAXSHORTREPLYLEN _MAXSHORTREPLYLEN
+#define MAXLONGREPLYLEN _MAXLONGREPLYLEN
+
+enum errorstatus {
+	FEP_OK = 0,
+	FEP_OUTOFRANGE = 1,
+	FEP_BADHANDLE = 2,
+	FEP_NOREPLY = 3,
+	FEP_SCHBUSY = 4,
+	FEP_LINEBUSY = 5,
+	FEP_REPORTBUSY = 6,
+	FEP_NOREPORT = 7,
+	FEP_NOMEMORY = 8,
+	FEP_BADTIME = 9,
+	FEP_BADTIMESYNCH = 10,
+	FEP_BADKIND = 11,
+	FEP_BADCONNECT = 12,
+	FEP_NOAUTHORITY = 13,
+};
+typedef enum errorstatus errorstatus;
+
+enum Polling_FSM_States {
+	INITSTATE = 0x01,
+	WRALARMSTATE = 0x10,
+	CLRSTATE = 0x20,
+	RTSONSTATE = 0x30,
+	CTSSTATE = 0x40,
+	WRITESTATE = 0x50,
+	RTSOFFSTATE = 0x60,
+	RDALARMSTATE = 0x70,
+	RDSTATE = 0x80,
+	DONESTATE = 0x00,
+};
+typedef enum Polling_FSM_States Polling_FSM_States;
+
+struct fep_lineinfo {
+	int lineinfo;
+	char device[MAXDEVLEN];
+	int poll;
+	int command;
+	int sync;
+	int line_error_count;
+	int pid;
+	int semaphore;
+	int debug;
+};
+typedef struct fep_lineinfo fep_lineinfo;
+
+struct lineinfo_ret {
+	errorstatus status;
+	union {
+		fep_lineinfo info;
+	} lineinfo_ret_u;
+};
+typedef struct lineinfo_ret lineinfo_ret;
+
+struct fep_std_time {
+	int year;
+	int month;
+	int day;
+	int hour;
+	int minute;
+	int second;
+	long time_t;
+};
+typedef struct fep_std_time fep_std_time;
+
+struct std_time_ret {
+	errorstatus status;
+	union {
+		fep_std_time info;
+	} std_time_ret_u;
+};
+typedef struct std_time_ret std_time_ret;
+
+enum protocoltype {
+	DEFAULT = 0,
+	SATMSPROT = 1,
+	SDRMSPROT = 2,
+	INACTIVE = 3,
+	CLEARPROT = 4,
+	CMS500PROT = 5,
+	CMSHPPROT = 6,
+	TIMESYNCPOLL = 7,
+};
+typedef enum protocoltype protocoltype;
+
+enum duplex {
+	HALFDUPLEX = 0,
+	FULLDUPLEX = 1,
+};
+typedef enum duplex duplex;
+
+struct fep_poll_info {
+	int D7_update;
+	protocoltype protocol;
+	int poll_user_info1;
+	int poll_user_info2;
+	int format;
+	int speed;
+	int mode;
+	int min_separation;
+	int delay_rts_on;
+	int max_send;
+	int delay_rts_off;
+	int max_reply;
+	int min_error;
+	int max_retry;
+	int reply_len;
+	int poll_error_count;
+};
+typedef struct fep_poll_info fep_poll_info;
+
+struct fep_poll_short_msg {
+	int message_len;
+	char message[MAXSHORTMESSAGELEN];
+};
+typedef struct fep_poll_short_msg fep_poll_short_msg;
+
+struct fep_shortpoll {
+	fep_poll_info info;
+	fep_poll_short_msg msg;
+};
+typedef struct fep_shortpoll fep_shortpoll;
+
+struct fep_shortpoll_list {
+	int count;
+	fep_shortpoll polls[MAXSHORTPOLLS];
+};
+typedef struct fep_shortpoll_list fep_shortpoll_list;
+
+struct fep_poll_long_msg {
+	int message_len;
+	char message[MAXLONGMESSAGELEN];
+};
+typedef struct fep_poll_long_msg fep_poll_long_msg;
+
+struct fep_longpoll {
+	fep_poll_info info;
+	fep_poll_long_msg msg;
+};
+typedef struct fep_longpoll fep_longpoll;
+
+struct fep_longpoll_list {
+	int count;
+	fep_longpoll polls[MAXLONGPOLLS];
+};
+typedef struct fep_longpoll_list fep_longpoll_list;
+
+enum poll_length {
+	SHORTPOLL = 0,
+	LONGPOLL = 1,
+};
+typedef enum poll_length poll_length;
+
+struct fep_poll_list {
+	int size;
+	union {
+		fep_shortpoll_list shortp;
+		fep_longpoll_list longp;
+	} fep_poll_list_u;
+};
+typedef struct fep_poll_list fep_poll_list;
+
+enum polltype {
+	POLL = 0,
+	COMMAND = 1,
+	TIMESYNC = 2,
+};
+typedef enum polltype polltype;
+
+enum commandtype {
+	AFTERPOLL = 0,
+	BEFOREPOLL = 1,
+	IMMEDIATE = 2,
+};
+typedef enum commandtype commandtype;
+
+enum schedulestatus {
+	IDLE = 0,
+	ACTIVE = 1,
+	COMPLETE = 2,
+};
+typedef enum schedulestatus schedulestatus;
+
+struct fep_schedule {
+	int schedule;
+	int lineinfo;
+	polltype kind;
+	commandtype priority;
+	protocoltype protocol;
+	fep_std_time time;
+	int interval;
+	long at_time;
+	int user_info1;
+	int user_info2;
+	int system_key;
+	int next;
+	int previous;
+	int report;
+	int sequence;
+	int status;
+	int retry;
+	fep_poll_list fep_polls;
+};
+typedef struct fep_schedule fep_schedule;
+
+enum answererror {
+	ERR_BSCF_ERR = -1,
+	ERR_NONE = 0,
+	ERR_MSG_LEN = 2,
+	ERR_MSG_HDR = 3,
+	ERR_MSG_CHKSUM = 4,
+	ERR_MSG_TRAILER = 5,
+};
+typedef enum answererror answererror;
+
+struct fep_pollerror {
+	answererror msgerror;
+	Polling_FSM_States state;
+	int perrno;
+	int termination;
+	int count;
+};
+typedef struct fep_pollerror fep_pollerror;
+
+enum replystatus {
+	FAILURE = 2,
+	DONE = 1,
+	UNUSED = 3,
+};
+typedef enum replystatus replystatus;
+
+struct fep_answer_info {
+	long poll_time;
+	replystatus status;
+	int poll_user_info1;
+	int poll_user_info2;
+	int retries;
+	int poll_error_count;
+	fep_pollerror pollerror[MAXPOLLRETRY];
+};
+typedef struct fep_answer_info fep_answer_info;
+
+struct fep_answer_short_msg {
+	int message_len;
+	char message[MAXSHORTREPLYLEN];
+};
+typedef struct fep_answer_short_msg fep_answer_short_msg;
+
+struct fep_shortanswer {
+	fep_answer_info info;
+	fep_answer_short_msg msg;
+};
+typedef struct fep_shortanswer fep_shortanswer;
+
+struct fep_shortanswer_list {
+	int count;
+	fep_shortanswer answers[MAXSHORTPOLLS];
+};
+typedef struct fep_shortanswer_list fep_shortanswer_list;
+
+struct fep_answer_long_msg {
+	int message_len;
+	char message[MAXLONGREPLYLEN];
+};
+typedef struct fep_answer_long_msg fep_answer_long_msg;
+
+struct fep_longanswer {
+	fep_answer_info info;
+	fep_answer_long_msg msg;
+};
+typedef struct fep_longanswer fep_longanswer;
+
+struct fep_longanswer_list {
+	int count;
+	fep_longanswer answers[MAXLONGPOLLS];
+};
+typedef struct fep_longanswer_list fep_longanswer_list;
+
+struct fep_answer_list {
+	int size;
+	union {
+		fep_shortanswer_list shortp;
+		fep_longanswer_list longp;
+	} fep_answer_list_u;
+};
+typedef struct fep_answer_list fep_answer_list;
+
+enum replykind {
+	POLLREPLY = 0,
+	SCHEDNEW = 1,
+	SCHEDDONE = 2,
+};
+typedef enum replykind replykind;
+
+struct fep_reply {
+	int reply;
+	int schedule;
+	int lineinfo;
+	polltype kind;
+	replykind flag;
+	int schedule_sequence;
+	int global_sequence;
+	long schedule_time;
+	int user_info1;
+	int user_info2;
+	int system_key;
+	struct fep_answer_list answers;
+};
+typedef struct fep_reply fep_reply;
+
+struct schedule_ret {
+	errorstatus status;
+	union {
+		fep_schedule info;
+	} schedule_ret_u;
+};
+typedef struct schedule_ret schedule_ret;
+
+struct fep_reply_request {
+	int schedule;
+	int sequence;
+	int block;
+};
+typedef struct fep_reply_request fep_reply_request;
+
+struct reply_ret {
+	errorstatus status;
+	union {
+		fep_reply info;
+	} reply_ret_u;
+};
+typedef struct reply_ret reply_ret;
+
+struct init_form {
+	char host[10];
+	int config;
+};
+typedef struct init_form init_form;
+
+struct fep_setschedule {
+	int lineinfo;
+	int schedule;
+	int debug;
+};
+typedef struct fep_setschedule fep_setschedule;
+
+enum statusflags {
+	ENABLED_FLAG = 1,
+	POLL_FLAG = 2,
+	TIME_FLAG = 4,
+	CMD_FLAG = 8,
+};
+typedef enum statusflags statusflags;
+
+struct fep_lineop {
+	int lineinfo;
+	int flags;
+	int modem_signals;
+};
+typedef struct fep_lineop fep_lineop;
+
+enum ipprotocol {
+	TCPPROT = 0,
+	UDPPROT = 1,
+};
+typedef enum ipprotocol ipprotocol;
+
+enum action {
+	REP = 0,
+	LOG = 1,
+};
+typedef enum action action;
+
+enum portstatus {
+	NOCONNECTION = 0,
+	CONNECTION = 1,
+	FAILED = 2,
+};
+typedef enum portstatus portstatus;
+
+struct fep_report {
+	int report;
+	char dest[MAXADDRLEN];
+	char logfile[MAXADDRLEN];
+	char monitor[MAXADDRLEN];
+	int port;
+	ipprotocol protocol;
+	int update;
+	action action;
+	int reconnect;
+	portstatus status;
+	int perrno;
+	int debug;
+	int pid;
+	int semaphore;
+};
+typedef struct fep_report fep_report;
+
+struct report_ret {
+	errorstatus status;
+	union {
+		fep_report info;
+	} report_ret_u;
+};
+typedef struct report_ret report_ret;
+#define fep_getlineinfocount fep_getlineinfocount ## _ ## 32
+#define fep_getlineinfo fep_getlineinfo ## _ ## 32
+#define fep_getlineinfovalue fep_getlineinfovalue ## _ ## 32
+#define fep_sendlineinfo fep_sendlineinfo ## _ ## 32
+#define fep_gettime fep_gettime ## _ ## 32
+#define fep_settime fep_settime ## _ ## 32
+#define fep_advancetime fep_advancetime ## _ ## 32
+#define fep_getschedulecount fep_getschedulecount ## _ ## 32
+#define fep_getschedule fep_getschedule ## _ ## 32
+#define fep_getschedulevalue fep_getschedulevalue ## _ ## 32
+#define fep_sendschedule fep_sendschedule ## _ ## 32
+#define fep_setlinemgr_schedule fep_setlinemgr_schedule ## _ ## 32
+#define fep_free_schedule fep_free_schedule ## _ ## 32
+#define fep_updateschedule fep_updateschedule ## _ ## 32
+#define fep_idleline fep_idleline ## _ ## 32
+#define fep_modemsignals fep_modemsignals ## _ ## 32
+#define fep_getreply fep_getreply ## _ ## 32
+#define fep_clearreply fep_clearreply ## _ ## 32
+#define fep_getreportcount fep_getreportcount ## _ ## 32
+#define fep_getreport fep_getreport ## _ ## 32
+#define fep_getreportvalue fep_getreportvalue ## _ ## 32
+#define fep_sendreport fep_sendreport ## _ ## 32
+#define fep_reply_xfer fep_reply_xfer ## _ ## 32
+#define fep_schedule_xfer fep_schedule_xfer ## _ ## 32
+#define fep_fake_reply fep_fake_reply ## _ ## 32
+#define fep_set_debug fep_set_debug ## _ ## 32
+#define fep_get_stack_left fep_get_stack_left ## _ ## 32
+#define fep_setlmdebug fep_setlmdebug ## _ ## 32
+#define fep_shutdown fep_shutdown ## _ ## 32
+#define fep_initsystem fep_initsystem ## _ ## 32
+#define fep_initrealix fep_initrealix ## _ ## 32
+/* RPC HDR test */
+#endif
+
+#define FEP_PROGRAM 100090
+#define FEP_VERSION 32
+
+#if defined(__STDC__) || defined(__cplusplus)
+#define FEP_GETLINEINFOCOUNT 1
+extern  int * fep_getlineinfocount_32(void *, CLIENT *);
+extern  int * fep_getlineinfocount_32_svc(void *, struct svc_req *);
+#define FEP_GETLINEINFO 2
+extern  lineinfo_ret * fep_getlineinfo_32(int *, CLIENT *);
+extern  lineinfo_ret * fep_getlineinfo_32_svc(int *, struct svc_req *);
+#define FEP_GETLINEINFOVALUE 3
+extern  lineinfo_ret * fep_getlineinfovalue_32(int *, CLIENT *);
+extern  lineinfo_ret * fep_getlineinfovalue_32_svc(int *, struct svc_req *);
+#define FEP_SENDLINEINFO 4
+extern  lineinfo_ret * fep_sendlineinfo_32(fep_lineinfo *, CLIENT *);
+extern  lineinfo_ret * fep_sendlineinfo_32_svc(fep_lineinfo *, struct svc_req *);
+#define FEP_GETTIME 5
+extern  std_time_ret * fep_gettime_32(void *, CLIENT *);
+extern  std_time_ret * fep_gettime_32_svc(void *, struct svc_req *);
+#define FEP_SETTIME 6
+extern  std_time_ret * fep_settime_32(fep_std_time *, CLIENT *);
+extern  std_time_ret * fep_settime_32_svc(fep_std_time *, struct svc_req *);
+#define FEP_ADVANCETIME 7
+extern  std_time_ret * fep_advancetime_32(int *, CLIENT *);
+extern  std_time_ret * fep_advancetime_32_svc(int *, struct svc_req *);
+#define FEP_GETSCHEDULECOUNT 8
+extern  int * fep_getschedulecount_32(void *, CLIENT *);
+extern  int * fep_getschedulecount_32_svc(void *, struct svc_req *);
+#define FEP_GETSCHEDULE 9
+extern  schedule_ret * fep_getschedule_32(int *, CLIENT *);
+extern  schedule_ret * fep_getschedule_32_svc(int *, struct svc_req *);
+#define FEP_GETSCHEDULEVALUE 10
+extern  schedule_ret * fep_getschedulevalue_32(int *, CLIENT *);
+extern  schedule_ret * fep_getschedulevalue_32_svc(int *, struct svc_req *);
+#define FEP_SENDSCHEDULE 11
+extern  schedule_ret * fep_sendschedule_32(fep_schedule *, CLIENT *);
+extern  schedule_ret * fep_sendschedule_32_svc(fep_schedule *, struct svc_req *);
+#define FEP_SETLINEMGR_SCHEDULE 12
+extern  errorstatus * fep_setlinemgr_schedule_32(fep_setschedule *, CLIENT *);
+extern  errorstatus * fep_setlinemgr_schedule_32_svc(fep_setschedule *, struct svc_req *);
+#define FEP_FREE_SCHEDULE 13
+extern  errorstatus * fep_free_schedule_32(int *, CLIENT *);
+extern  errorstatus * fep_free_schedule_32_svc(int *, struct svc_req *);
+#define FEP_IDLELINE 14
+extern  errorstatus * fep_idleline_32(fep_lineop *, CLIENT *);
+extern  errorstatus * fep_idleline_32_svc(fep_lineop *, struct svc_req *);
+#define FEP_MODEMSIGNALS 15
+extern  errorstatus * fep_modemsignals_32(fep_lineop *, CLIENT *);
+extern  errorstatus * fep_modemsignals_32_svc(fep_lineop *, struct svc_req *);
+#define FEP_GETREPLY 16
+extern  reply_ret * fep_getreply_32(fep_reply_request *, CLIENT *);
+extern  reply_ret * fep_getreply_32_svc(fep_reply_request *, struct svc_req *);
+#define FEP_CLEARREPLY 17
+extern  errorstatus * fep_clearreply_32(void *, CLIENT *);
+extern  errorstatus * fep_clearreply_32_svc(void *, struct svc_req *);
+#define FEP_UPDATESCHEDULE 18
+extern  schedule_ret * fep_updateschedule_32(fep_schedule *, CLIENT *);
+extern  schedule_ret * fep_updateschedule_32_svc(fep_schedule *, struct svc_req *);
+#define FEP_GETREPORTCOUNT 20
+extern  int * fep_getreportcount_32(void *, CLIENT *);
+extern  int * fep_getreportcount_32_svc(void *, struct svc_req *);
+#define FEP_GETREPORT 21
+extern  report_ret * fep_getreport_32(int *, CLIENT *);
+extern  report_ret * fep_getreport_32_svc(int *, struct svc_req *);
+#define FEP_GETREPORTVALUE 22
+extern  report_ret * fep_getreportvalue_32(int *, CLIENT *);
+extern  report_ret * fep_getreportvalue_32_svc(int *, struct svc_req *);
+#define FEP_SENDREPORT 23
+extern  report_ret * fep_sendreport_32(fep_report *, CLIENT *);
+extern  report_ret * fep_sendreport_32_svc(fep_report *, struct svc_req *);
+#define FEP_REPLY_XFER 30
+extern  void * fep_reply_xfer_32(fep_reply *, CLIENT *);
+extern  void * fep_reply_xfer_32_svc(fep_reply *, struct svc_req *);
+#define FEP_SET_DEBUG 36
+extern  errorstatus * fep_set_debug_32(int *, CLIENT *);
+extern  errorstatus * fep_set_debug_32_svc(int *, struct svc_req *);
+#define FEP_GET_STACK_LEFT 37
+extern  int * fep_get_stack_left_32(void *, CLIENT *);
+extern  int * fep_get_stack_left_32_svc(void *, struct svc_req *);
+#define FEP_SETLMDEBUG 38
+extern  errorstatus * fep_setlmdebug_32(fep_setschedule *, CLIENT *);
+extern  errorstatus * fep_setlmdebug_32_svc(fep_setschedule *, struct svc_req *);
+#define FEP_SHUTDOWN 39
+extern  errorstatus * fep_shutdown_32(void *, CLIENT *);
+extern  errorstatus * fep_shutdown_32_svc(void *, struct svc_req *);
+#define FEP_INITSYSTEM 40
+extern  int * fep_initsystem_32(int *, CLIENT *);
+extern  int * fep_initsystem_32_svc(int *, struct svc_req *);
+#define FEP_INITREALIX 41
+extern  int * fep_initrealix_32(init_form *, CLIENT *);
+extern  int * fep_initrealix_32_svc(init_form *, struct svc_req *);
+extern int fep_program_32_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
+
+#else /* K&R C */
+#define FEP_GETLINEINFOCOUNT 1
+extern  int * fep_getlineinfocount_32();
+extern  int * fep_getlineinfocount_32_svc();
+#define FEP_GETLINEINFO 2
+extern  lineinfo_ret * fep_getlineinfo_32();
+extern  lineinfo_ret * fep_getlineinfo_32_svc();
+#define FEP_GETLINEINFOVALUE 3
+extern  lineinfo_ret * fep_getlineinfovalue_32();
+extern  lineinfo_ret * fep_getlineinfovalue_32_svc();
+#define FEP_SENDLINEINFO 4
+extern  lineinfo_ret * fep_sendlineinfo_32();
+extern  lineinfo_ret * fep_sendlineinfo_32_svc();
+#define FEP_GETTIME 5
+extern  std_time_ret * fep_gettime_32();
+extern  std_time_ret * fep_gettime_32_svc();
+#define FEP_SETTIME 6
+extern  std_time_ret * fep_settime_32();
+extern  std_time_ret * fep_settime_32_svc();
+#define FEP_ADVANCETIME 7
+extern  std_time_ret * fep_advancetime_32();
+extern  std_time_ret * fep_advancetime_32_svc();
+#define FEP_GETSCHEDULECOUNT 8
+extern  int * fep_getschedulecount_32();
+extern  int * fep_getschedulecount_32_svc();
+#define FEP_GETSCHEDULE 9
+extern  schedule_ret * fep_getschedule_32();
+extern  schedule_ret * fep_getschedule_32_svc();
+#define FEP_GETSCHEDULEVALUE 10
+extern  schedule_ret * fep_getschedulevalue_32();
+extern  schedule_ret * fep_getschedulevalue_32_svc();
+#define FEP_SENDSCHEDULE 11
+extern  schedule_ret * fep_sendschedule_32();
+extern  schedule_ret * fep_sendschedule_32_svc();
+#define FEP_SETLINEMGR_SCHEDULE 12
+extern  errorstatus * fep_setlinemgr_schedule_32();
+extern  errorstatus * fep_setlinemgr_schedule_32_svc();
+#define FEP_FREE_SCHEDULE 13
+extern  errorstatus * fep_free_schedule_32();
+extern  errorstatus * fep_free_schedule_32_svc();
+#define FEP_IDLELINE 14
+extern  errorstatus * fep_idleline_32();
+extern  errorstatus * fep_idleline_32_svc();
+#define FEP_MODEMSIGNALS 15
+extern  errorstatus * fep_modemsignals_32();
+extern  errorstatus * fep_modemsignals_32_svc();
+#define FEP_GETREPLY 16
+extern  reply_ret * fep_getreply_32();
+extern  reply_ret * fep_getreply_32_svc();
+#define FEP_CLEARREPLY 17
+extern  errorstatus * fep_clearreply_32();
+extern  errorstatus * fep_clearreply_32_svc();
+#define FEP_UPDATESCHEDULE 18
+extern  schedule_ret * fep_updateschedule_32();
+extern  schedule_ret * fep_updateschedule_32_svc();
+#define FEP_GETREPORTCOUNT 20
+extern  int * fep_getreportcount_32();
+extern  int * fep_getreportcount_32_svc();
+#define FEP_GETREPORT 21
+extern  report_ret * fep_getreport_32();
+extern  report_ret * fep_getreport_32_svc();
+#define FEP_GETREPORTVALUE 22
+extern  report_ret * fep_getreportvalue_32();
+extern  report_ret * fep_getreportvalue_32_svc();
+#define FEP_SENDREPORT 23
+extern  report_ret * fep_sendreport_32();
+extern  report_ret * fep_sendreport_32_svc();
+#define FEP_REPLY_XFER 30
+extern  void * fep_reply_xfer_32();
+extern  void * fep_reply_xfer_32_svc();
+#define FEP_SET_DEBUG 36
+extern  errorstatus * fep_set_debug_32();
+extern  errorstatus * fep_set_debug_32_svc();
+#define FEP_GET_STACK_LEFT 37
+extern  int * fep_get_stack_left_32();
+extern  int * fep_get_stack_left_32_svc();
+#define FEP_SETLMDEBUG 38
+extern  errorstatus * fep_setlmdebug_32();
+extern  errorstatus * fep_setlmdebug_32_svc();
+#define FEP_SHUTDOWN 39
+extern  errorstatus * fep_shutdown_32();
+extern  errorstatus * fep_shutdown_32_svc();
+#define FEP_INITSYSTEM 40
+extern  int * fep_initsystem_32();
+extern  int * fep_initsystem_32_svc();
+#define FEP_INITREALIX 41
+extern  int * fep_initrealix_32();
+extern  int * fep_initrealix_32_svc();
+extern int fep_program_32_freeresult ();
+#endif /* K&R C */
+
+/* the xdr functions */
+
+#if defined(__STDC__) || defined(__cplusplus)
+extern  bool_t xdr_errorstatus (XDR *, errorstatus*);
+extern  bool_t xdr_Polling_FSM_States (XDR *, Polling_FSM_States*);
+extern  bool_t xdr_fep_lineinfo (XDR *, fep_lineinfo*);
+extern  bool_t xdr_lineinfo_ret (XDR *, lineinfo_ret*);
+extern  bool_t xdr_fep_std_time (XDR *, fep_std_time*);
+extern  bool_t xdr_std_time_ret (XDR *, std_time_ret*);
+extern  bool_t xdr_protocoltype (XDR *, protocoltype*);
+extern  bool_t xdr_duplex (XDR *, duplex*);
+extern  bool_t xdr_fep_poll_info (XDR *, fep_poll_info*);
+extern  bool_t xdr_fep_poll_short_msg (XDR *, fep_poll_short_msg*);
+extern  bool_t xdr_fep_shortpoll (XDR *, fep_shortpoll*);
+extern  bool_t xdr_fep_shortpoll_list (XDR *, fep_shortpoll_list*);
+extern  bool_t xdr_fep_poll_long_msg (XDR *, fep_poll_long_msg*);
+extern  bool_t xdr_fep_longpoll (XDR *, fep_longpoll*);
+extern  bool_t xdr_fep_longpoll_list (XDR *, fep_longpoll_list*);
+extern  bool_t xdr_poll_length (XDR *, poll_length*);
+extern  bool_t xdr_fep_poll_list (XDR *, fep_poll_list*);
+extern  bool_t xdr_polltype (XDR *, polltype*);
+extern  bool_t xdr_commandtype (XDR *, commandtype*);
+extern  bool_t xdr_schedulestatus (XDR *, schedulestatus*);
+extern  bool_t xdr_fep_schedule (XDR *, fep_schedule*);
+extern  bool_t xdr_answererror (XDR *, answererror*);
+extern  bool_t xdr_fep_pollerror (XDR *, fep_pollerror*);
+extern  bool_t xdr_replystatus (XDR *, replystatus*);
+extern  bool_t xdr_fep_answer_info (XDR *, fep_answer_info*);
+extern  bool_t xdr_fep_answer_short_msg (XDR *, fep_answer_short_msg*);
+extern  bool_t xdr_fep_shortanswer (XDR *, fep_shortanswer*);
+extern  bool_t xdr_fep_shortanswer_list (XDR *, fep_shortanswer_list*);
+extern  bool_t xdr_fep_answer_long_msg (XDR *, fep_answer_long_msg*);
+extern  bool_t xdr_fep_longanswer (XDR *, fep_longanswer*);
+extern  bool_t xdr_fep_longanswer_list (XDR *, fep_longanswer_list*);
+extern  bool_t xdr_fep_answer_list (XDR *, fep_answer_list*);
+extern  bool_t xdr_replykind (XDR *, replykind*);
+extern  bool_t xdr_fep_reply (XDR *, fep_reply*);
+extern  bool_t xdr_schedule_ret (XDR *, schedule_ret*);
+extern  bool_t xdr_fep_reply_request (XDR *, fep_reply_request*);
+extern  bool_t xdr_reply_ret (XDR *, reply_ret*);
+extern  bool_t xdr_init_form (XDR *, init_form*);
+extern  bool_t xdr_fep_setschedule (XDR *, fep_setschedule*);
+extern  bool_t xdr_statusflags (XDR *, statusflags*);
+extern  bool_t xdr_fep_lineop (XDR *, fep_lineop*);
+extern  bool_t xdr_ipprotocol (XDR *, ipprotocol*);
+extern  bool_t xdr_action (XDR *, action*);
+extern  bool_t xdr_portstatus (XDR *, portstatus*);
+extern  bool_t xdr_fep_report (XDR *, fep_report*);
+extern  bool_t xdr_report_ret (XDR *, report_ret*);
+
+#else /* K&R C */
+extern bool_t xdr_errorstatus ();
+extern bool_t xdr_Polling_FSM_States ();
+extern bool_t xdr_fep_lineinfo ();
+extern bool_t xdr_lineinfo_ret ();
+extern bool_t xdr_fep_std_time ();
+extern bool_t xdr_std_time_ret ();
+extern bool_t xdr_protocoltype ();
+extern bool_t xdr_duplex ();
+extern bool_t xdr_fep_poll_info ();
+extern bool_t xdr_fep_poll_short_msg ();
+extern bool_t xdr_fep_shortpoll ();
+extern bool_t xdr_fep_shortpoll_list ();
+extern bool_t xdr_fep_poll_long_msg ();
+extern bool_t xdr_fep_longpoll ();
+extern bool_t xdr_fep_longpoll_list ();
+extern bool_t xdr_poll_length ();
+extern bool_t xdr_fep_poll_list ();
+extern bool_t xdr_polltype ();
+extern bool_t xdr_commandtype ();
+extern bool_t xdr_schedulestatus ();
+extern bool_t xdr_fep_schedule ();
+extern bool_t xdr_answererror ();
+extern bool_t xdr_fep_pollerror ();
+extern bool_t xdr_replystatus ();
+extern bool_t xdr_fep_answer_info ();
+extern bool_t xdr_fep_answer_short_msg ();
+extern bool_t xdr_fep_shortanswer ();
+extern bool_t xdr_fep_shortanswer_list ();
+extern bool_t xdr_fep_answer_long_msg ();
+extern bool_t xdr_fep_longanswer ();
+extern bool_t xdr_fep_longanswer_list ();
+extern bool_t xdr_fep_answer_list ();
+extern bool_t xdr_replykind ();
+extern bool_t xdr_fep_reply ();
+extern bool_t xdr_schedule_ret ();
+extern bool_t xdr_fep_reply_request ();
+extern bool_t xdr_reply_ret ();
+extern bool_t xdr_init_form ();
+extern bool_t xdr_fep_setschedule ();
+extern bool_t xdr_statusflags ();
+extern bool_t xdr_fep_lineop ();
+extern bool_t xdr_ipprotocol ();
+extern bool_t xdr_action ();
+extern bool_t xdr_portstatus ();
+extern bool_t xdr_fep_report ();
+extern bool_t xdr_report_ret ();
+
+#endif /* K&R C */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !_FEP_H_RPCGEN */
Index: branches/fep_client_cpp/ATMSDriverRPC.layout
===================================================================
--- branches/fep_client_cpp/ATMSDriverRPC.layout	(revision 69)
+++ branches/fep_client_cpp/ATMSDriverRPC.layout	(revision 69)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_layout_file>
+	<ActiveTarget name="Debug" />
+	<File name="fep_xdr.c" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+		<Cursor>
+			<Cursor1 position="0" topLine="0" />
+		</Cursor>
+	</File>
+	<File name="fep_client.cpp" open="1" top="1" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+		<Cursor>
+			<Cursor1 position="2810" topLine="0" />
+		</Cursor>
+	</File>
+	<File name="fep.h" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+		<Cursor>
+			<Cursor1 position="101" topLine="0" />
+		</Cursor>
+	</File>
+	<File name="fep_clnt.c" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
+		<Cursor>
+			<Cursor1 position="0" topLine="0" />
+		</Cursor>
+	</File>
+</CodeBlocks_layout_file>
Index: branches/fep_client_cpp/fep_svc.c
===================================================================
--- branches/fep_client_cpp/fep_svc.c	(revision 69)
+++ branches/fep_client_cpp/fep_svc.c	(revision 69)
@@ -0,0 +1,280 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#include "fep.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <rpc/pmap_clnt.h>
+#include <string.h>
+#include <memory.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+#ifndef SIG_PF
+#define SIG_PF void(*)(int)
+#endif
+/* RPC SVC test */
+
+static void
+fep_program_32(struct svc_req *rqstp, register SVCXPRT *transp)
+{
+	union {
+		int fep_getlineinfo_32_arg;
+		int fep_getlineinfovalue_32_arg;
+		fep_lineinfo fep_sendlineinfo_32_arg;
+		fep_std_time fep_settime_32_arg;
+		int fep_advancetime_32_arg;
+		int fep_getschedule_32_arg;
+		int fep_getschedulevalue_32_arg;
+		fep_schedule fep_sendschedule_32_arg;
+		fep_setschedule fep_setlinemgr_schedule_32_arg;
+		int fep_free_schedule_32_arg;
+		fep_lineop fep_idleline_32_arg;
+		fep_lineop fep_modemsignals_32_arg;
+		fep_reply_request fep_getreply_32_arg;
+		fep_schedule fep_updateschedule_32_arg;
+		int fep_getreport_32_arg;
+		int fep_getreportvalue_32_arg;
+		fep_report fep_sendreport_32_arg;
+		fep_reply fep_reply_xfer_32_arg;
+		int fep_set_debug_32_arg;
+		fep_setschedule fep_setlmdebug_32_arg;
+		int fep_initsystem_32_arg;
+		init_form fep_initrealix_32_arg;
+	} argument;
+	char *result;
+	xdrproc_t _xdr_argument, _xdr_result;
+	char *(*local)(char *, struct svc_req *);
+
+	switch (rqstp->rq_proc) {
+	case NULLPROC:
+		(void) svc_sendreply (transp, (xdrproc_t) xdr_void, (char *)NULL);
+		return;
+
+	case FEP_GETLINEINFOCOUNT:
+		_xdr_argument = (xdrproc_t) xdr_void;
+		_xdr_result = (xdrproc_t) xdr_int;
+		local = (char *(*)(char *, struct svc_req *)) fep_getlineinfocount_32_svc;
+		break;
+
+	case FEP_GETLINEINFO:
+		_xdr_argument = (xdrproc_t) xdr_int;
+		_xdr_result = (xdrproc_t) xdr_lineinfo_ret;
+		local = (char *(*)(char *, struct svc_req *)) fep_getlineinfo_32_svc;
+		break;
+
+	case FEP_GETLINEINFOVALUE:
+		_xdr_argument = (xdrproc_t) xdr_int;
+		_xdr_result = (xdrproc_t) xdr_lineinfo_ret;
+		local = (char *(*)(char *, struct svc_req *)) fep_getlineinfovalue_32_svc;
+		break;
+
+	case FEP_SENDLINEINFO:
+		_xdr_argument = (xdrproc_t) xdr_fep_lineinfo;
+		_xdr_result = (xdrproc_t) xdr_lineinfo_ret;
+		local = (char *(*)(char *, struct svc_req *)) fep_sendlineinfo_32_svc;
+		break;
+
+	case FEP_GETTIME:
+		_xdr_argument = (xdrproc_t) xdr_void;
+		_xdr_result = (xdrproc_t) xdr_std_time_ret;
+		local = (char *(*)(char *, struct svc_req *)) fep_gettime_32_svc;
+		break;
+
+	case FEP_SETTIME:
+		_xdr_argument = (xdrproc_t) xdr_fep_std_time;
+		_xdr_result = (xdrproc_t) xdr_std_time_ret;
+		local = (char *(*)(char *, struct svc_req *)) fep_settime_32_svc;
+		break;
+
+	case FEP_ADVANCETIME:
+		_xdr_argument = (xdrproc_t) xdr_int;
+		_xdr_result = (xdrproc_t) xdr_std_time_ret;
+		local = (char *(*)(char *, struct svc_req *)) fep_advancetime_32_svc;
+		break;
+
+	case FEP_GETSCHEDULECOUNT:
+		_xdr_argument = (xdrproc_t) xdr_void;
+		_xdr_result = (xdrproc_t) xdr_int;
+		local = (char *(*)(char *, struct svc_req *)) fep_getschedulecount_32_svc;
+		break;
+
+	case FEP_GETSCHEDULE:
+		_xdr_argument = (xdrproc_t) xdr_int;
+		_xdr_result = (xdrproc_t) xdr_schedule_ret;
+		local = (char *(*)(char *, struct svc_req *)) fep_getschedule_32_svc;
+		break;
+
+	case FEP_GETSCHEDULEVALUE:
+		_xdr_argument = (xdrproc_t) xdr_int;
+		_xdr_result = (xdrproc_t) xdr_schedule_ret;
+		local = (char *(*)(char *, struct svc_req *)) fep_getschedulevalue_32_svc;
+		break;
+
+	case FEP_SENDSCHEDULE:
+		_xdr_argument = (xdrproc_t) xdr_fep_schedule;
+		_xdr_result = (xdrproc_t) xdr_schedule_ret;
+		local = (char *(*)(char *, struct svc_req *)) fep_sendschedule_32_svc;
+		break;
+
+	case FEP_SETLINEMGR_SCHEDULE:
+		_xdr_argument = (xdrproc_t) xdr_fep_setschedule;
+		_xdr_result = (xdrproc_t) xdr_errorstatus;
+		local = (char *(*)(char *, struct svc_req *)) fep_setlinemgr_schedule_32_svc;
+		break;
+
+	case FEP_FREE_SCHEDULE:
+		_xdr_argument = (xdrproc_t) xdr_int;
+		_xdr_result = (xdrproc_t) xdr_errorstatus;
+		local = (char *(*)(char *, struct svc_req *)) fep_free_schedule_32_svc;
+		break;
+
+	case FEP_IDLELINE:
+		_xdr_argument = (xdrproc_t) xdr_fep_lineop;
+		_xdr_result = (xdrproc_t) xdr_errorstatus;
+		local = (char *(*)(char *, struct svc_req *)) fep_idleline_32_svc;
+		break;
+
+	case FEP_MODEMSIGNALS:
+		_xdr_argument = (xdrproc_t) xdr_fep_lineop;
+		_xdr_result = (xdrproc_t) xdr_errorstatus;
+		local = (char *(*)(char *, struct svc_req *)) fep_modemsignals_32_svc;
+		break;
+
+	case FEP_GETREPLY:
+		_xdr_argument = (xdrproc_t) xdr_fep_reply_request;
+		_xdr_result = (xdrproc_t) xdr_reply_ret;
+		local = (char *(*)(char *, struct svc_req *)) fep_getreply_32_svc;
+		break;
+
+	case FEP_CLEARREPLY:
+		_xdr_argument = (xdrproc_t) xdr_void;
+		_xdr_result = (xdrproc_t) xdr_errorstatus;
+		local = (char *(*)(char *, struct svc_req *)) fep_clearreply_32_svc;
+		break;
+
+	case FEP_UPDATESCHEDULE:
+		_xdr_argument = (xdrproc_t) xdr_fep_schedule;
+		_xdr_result = (xdrproc_t) xdr_schedule_ret;
+		local = (char *(*)(char *, struct svc_req *)) fep_updateschedule_32_svc;
+		break;
+
+	case FEP_GETREPORTCOUNT:
+		_xdr_argument = (xdrproc_t) xdr_void;
+		_xdr_result = (xdrproc_t) xdr_int;
+		local = (char *(*)(char *, struct svc_req *)) fep_getreportcount_32_svc;
+		break;
+
+	case FEP_GETREPORT:
+		_xdr_argument = (xdrproc_t) xdr_int;
+		_xdr_result = (xdrproc_t) xdr_report_ret;
+		local = (char *(*)(char *, struct svc_req *)) fep_getreport_32_svc;
+		break;
+
+	case FEP_GETREPORTVALUE:
+		_xdr_argument = (xdrproc_t) xdr_int;
+		_xdr_result = (xdrproc_t) xdr_report_ret;
+		local = (char *(*)(char *, struct svc_req *)) fep_getreportvalue_32_svc;
+		break;
+
+	case FEP_SENDREPORT:
+		_xdr_argument = (xdrproc_t) xdr_fep_report;
+		_xdr_result = (xdrproc_t) xdr_report_ret;
+		local = (char *(*)(char *, struct svc_req *)) fep_sendreport_32_svc;
+		break;
+
+	case FEP_REPLY_XFER:
+		_xdr_argument = (xdrproc_t) xdr_fep_reply;
+		_xdr_result = (xdrproc_t) xdr_void;
+		local = (char *(*)(char *, struct svc_req *)) fep_reply_xfer_32_svc;
+		break;
+
+	case FEP_SET_DEBUG:
+		_xdr_argument = (xdrproc_t) xdr_int;
+		_xdr_result = (xdrproc_t) xdr_errorstatus;
+		local = (char *(*)(char *, struct svc_req *)) fep_set_debug_32_svc;
+		break;
+
+	case FEP_GET_STACK_LEFT:
+		_xdr_argument = (xdrproc_t) xdr_void;
+		_xdr_result = (xdrproc_t) xdr_int;
+		local = (char *(*)(char *, struct svc_req *)) fep_get_stack_left_32_svc;
+		break;
+
+	case FEP_SETLMDEBUG:
+		_xdr_argument = (xdrproc_t) xdr_fep_setschedule;
+		_xdr_result = (xdrproc_t) xdr_errorstatus;
+		local = (char *(*)(char *, struct svc_req *)) fep_setlmdebug_32_svc;
+		break;
+
+	case FEP_SHUTDOWN:
+		_xdr_argument = (xdrproc_t) xdr_void;
+		_xdr_result = (xdrproc_t) xdr_errorstatus;
+		local = (char *(*)(char *, struct svc_req *)) fep_shutdown_32_svc;
+		break;
+
+	case FEP_INITSYSTEM:
+		_xdr_argument = (xdrproc_t) xdr_int;
+		_xdr_result = (xdrproc_t) xdr_int;
+		local = (char *(*)(char *, struct svc_req *)) fep_initsystem_32_svc;
+		break;
+
+	case FEP_INITREALIX:
+		_xdr_argument = (xdrproc_t) xdr_init_form;
+		_xdr_result = (xdrproc_t) xdr_int;
+		local = (char *(*)(char *, struct svc_req *)) fep_initrealix_32_svc;
+		break;
+
+	default:
+		svcerr_noproc (transp);
+		return;
+	}
+	memset ((char *)&argument, 0, sizeof (argument));
+	if (!svc_getargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
+		svcerr_decode (transp);
+		return;
+	}
+	result = (*local)((char *)&argument, rqstp);
+	if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result, result)) {
+		svcerr_systemerr (transp);
+	}
+	if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
+		fprintf (stderr, "%s", "unable to free arguments");
+		exit (1);
+	}
+	return;
+}
+
+int main (int argc, char **argv)
+{
+	register SVCXPRT *transp;
+
+	pmap_unset (FEP_PROGRAM, FEP_VERSION);
+
+	transp = svcudp_create(RPC_ANYSOCK);
+	if (transp == NULL) {
+		fprintf (stderr, "%s", "cannot create udp service.");
+		exit(1);
+	}
+	if (!svc_register(transp, FEP_PROGRAM, FEP_VERSION, fep_program_32, IPPROTO_UDP)) {
+		fprintf (stderr, "%s", "unable to register (FEP_PROGRAM, FEP_VERSION, udp).");
+		exit(1);
+	}
+
+	transp = svctcp_create(RPC_ANYSOCK, 0, 0);
+	if (transp == NULL) {
+		fprintf (stderr, "%s", "cannot create tcp service.");
+		exit(1);
+	}
+	if (!svc_register(transp, FEP_PROGRAM, FEP_VERSION, fep_program_32, IPPROTO_TCP)) {
+		fprintf (stderr, "%s", "unable to register (FEP_PROGRAM, FEP_VERSION, tcp).");
+		exit(1);
+	}
+
+	svc_run ();
+	fprintf (stderr, "%s", "svc_run returned");
+	exit (1);
+	/* NOTREACHED */
+}
Index: branches/fep_client_cpp/fep_print.cpp
===================================================================
--- branches/fep_client_cpp/fep_print.cpp	(revision 69)
+++ branches/fep_client_cpp/fep_print.cpp	(revision 69)
@@ -0,0 +1,221 @@
+#include "fep.h"
+#include "hexdump.c"
+
+/* The following get_*_text functions are helper functions used to
+   get enum type names as strings */
+const char* get_polltype_text(enum polltype ptype)
+{
+	switch(ptype)
+	{
+		case POLL:
+			return "POLL";
+		case COMMAND:
+			return "COMMAND";
+		case TIMESYNC:
+			return "TIMESYNC";
+		default:
+			return "UNKNOWN";
+	}	
+}
+
+const char* get_status_text(enum errorstatus estat)
+{
+	switch(estat)
+	{ case FEP_OK: 
+			return "FEP_OK";
+		case FEP_OUTOFRANGE: 
+			return "FEP_OUTOFRANGE";
+		case FEP_BADHANDLE: 
+			return "FEP_BADHANDLE";
+		case FEP_NOREPLY: 
+			return "FEP_NOREPLY";
+		case FEP_SCHBUSY: 
+			return "FEP_SCHBUSY";
+		case FEP_LINEBUSY: 
+			return "FEP_LINEBUSY";
+		case FEP_REPORTBUSY: 
+			return "FEP_REPORTBUSY";
+		case FEP_NOREPORT: 
+			return "FEP_NOREPORT";
+		case FEP_NOMEMORY: 
+			return "FEP_NOMEMORY";
+		case FEP_BADTIME: 
+			return "FEP_BADTIME";
+		case FEP_BADTIMESYNCH: 
+			return "FEP_BADTIMESYNCH";
+		case FEP_BADKIND: 
+			return "FEP_BADKIND";
+		case FEP_BADCONNECT: 
+			return "FEP_BADCONNECT";
+		case FEP_NOAUTHORITY: 
+			return "FEP_NOAUTHORITY";
+		default: 
+			return "UNKNOWN";
+	}
+} 
+
+const char* get_answererror_text(enum answererror err)
+{
+	switch(err)
+	{
+		case ERR_BSCF_ERR:
+			return "ERR_BSCF_ERR";
+		case ERR_NONE:
+			return "ERR_NONE";
+		case ERR_MSG_LEN:
+			return "ERR_MSG_LEN";
+		case ERR_MSG_HDR:
+			return "ERR_MSG_HDR";
+		case ERR_MSG_CHKSUM:
+			return "ERR_MSG_CHKSUM";
+		case ERR_MSG_TRAILER:
+			return "ERR_MSG_TRAILER";
+		default:
+			return "UNKNOWN";
+	}
+}
+
+const char * get_pollingfsm_text(enum Polling_FSM_States state)
+{
+	switch(state)
+	{
+		case INITSTATE:
+			return "INITSTATE";
+		case WRALARMSTATE:
+			return "WRALARMSTATE";
+		case CLRSTATE:
+			return "CLRSTATE";
+		case RTSONSTATE:
+			return "RTSONSTATE";
+		case CTSSTATE:
+			return "CTSSTATE";
+		case WRITESTATE:
+			return "WRITESTATE";
+		case RTSOFFSTATE:
+			return "RTSOFFSTATE";
+		case RDALARMSTATE:
+			return "RDALARMSTATE";
+		case RDSTATE:
+			return "RDSTATE";
+		case DONESTATE:
+			return "DONESTATE";
+		default:
+			return "UNKNOWN";
+	}
+}
+
+const char *get_replystatus_text(enum replystatus status)
+{
+	switch(status)
+	{
+		case FAILURE:
+			return "FAILURE";
+		case DONE:
+			return "DONE";
+		case UNUSED:
+			return "UNUSED";
+		default:
+			return "UNKNOWN";
+	}
+}
+
+const char *get_replykind_text(enum replykind kind)
+{
+	switch(kind)
+	{
+		case POLLREPLY:
+			return "POLLREPLY";
+		case SCHEDNEW:
+			return "SCHEDNEW";
+		case SCHEDDONE:
+			return "SCHEDDONE";
+		default:
+			return "UNKNOWN";
+	}
+}
+
+/* The following functions are used to print fep_reply, reply_ret structs and associated structs */
+void print_fep_pollerror(fep_pollerror pollerror)
+{
+	printf("\t\t\t\t\t\tpoll error:\n");
+	printf("\t\t\t\t\t\tanswererror msgerror:\t%s\n", get_answererror_text(pollerror.msgerror));
+	printf("\t\t\t\t\t\tPolling_FSM_States state:\t%s\n", get_pollingfsm_text(pollerror.state));
+	printf("\t\t\t\t\t\t\tint perrno:\t%d\n", pollerror.perrno);
+	printf("\t\t\t\t\t\t\tint termination:\t%d\n", pollerror.termination);
+	printf("\t\t\t\t\t\t\tint count:\t%d\n", pollerror.count);
+}
+
+void print_fep_answer_info(fep_answer_info info)
+{
+	printf("\t\t\t\t\tfep_answer_info:\n");
+	printf("\t\t\t\t\t\tlong poll_time:\t%ld\n", info.poll_time);
+	printf("\t\t\t\t\t\treplystatus status:\t%s\n", get_replystatus_text(info.status));
+	printf("\t\t\t\t\t\tint poll_user_info1:\t%d\n", info.poll_user_info1);
+	printf("\t\t\t\t\t\tint poll_user_info2:\t%d\n", info.poll_user_info2);
+	printf("\t\t\t\t\t\tint retries:\t%d\n", info.retries);
+	printf("\t\t\t\t\t\tint poll_error_count:\t%d\n", info.poll_error_count);
+	for(int i = 0; i < info.poll_error_count; i++)
+	{
+		print_fep_pollerror(*info.pollerror);
+	}
+}
+
+void print_fep_answer_short_msg(fep_answer_short_msg msg)
+{
+	printf("\t\t\t\t\tfep_answer_short:\n");
+	printf("\t\t\t\t\t\tint message_len:\t%d\n", msg.message_len);
+	printf("\t\t\t\t\t\tmessage:\t");
+	for(int i = 0; i < msg.message_len; i++)
+	{
+		printf("%04x ", msg.message[i]);
+	}
+	printf("\n");
+}
+
+void print_fep_shortanswer(fep_shortanswer answer)
+{
+	printf("\t\t\t\tfep_shortanswer:\n");
+	print_fep_answer_info(answer.info);
+	print_fep_answer_short_msg(answer.msg);
+}
+
+void print_fep_shortanswer_list(fep_shortanswer_list answer_list)
+{
+	printf("\t\t\tfep_shortanswer_list:\n");
+	printf("\t\t\t\tcount:\t%d\n", answer_list.count);
+	for(int i = 0; i < answer_list.count; i++)
+	{	
+		print_fep_shortanswer(answer_list.answers[i]);	
+	}
+}
+
+void print_fep_answer_list(fep_answer_list answers)
+{
+	printf("\t\tfep_answer_list:\n");
+	printf("\t\t\tint size:\t%d\n", answers.size);
+	print_fep_shortanswer_list(answers.fep_answer_list_u.shortp);
+}
+
+void print_fep_reply(fep_reply reply)
+{
+	printf("\tfep_reply: \n");
+	printf("\t\tint reply:\t%d\n", reply.reply);
+	printf("\t\tint schedule:\t%d\n", reply.schedule); 
+	printf("\t\tint lineinfo:\t%d\n", reply.lineinfo);
+	printf("\t\tpolltype kind:\t%s\n", get_polltype_text(reply.kind));
+	printf("\t\treplykind flag:\t%s\n", get_replykind_text(reply.flag));
+	printf("\t\tint schedule_sequence:\t%d\n", reply.schedule_sequence);
+	printf("\t\tint global_sequence:\t%d\n", reply.global_sequence);
+	printf("\t\tlong schedule_time:\t%ld\n", reply.schedule_time);
+	printf("\t\tint user_info1:\t%d\n", reply.user_info1);
+	printf("\t\tint user_info2:\t%d\n", reply.user_info2);
+	print_fep_answer_list(reply.answers);
+}
+
+/* Dumps the ATMS's response to RPC Call (struct reply_ret) */
+void print_reply_ret(reply_ret response) {
+	printf("reply_ret:\n");
+	// Print response status
+	printf("\tfep_status: %s\n", get_status_text(response.status));
+	print_fep_reply(response.reply_ret_u.info);
+}
Index: branches/fep_client_cpp/fep_xdr.c
===================================================================
--- branches/fep_client_cpp/fep_xdr.c	(revision 69)
+++ branches/fep_client_cpp/fep_xdr.c	(revision 69)
@@ -0,0 +1,1329 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#include "fep.h"
+/* RPC XDR test */
+/* RPC XDR Modifications */
+#undef MAXSHORTMESSAGELEN
+#undef MAXLONGMESSAGELEN
+#undef MAXSHORTPOLLS
+#undef MAXLONGPOLLS
+#undef MAXPOLLRETRY
+#undef MAXSHORTREPLYLEN
+#undef MAXLONGREPLYLEN
+#define MAXSHORTMESSAGELEN (objp->message_len?((objp->message_len>_MAXSHORTMESSAGELEN) ?_MAXSHORTMESSAGELEN:objp->message_len) :1)
+#define MAXLONGMESSAGELEN (objp->message_len?((objp->message_len>_MAXLONGMESSAGELEN) ?_MAXLONGMESSAGELEN:objp->message_len) :1)
+#define MAXSHORTPOLLS (objp->count? ((objp->count>_MAXSHORTPOLLS) ?_MAXSHORTPOLLS:objp->count) :1)
+#define MAXLONGPOLLS (objp->count? ((objp->count>_MAXLONGPOLLS) ?_MAXLONGPOLLS:objp->count) :1)
+#define MAXPOLLRETRY (objp->poll_error_count? ((objp->poll_error_count>_MAXPOLLRETRY) ?_MAXPOLLRETRY:objp->poll_error_count) :1)
+#define MAXSHORTREPLYLEN (objp->message_len? ((objp->message_len>_MAXSHORTREPLYLEN)?_MAXSHORTREPLYLEN:objp->message_len) :1)
+#define MAXLONGREPLYLEN (objp->message_len? ((objp->message_len>_MAXLONGREPLYLEN) ?_MAXLONGREPLYLEN:objp->message_len) :1)
+
+bool_t
+xdr_errorstatus (XDR *xdrs, errorstatus *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_enum (xdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_Polling_FSM_States (XDR *xdrs, Polling_FSM_States *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_enum (xdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_lineinfo (XDR *xdrs, fep_lineinfo *objp)
+{
+	register int32_t *buf;
+
+	int i;
+
+	if (xdrs->x_op == XDR_ENCODE) {
+		 if (!xdr_int (xdrs, &objp->lineinfo))
+			 return FALSE;
+		 if (!xdr_opaque (xdrs, objp->device, MAXDEVLEN))
+			 return FALSE;
+		buf = XDR_INLINE (xdrs, 7 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->poll))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->command))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->sync))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->line_error_count))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->pid))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->semaphore))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->debug))
+				 return FALSE;
+		} else {
+			IXDR_PUT_LONG(buf, objp->poll);
+			IXDR_PUT_LONG(buf, objp->command);
+			IXDR_PUT_LONG(buf, objp->sync);
+			IXDR_PUT_LONG(buf, objp->line_error_count);
+			IXDR_PUT_LONG(buf, objp->pid);
+			IXDR_PUT_LONG(buf, objp->semaphore);
+			IXDR_PUT_LONG(buf, objp->debug);
+		}
+		return TRUE;
+	} else if (xdrs->x_op == XDR_DECODE) {
+		 if (!xdr_int (xdrs, &objp->lineinfo))
+			 return FALSE;
+		 if (!xdr_opaque (xdrs, objp->device, MAXDEVLEN))
+			 return FALSE;
+		buf = XDR_INLINE (xdrs, 7 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->poll))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->command))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->sync))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->line_error_count))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->pid))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->semaphore))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->debug))
+				 return FALSE;
+		} else {
+			objp->poll = IXDR_GET_LONG(buf);
+			objp->command = IXDR_GET_LONG(buf);
+			objp->sync = IXDR_GET_LONG(buf);
+			objp->line_error_count = IXDR_GET_LONG(buf);
+			objp->pid = IXDR_GET_LONG(buf);
+			objp->semaphore = IXDR_GET_LONG(buf);
+			objp->debug = IXDR_GET_LONG(buf);
+		}
+	 return TRUE;
+	}
+
+	 if (!xdr_int (xdrs, &objp->lineinfo))
+		 return FALSE;
+	 if (!xdr_opaque (xdrs, objp->device, MAXDEVLEN))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->poll))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->command))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->sync))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->line_error_count))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->pid))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->semaphore))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->debug))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_lineinfo_ret (XDR *xdrs, lineinfo_ret *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_errorstatus (xdrs, &objp->status))
+		 return FALSE;
+	switch (objp->status) {
+	case FEP_OK:
+		 if (!xdr_fep_lineinfo (xdrs, &objp->lineinfo_ret_u.info))
+			 return FALSE;
+		break;
+	default:
+		break;
+	}
+	return TRUE;
+}
+
+bool_t
+xdr_fep_std_time (XDR *xdrs, fep_std_time *objp)
+{
+	register int32_t *buf;
+
+
+	if (xdrs->x_op == XDR_ENCODE) {
+		buf = XDR_INLINE (xdrs, 7 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->year))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->month))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->day))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->hour))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->minute))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->second))
+				 return FALSE;
+			 if (!xdr_long (xdrs, &objp->time_t))
+				 return FALSE;
+		} else {
+			IXDR_PUT_LONG(buf, objp->year);
+			IXDR_PUT_LONG(buf, objp->month);
+			IXDR_PUT_LONG(buf, objp->day);
+			IXDR_PUT_LONG(buf, objp->hour);
+			IXDR_PUT_LONG(buf, objp->minute);
+			IXDR_PUT_LONG(buf, objp->second);
+			IXDR_PUT_LONG(buf, objp->time_t);
+		}
+		return TRUE;
+	} else if (xdrs->x_op == XDR_DECODE) {
+		buf = XDR_INLINE (xdrs, 7 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->year))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->month))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->day))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->hour))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->minute))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->second))
+				 return FALSE;
+			 if (!xdr_long (xdrs, &objp->time_t))
+				 return FALSE;
+		} else {
+			objp->year = IXDR_GET_LONG(buf);
+			objp->month = IXDR_GET_LONG(buf);
+			objp->day = IXDR_GET_LONG(buf);
+			objp->hour = IXDR_GET_LONG(buf);
+			objp->minute = IXDR_GET_LONG(buf);
+			objp->second = IXDR_GET_LONG(buf);
+			objp->time_t = IXDR_GET_LONG(buf);
+		}
+	 return TRUE;
+	}
+
+	 if (!xdr_int (xdrs, &objp->year))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->month))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->day))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->hour))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->minute))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->second))
+		 return FALSE;
+	 if (!xdr_long (xdrs, &objp->time_t))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_std_time_ret (XDR *xdrs, std_time_ret *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_errorstatus (xdrs, &objp->status))
+		 return FALSE;
+	switch (objp->status) {
+	case FEP_OK:
+		 if (!xdr_fep_std_time (xdrs, &objp->std_time_ret_u.info))
+			 return FALSE;
+		break;
+	default:
+		break;
+	}
+	return TRUE;
+}
+
+bool_t
+xdr_protocoltype (XDR *xdrs, protocoltype *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_enum (xdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_duplex (XDR *xdrs, duplex *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_enum (xdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_poll_info (XDR *xdrs, fep_poll_info *objp)
+{
+	register int32_t *buf;
+
+
+	if (xdrs->x_op == XDR_ENCODE) {
+		 if (!xdr_int (xdrs, &objp->D7_update))
+			 return FALSE;
+		 if (!xdr_protocoltype (xdrs, &objp->protocol))
+			 return FALSE;
+		buf = XDR_INLINE (xdrs, 14 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->poll_user_info1))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->poll_user_info2))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->format))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->speed))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->mode))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->min_separation))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->delay_rts_on))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->max_send))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->delay_rts_off))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->max_reply))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->min_error))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->max_retry))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->reply_len))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->poll_error_count))
+				 return FALSE;
+		} else {
+			IXDR_PUT_LONG(buf, objp->poll_user_info1);
+			IXDR_PUT_LONG(buf, objp->poll_user_info2);
+			IXDR_PUT_LONG(buf, objp->format);
+			IXDR_PUT_LONG(buf, objp->speed);
+			IXDR_PUT_LONG(buf, objp->mode);
+			IXDR_PUT_LONG(buf, objp->min_separation);
+			IXDR_PUT_LONG(buf, objp->delay_rts_on);
+			IXDR_PUT_LONG(buf, objp->max_send);
+			IXDR_PUT_LONG(buf, objp->delay_rts_off);
+			IXDR_PUT_LONG(buf, objp->max_reply);
+			IXDR_PUT_LONG(buf, objp->min_error);
+			IXDR_PUT_LONG(buf, objp->max_retry);
+			IXDR_PUT_LONG(buf, objp->reply_len);
+			IXDR_PUT_LONG(buf, objp->poll_error_count);
+		}
+		return TRUE;
+	} else if (xdrs->x_op == XDR_DECODE) {
+		 if (!xdr_int (xdrs, &objp->D7_update))
+			 return FALSE;
+		 if (!xdr_protocoltype (xdrs, &objp->protocol))
+			 return FALSE;
+		buf = XDR_INLINE (xdrs, 14 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->poll_user_info1))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->poll_user_info2))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->format))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->speed))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->mode))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->min_separation))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->delay_rts_on))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->max_send))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->delay_rts_off))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->max_reply))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->min_error))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->max_retry))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->reply_len))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->poll_error_count))
+				 return FALSE;
+		} else {
+			objp->poll_user_info1 = IXDR_GET_LONG(buf);
+			objp->poll_user_info2 = IXDR_GET_LONG(buf);
+			objp->format = IXDR_GET_LONG(buf);
+			objp->speed = IXDR_GET_LONG(buf);
+			objp->mode = IXDR_GET_LONG(buf);
+			objp->min_separation = IXDR_GET_LONG(buf);
+			objp->delay_rts_on = IXDR_GET_LONG(buf);
+			objp->max_send = IXDR_GET_LONG(buf);
+			objp->delay_rts_off = IXDR_GET_LONG(buf);
+			objp->max_reply = IXDR_GET_LONG(buf);
+			objp->min_error = IXDR_GET_LONG(buf);
+			objp->max_retry = IXDR_GET_LONG(buf);
+			objp->reply_len = IXDR_GET_LONG(buf);
+			objp->poll_error_count = IXDR_GET_LONG(buf);
+		}
+	 return TRUE;
+	}
+
+	 if (!xdr_int (xdrs, &objp->D7_update))
+		 return FALSE;
+	 if (!xdr_protocoltype (xdrs, &objp->protocol))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->poll_user_info1))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->poll_user_info2))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->format))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->speed))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->mode))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->min_separation))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->delay_rts_on))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->max_send))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->delay_rts_off))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->max_reply))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->min_error))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->max_retry))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->reply_len))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->poll_error_count))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_poll_short_msg (XDR *xdrs, fep_poll_short_msg *objp)
+{
+	register int32_t *buf;
+
+	int i;
+	 if (!xdr_int (xdrs, &objp->message_len))
+		 return FALSE;
+	 if (!xdr_opaque (xdrs, objp->message, MAXSHORTMESSAGELEN))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_shortpoll (XDR *xdrs, fep_shortpoll *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_fep_poll_info (xdrs, &objp->info))
+		 return FALSE;
+	 if (!xdr_fep_poll_short_msg (xdrs, &objp->msg))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_shortpoll_list (XDR *xdrs, fep_shortpoll_list *objp)
+{
+	register int32_t *buf;
+
+	int i;
+	 if (!xdr_int (xdrs, &objp->count))
+		 return FALSE;
+	 if (!xdr_vector (xdrs, (char *)objp->polls, MAXSHORTPOLLS,
+		sizeof (fep_shortpoll), (xdrproc_t) xdr_fep_shortpoll))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_poll_long_msg (XDR *xdrs, fep_poll_long_msg *objp)
+{
+	register int32_t *buf;
+
+	int i;
+	 if (!xdr_int (xdrs, &objp->message_len))
+		 return FALSE;
+	 if (!xdr_opaque (xdrs, objp->message, MAXLONGMESSAGELEN))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_longpoll (XDR *xdrs, fep_longpoll *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_fep_poll_info (xdrs, &objp->info))
+		 return FALSE;
+	 if (!xdr_fep_poll_long_msg (xdrs, &objp->msg))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_longpoll_list (XDR *xdrs, fep_longpoll_list *objp)
+{
+	register int32_t *buf;
+
+	int i;
+	 if (!xdr_int (xdrs, &objp->count))
+		 return FALSE;
+	 if (!xdr_vector (xdrs, (char *)objp->polls, MAXLONGPOLLS,
+		sizeof (fep_longpoll), (xdrproc_t) xdr_fep_longpoll))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_poll_length (XDR *xdrs, poll_length *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_enum (xdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_poll_list (XDR *xdrs, fep_poll_list *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_int (xdrs, &objp->size))
+		 return FALSE;
+	switch (objp->size) {
+	case SHORTPOLL:
+		 if (!xdr_fep_shortpoll_list (xdrs, &objp->fep_poll_list_u.shortp))
+			 return FALSE;
+		break;
+	case LONGPOLL:
+		 if (!xdr_fep_longpoll_list (xdrs, &objp->fep_poll_list_u.longp))
+			 return FALSE;
+		break;
+	default:
+		return FALSE;
+	}
+	return TRUE;
+}
+
+bool_t
+xdr_polltype (XDR *xdrs, polltype *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_enum (xdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_commandtype (XDR *xdrs, commandtype *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_enum (xdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_schedulestatus (XDR *xdrs, schedulestatus *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_enum (xdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_schedule (XDR *xdrs, fep_schedule *objp)
+{
+	register int32_t *buf;
+
+
+	if (xdrs->x_op == XDR_ENCODE) {
+		 if (!xdr_int (xdrs, &objp->schedule))
+			 return FALSE;
+		 if (!xdr_int (xdrs, &objp->lineinfo))
+			 return FALSE;
+		 if (!xdr_polltype (xdrs, &objp->kind))
+			 return FALSE;
+		 if (!xdr_commandtype (xdrs, &objp->priority))
+			 return FALSE;
+		 if (!xdr_protocoltype (xdrs, &objp->protocol))
+			 return FALSE;
+		 if (!xdr_fep_std_time (xdrs, &objp->time))
+			 return FALSE;
+		buf = XDR_INLINE (xdrs, 11 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->interval))
+				 return FALSE;
+			 if (!xdr_long (xdrs, &objp->at_time))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->user_info1))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->user_info2))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->system_key))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->next))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->previous))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->report))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->sequence))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->status))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->retry))
+				 return FALSE;
+
+		} else {
+		IXDR_PUT_LONG(buf, objp->interval);
+		IXDR_PUT_LONG(buf, objp->at_time);
+		IXDR_PUT_LONG(buf, objp->user_info1);
+		IXDR_PUT_LONG(buf, objp->user_info2);
+		IXDR_PUT_LONG(buf, objp->system_key);
+		IXDR_PUT_LONG(buf, objp->next);
+		IXDR_PUT_LONG(buf, objp->previous);
+		IXDR_PUT_LONG(buf, objp->report);
+		IXDR_PUT_LONG(buf, objp->sequence);
+		IXDR_PUT_LONG(buf, objp->status);
+		IXDR_PUT_LONG(buf, objp->retry);
+		}
+		 if (!xdr_fep_poll_list (xdrs, &objp->fep_polls))
+			 return FALSE;
+		return TRUE;
+	} else if (xdrs->x_op == XDR_DECODE) {
+		 if (!xdr_int (xdrs, &objp->schedule))
+			 return FALSE;
+		 if (!xdr_int (xdrs, &objp->lineinfo))
+			 return FALSE;
+		 if (!xdr_polltype (xdrs, &objp->kind))
+			 return FALSE;
+		 if (!xdr_commandtype (xdrs, &objp->priority))
+			 return FALSE;
+		 if (!xdr_protocoltype (xdrs, &objp->protocol))
+			 return FALSE;
+		 if (!xdr_fep_std_time (xdrs, &objp->time))
+			 return FALSE;
+		buf = XDR_INLINE (xdrs, 11 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->interval))
+				 return FALSE;
+			 if (!xdr_long (xdrs, &objp->at_time))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->user_info1))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->user_info2))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->system_key))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->next))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->previous))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->report))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->sequence))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->status))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->retry))
+				 return FALSE;
+
+		} else {
+		objp->interval = IXDR_GET_LONG(buf);
+		objp->at_time = IXDR_GET_LONG(buf);
+		objp->user_info1 = IXDR_GET_LONG(buf);
+		objp->user_info2 = IXDR_GET_LONG(buf);
+		objp->system_key = IXDR_GET_LONG(buf);
+		objp->next = IXDR_GET_LONG(buf);
+		objp->previous = IXDR_GET_LONG(buf);
+		objp->report = IXDR_GET_LONG(buf);
+		objp->sequence = IXDR_GET_LONG(buf);
+		objp->status = IXDR_GET_LONG(buf);
+		objp->retry = IXDR_GET_LONG(buf);
+		}
+		 if (!xdr_fep_poll_list (xdrs, &objp->fep_polls))
+			 return FALSE;
+	 return TRUE;
+	}
+
+	 if (!xdr_int (xdrs, &objp->schedule))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->lineinfo))
+		 return FALSE;
+	 if (!xdr_polltype (xdrs, &objp->kind))
+		 return FALSE;
+	 if (!xdr_commandtype (xdrs, &objp->priority))
+		 return FALSE;
+	 if (!xdr_protocoltype (xdrs, &objp->protocol))
+		 return FALSE;
+	 if (!xdr_fep_std_time (xdrs, &objp->time))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->interval))
+		 return FALSE;
+	 if (!xdr_long (xdrs, &objp->at_time))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->user_info1))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->user_info2))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->system_key))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->next))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->previous))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->report))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->sequence))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->status))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->retry))
+		 return FALSE;
+	 if (!xdr_fep_poll_list (xdrs, &objp->fep_polls))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_answererror (XDR *xdrs, answererror *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_enum (xdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_pollerror (XDR *xdrs, fep_pollerror *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_answererror (xdrs, &objp->msgerror))
+		 return FALSE;
+	 if (!xdr_Polling_FSM_States (xdrs, &objp->state))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->perrno))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->termination))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->count))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_replystatus (XDR *xdrs, replystatus *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_enum (xdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_answer_info (XDR *xdrs, fep_answer_info *objp)
+{
+	register int32_t *buf;
+
+	int i;
+
+	if (xdrs->x_op == XDR_ENCODE) {
+		 if (!xdr_long (xdrs, &objp->poll_time))
+			 return FALSE;
+		 if (!xdr_replystatus (xdrs, &objp->status))
+			 return FALSE;
+		buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->poll_user_info1))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->poll_user_info2))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->retries))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->poll_error_count))
+				 return FALSE;
+
+		} else {
+		IXDR_PUT_LONG(buf, objp->poll_user_info1);
+		IXDR_PUT_LONG(buf, objp->poll_user_info2);
+		IXDR_PUT_LONG(buf, objp->retries);
+		IXDR_PUT_LONG(buf, objp->poll_error_count);
+		}
+		 if (!xdr_vector (xdrs, (char *)objp->pollerror, MAXPOLLRETRY,
+			sizeof (fep_pollerror), (xdrproc_t) xdr_fep_pollerror))
+			 return FALSE;
+		return TRUE;
+	} else if (xdrs->x_op == XDR_DECODE) {
+		 if (!xdr_long (xdrs, &objp->poll_time))
+			 return FALSE;
+		 if (!xdr_replystatus (xdrs, &objp->status))
+			 return FALSE;
+		buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->poll_user_info1))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->poll_user_info2))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->retries))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->poll_error_count))
+				 return FALSE;
+
+		} else {
+		objp->poll_user_info1 = IXDR_GET_LONG(buf);
+		objp->poll_user_info2 = IXDR_GET_LONG(buf);
+		objp->retries = IXDR_GET_LONG(buf);
+		objp->poll_error_count = IXDR_GET_LONG(buf);
+		}
+		 if (!xdr_vector (xdrs, (char *)objp->pollerror, MAXPOLLRETRY,
+			sizeof (fep_pollerror), (xdrproc_t) xdr_fep_pollerror))
+			 return FALSE;
+	 return TRUE;
+	}
+
+	 if (!xdr_long (xdrs, &objp->poll_time))
+		 return FALSE;
+	 if (!xdr_replystatus (xdrs, &objp->status))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->poll_user_info1))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->poll_user_info2))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->retries))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->poll_error_count))
+		 return FALSE;
+	 if (!xdr_vector (xdrs, (char *)objp->pollerror, MAXPOLLRETRY,
+		sizeof (fep_pollerror), (xdrproc_t) xdr_fep_pollerror))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_answer_short_msg (XDR *xdrs, fep_answer_short_msg *objp)
+{
+	register int32_t *buf;
+
+	int i;
+	 if (!xdr_int (xdrs, &objp->message_len))
+		 return FALSE;
+	 if (!xdr_opaque (xdrs, objp->message, MAXSHORTREPLYLEN))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_shortanswer (XDR *xdrs, fep_shortanswer *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_fep_answer_info (xdrs, &objp->info))
+		 return FALSE;
+	 if (!xdr_fep_answer_short_msg (xdrs, &objp->msg))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_shortanswer_list (XDR *xdrs, fep_shortanswer_list *objp)
+{
+	register int32_t *buf;
+
+	int i;
+	 if (!xdr_int (xdrs, &objp->count))
+		 return FALSE;
+	 if (!xdr_vector (xdrs, (char *)objp->answers, MAXSHORTPOLLS,
+		sizeof (fep_shortanswer), (xdrproc_t) xdr_fep_shortanswer))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_answer_long_msg (XDR *xdrs, fep_answer_long_msg *objp)
+{
+	register int32_t *buf;
+
+	int i;
+	 if (!xdr_int (xdrs, &objp->message_len))
+		 return FALSE;
+	 if (!xdr_opaque (xdrs, objp->message, MAXLONGREPLYLEN))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_longanswer (XDR *xdrs, fep_longanswer *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_fep_answer_info (xdrs, &objp->info))
+		 return FALSE;
+	 if (!xdr_fep_answer_long_msg (xdrs, &objp->msg))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_longanswer_list (XDR *xdrs, fep_longanswer_list *objp)
+{
+	register int32_t *buf;
+
+	int i;
+	 if (!xdr_int (xdrs, &objp->count))
+		 return FALSE;
+	 if (!xdr_vector (xdrs, (char *)objp->answers, MAXLONGPOLLS,
+		sizeof (fep_longanswer), (xdrproc_t) xdr_fep_longanswer))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_answer_list (XDR *xdrs, fep_answer_list *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_int (xdrs, &objp->size))
+		 return FALSE;
+	switch (objp->size) {
+	case SHORTPOLL:
+		 if (!xdr_fep_shortanswer_list (xdrs, &objp->fep_answer_list_u.shortp))
+			 return FALSE;
+		break;
+	case LONGPOLL:
+		 if (!xdr_fep_longanswer_list (xdrs, &objp->fep_answer_list_u.longp))
+			 return FALSE;
+		break;
+	default:
+		return FALSE;
+	}
+	return TRUE;
+}
+
+bool_t
+xdr_replykind (XDR *xdrs, replykind *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_enum (xdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_reply (XDR *xdrs, fep_reply *objp)
+{
+	register int32_t *buf;
+
+
+	if (xdrs->x_op == XDR_ENCODE) {
+		buf = XDR_INLINE (xdrs, 3 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->reply))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->schedule))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->lineinfo))
+				 return FALSE;
+
+		} else {
+		IXDR_PUT_LONG(buf, objp->reply);
+		IXDR_PUT_LONG(buf, objp->schedule);
+		IXDR_PUT_LONG(buf, objp->lineinfo);
+		}
+		 if (!xdr_polltype (xdrs, &objp->kind))
+			 return FALSE;
+		 if (!xdr_replykind (xdrs, &objp->flag))
+			 return FALSE;
+		buf = XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->schedule_sequence))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->global_sequence))
+				 return FALSE;
+			 if (!xdr_long (xdrs, &objp->schedule_time))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->user_info1))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->user_info2))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->system_key))
+				 return FALSE;
+
+		} else {
+		IXDR_PUT_LONG(buf, objp->schedule_sequence);
+		IXDR_PUT_LONG(buf, objp->global_sequence);
+		IXDR_PUT_LONG(buf, objp->schedule_time);
+		IXDR_PUT_LONG(buf, objp->user_info1);
+		IXDR_PUT_LONG(buf, objp->user_info2);
+		IXDR_PUT_LONG(buf, objp->system_key);
+		}
+		 if (!xdr_fep_answer_list (xdrs, &objp->answers))
+			 return FALSE;
+		return TRUE;
+	} else if (xdrs->x_op == XDR_DECODE) {
+		buf = XDR_INLINE (xdrs, 3 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->reply))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->schedule))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->lineinfo))
+				 return FALSE;
+
+		} else {
+		objp->reply = IXDR_GET_LONG(buf);
+		objp->schedule = IXDR_GET_LONG(buf);
+		objp->lineinfo = IXDR_GET_LONG(buf);
+		}
+		 if (!xdr_polltype (xdrs, &objp->kind))
+			 return FALSE;
+		 if (!xdr_replykind (xdrs, &objp->flag))
+			 return FALSE;
+		buf = XDR_INLINE (xdrs, 6 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->schedule_sequence))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->global_sequence))
+				 return FALSE;
+			 if (!xdr_long (xdrs, &objp->schedule_time))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->user_info1))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->user_info2))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->system_key))
+				 return FALSE;
+
+		} else {
+		objp->schedule_sequence = IXDR_GET_LONG(buf);
+		objp->global_sequence = IXDR_GET_LONG(buf);
+		objp->schedule_time = IXDR_GET_LONG(buf);
+		objp->user_info1 = IXDR_GET_LONG(buf);
+		objp->user_info2 = IXDR_GET_LONG(buf);
+		objp->system_key = IXDR_GET_LONG(buf);
+		}
+		 if (!xdr_fep_answer_list (xdrs, &objp->answers))
+			 return FALSE;
+	 return TRUE;
+	}
+
+	 if (!xdr_int (xdrs, &objp->reply))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->schedule))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->lineinfo))
+		 return FALSE;
+	 if (!xdr_polltype (xdrs, &objp->kind))
+		 return FALSE;
+	 if (!xdr_replykind (xdrs, &objp->flag))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->schedule_sequence))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->global_sequence))
+		 return FALSE;
+	 if (!xdr_long (xdrs, &objp->schedule_time))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->user_info1))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->user_info2))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->system_key))
+		 return FALSE;
+	 if (!xdr_fep_answer_list (xdrs, &objp->answers))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_schedule_ret (XDR *xdrs, schedule_ret *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_errorstatus (xdrs, &objp->status))
+		 return FALSE;
+	switch (objp->status) {
+	case FEP_OK:
+		 if (!xdr_fep_schedule (xdrs, &objp->schedule_ret_u.info))
+			 return FALSE;
+		break;
+	default:
+		break;
+	}
+	return TRUE;
+}
+
+bool_t
+xdr_fep_reply_request (XDR *xdrs, fep_reply_request *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_int (xdrs, &objp->schedule))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->sequence))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->block))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_reply_ret (XDR *xdrs, reply_ret *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_errorstatus (xdrs, &objp->status))
+		 return FALSE;
+	switch (objp->status) {
+	case FEP_OK:
+		 if (!xdr_fep_reply (xdrs, &objp->reply_ret_u.info))
+			 return FALSE;
+		break;
+	default:
+		break;
+	}
+	return TRUE;
+}
+
+bool_t
+xdr_init_form (XDR *xdrs, init_form *objp)
+{
+	register int32_t *buf;
+
+	int i;
+	 if (!xdr_vector (xdrs, (char *)objp->host, 10,
+		sizeof (char), (xdrproc_t) xdr_char))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->config))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_setschedule (XDR *xdrs, fep_setschedule *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_int (xdrs, &objp->lineinfo))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->schedule))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->debug))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_statusflags (XDR *xdrs, statusflags *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_enum (xdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_lineop (XDR *xdrs, fep_lineop *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_int (xdrs, &objp->lineinfo))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->flags))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->modem_signals))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_ipprotocol (XDR *xdrs, ipprotocol *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_enum (xdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_action (XDR *xdrs, action *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_enum (xdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_portstatus (XDR *xdrs, portstatus *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_enum (xdrs, (enum_t *) objp))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_fep_report (XDR *xdrs, fep_report *objp)
+{
+	register int32_t *buf;
+
+	int i;
+
+	if (xdrs->x_op == XDR_ENCODE) {
+		 if (!xdr_int (xdrs, &objp->report))
+			 return FALSE;
+		 if (!xdr_opaque (xdrs, objp->dest, MAXADDRLEN))
+			 return FALSE;
+		 if (!xdr_opaque (xdrs, objp->logfile, MAXADDRLEN))
+			 return FALSE;
+		 if (!xdr_opaque (xdrs, objp->monitor, MAXADDRLEN))
+			 return FALSE;
+		 if (!xdr_int (xdrs, &objp->port))
+			 return FALSE;
+		 if (!xdr_ipprotocol (xdrs, &objp->protocol))
+			 return FALSE;
+		 if (!xdr_int (xdrs, &objp->update))
+			 return FALSE;
+		 if (!xdr_action (xdrs, &objp->action))
+			 return FALSE;
+		 if (!xdr_int (xdrs, &objp->reconnect))
+			 return FALSE;
+		 if (!xdr_portstatus (xdrs, &objp->status))
+			 return FALSE;
+		buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->perrno))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->debug))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->pid))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->semaphore))
+				 return FALSE;
+		} else {
+			IXDR_PUT_LONG(buf, objp->perrno);
+			IXDR_PUT_LONG(buf, objp->debug);
+			IXDR_PUT_LONG(buf, objp->pid);
+			IXDR_PUT_LONG(buf, objp->semaphore);
+		}
+		return TRUE;
+	} else if (xdrs->x_op == XDR_DECODE) {
+		 if (!xdr_int (xdrs, &objp->report))
+			 return FALSE;
+		 if (!xdr_opaque (xdrs, objp->dest, MAXADDRLEN))
+			 return FALSE;
+		 if (!xdr_opaque (xdrs, objp->logfile, MAXADDRLEN))
+			 return FALSE;
+		 if (!xdr_opaque (xdrs, objp->monitor, MAXADDRLEN))
+			 return FALSE;
+		 if (!xdr_int (xdrs, &objp->port))
+			 return FALSE;
+		 if (!xdr_ipprotocol (xdrs, &objp->protocol))
+			 return FALSE;
+		 if (!xdr_int (xdrs, &objp->update))
+			 return FALSE;
+		 if (!xdr_action (xdrs, &objp->action))
+			 return FALSE;
+		 if (!xdr_int (xdrs, &objp->reconnect))
+			 return FALSE;
+		 if (!xdr_portstatus (xdrs, &objp->status))
+			 return FALSE;
+		buf = XDR_INLINE (xdrs, 4 * BYTES_PER_XDR_UNIT);
+		if (buf == NULL) {
+			 if (!xdr_int (xdrs, &objp->perrno))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->debug))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->pid))
+				 return FALSE;
+			 if (!xdr_int (xdrs, &objp->semaphore))
+				 return FALSE;
+		} else {
+			objp->perrno = IXDR_GET_LONG(buf);
+			objp->debug = IXDR_GET_LONG(buf);
+			objp->pid = IXDR_GET_LONG(buf);
+			objp->semaphore = IXDR_GET_LONG(buf);
+		}
+	 return TRUE;
+	}
+
+	 if (!xdr_int (xdrs, &objp->report))
+		 return FALSE;
+	 if (!xdr_opaque (xdrs, objp->dest, MAXADDRLEN))
+		 return FALSE;
+	 if (!xdr_opaque (xdrs, objp->logfile, MAXADDRLEN))
+		 return FALSE;
+	 if (!xdr_opaque (xdrs, objp->monitor, MAXADDRLEN))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->port))
+		 return FALSE;
+	 if (!xdr_ipprotocol (xdrs, &objp->protocol))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->update))
+		 return FALSE;
+	 if (!xdr_action (xdrs, &objp->action))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->reconnect))
+		 return FALSE;
+	 if (!xdr_portstatus (xdrs, &objp->status))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->perrno))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->debug))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->pid))
+		 return FALSE;
+	 if (!xdr_int (xdrs, &objp->semaphore))
+		 return FALSE;
+	return TRUE;
+}
+
+bool_t
+xdr_report_ret (XDR *xdrs, report_ret *objp)
+{
+	register int32_t *buf;
+
+	 if (!xdr_errorstatus (xdrs, &objp->status))
+		 return FALSE;
+	switch (objp->status) {
+	case FEP_OK:
+		 if (!xdr_fep_report (xdrs, &objp->report_ret_u.info))
+			 return FALSE;
+		break;
+	default:
+		break;
+	}
+	return TRUE;
+}
Index: branches/fep_client_cpp/fep_clnt.c
===================================================================
--- branches/fep_client_cpp/fep_clnt.c	(revision 69)
+++ branches/fep_client_cpp/fep_clnt.c	(revision 69)
@@ -0,0 +1,446 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#include <memory.h> /* for memset */
+#include "fep.h"
+/* RPC CLNT test */
+
+/* Default timeout can be changed using clnt_control() */
+static struct timeval TIMEOUT = { 25, 0 };
+
+int *
+fep_getlineinfocount_32(void *argp, CLIENT *clnt)
+{
+	static int clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_GETLINEINFOCOUNT,
+		(xdrproc_t) xdr_void, (caddr_t) argp,
+		(xdrproc_t) xdr_int, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+lineinfo_ret *
+fep_getlineinfo_32(int *argp, CLIENT *clnt)
+{
+	static lineinfo_ret clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_GETLINEINFO,
+		(xdrproc_t) xdr_int, (caddr_t) argp,
+		(xdrproc_t) xdr_lineinfo_ret, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+lineinfo_ret *
+fep_getlineinfovalue_32(int *argp, CLIENT *clnt)
+{
+	static lineinfo_ret clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_GETLINEINFOVALUE,
+		(xdrproc_t) xdr_int, (caddr_t) argp,
+		(xdrproc_t) xdr_lineinfo_ret, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+lineinfo_ret *
+fep_sendlineinfo_32(fep_lineinfo *argp, CLIENT *clnt)
+{
+	static lineinfo_ret clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_SENDLINEINFO,
+		(xdrproc_t) xdr_fep_lineinfo, (caddr_t) argp,
+		(xdrproc_t) xdr_lineinfo_ret, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+std_time_ret *
+fep_gettime_32(void *argp, CLIENT *clnt)
+{
+	static std_time_ret clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_GETTIME,
+		(xdrproc_t) xdr_void, (caddr_t) argp,
+		(xdrproc_t) xdr_std_time_ret, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+std_time_ret *
+fep_settime_32(fep_std_time *argp, CLIENT *clnt)
+{
+	static std_time_ret clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_SETTIME,
+		(xdrproc_t) xdr_fep_std_time, (caddr_t) argp,
+		(xdrproc_t) xdr_std_time_ret, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+std_time_ret *
+fep_advancetime_32(int *argp, CLIENT *clnt)
+{
+	static std_time_ret clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_ADVANCETIME,
+		(xdrproc_t) xdr_int, (caddr_t) argp,
+		(xdrproc_t) xdr_std_time_ret, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+int *
+fep_getschedulecount_32(void *argp, CLIENT *clnt)
+{
+	static int clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_GETSCHEDULECOUNT,
+		(xdrproc_t) xdr_void, (caddr_t) argp,
+		(xdrproc_t) xdr_int, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+schedule_ret *
+fep_getschedule_32(int *argp, CLIENT *clnt)
+{
+	static schedule_ret clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_GETSCHEDULE,
+		(xdrproc_t) xdr_int, (caddr_t) argp,
+		(xdrproc_t) xdr_schedule_ret, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+schedule_ret *
+fep_getschedulevalue_32(int *argp, CLIENT *clnt)
+{
+	static schedule_ret clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_GETSCHEDULEVALUE,
+		(xdrproc_t) xdr_int, (caddr_t) argp,
+		(xdrproc_t) xdr_schedule_ret, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+schedule_ret *
+fep_sendschedule_32(fep_schedule *argp, CLIENT *clnt)
+{
+	static schedule_ret clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_SENDSCHEDULE,
+		(xdrproc_t) xdr_fep_schedule, (caddr_t) argp,
+		(xdrproc_t) xdr_schedule_ret, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+errorstatus *
+fep_setlinemgr_schedule_32(fep_setschedule *argp, CLIENT *clnt)
+{
+	static errorstatus clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_SETLINEMGR_SCHEDULE,
+		(xdrproc_t) xdr_fep_setschedule, (caddr_t) argp,
+		(xdrproc_t) xdr_errorstatus, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+errorstatus *
+fep_free_schedule_32(int *argp, CLIENT *clnt)
+{
+	static errorstatus clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_FREE_SCHEDULE,
+		(xdrproc_t) xdr_int, (caddr_t) argp,
+		(xdrproc_t) xdr_errorstatus, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+errorstatus *
+fep_idleline_32(fep_lineop *argp, CLIENT *clnt)
+{
+	static errorstatus clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_IDLELINE,
+		(xdrproc_t) xdr_fep_lineop, (caddr_t) argp,
+		(xdrproc_t) xdr_errorstatus, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+errorstatus *
+fep_modemsignals_32(fep_lineop *argp, CLIENT *clnt)
+{
+	static errorstatus clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_MODEMSIGNALS,
+		(xdrproc_t) xdr_fep_lineop, (caddr_t) argp,
+		(xdrproc_t) xdr_errorstatus, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+reply_ret *
+fep_getreply_32(fep_reply_request *argp, CLIENT *clnt)
+{
+	static reply_ret clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_GETREPLY,
+		(xdrproc_t) xdr_fep_reply_request, (caddr_t) argp,
+		(xdrproc_t) xdr_reply_ret, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+errorstatus *
+fep_clearreply_32(void *argp, CLIENT *clnt)
+{
+	static errorstatus clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_CLEARREPLY,
+		(xdrproc_t) xdr_void, (caddr_t) argp,
+		(xdrproc_t) xdr_errorstatus, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+schedule_ret *
+fep_updateschedule_32(fep_schedule *argp, CLIENT *clnt)
+{
+	static schedule_ret clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_UPDATESCHEDULE,
+		(xdrproc_t) xdr_fep_schedule, (caddr_t) argp,
+		(xdrproc_t) xdr_schedule_ret, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+int *
+fep_getreportcount_32(void *argp, CLIENT *clnt)
+{
+	static int clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_GETREPORTCOUNT,
+		(xdrproc_t) xdr_void, (caddr_t) argp,
+		(xdrproc_t) xdr_int, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+report_ret *
+fep_getreport_32(int *argp, CLIENT *clnt)
+{
+	static report_ret clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_GETREPORT,
+		(xdrproc_t) xdr_int, (caddr_t) argp,
+		(xdrproc_t) xdr_report_ret, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+report_ret *
+fep_getreportvalue_32(int *argp, CLIENT *clnt)
+{
+	static report_ret clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_GETREPORTVALUE,
+		(xdrproc_t) xdr_int, (caddr_t) argp,
+		(xdrproc_t) xdr_report_ret, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+report_ret *
+fep_sendreport_32(fep_report *argp, CLIENT *clnt)
+{
+	static report_ret clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_SENDREPORT,
+		(xdrproc_t) xdr_fep_report, (caddr_t) argp,
+		(xdrproc_t) xdr_report_ret, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+void *
+fep_reply_xfer_32(fep_reply *argp, CLIENT *clnt)
+{
+	static char clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_REPLY_XFER,
+		(xdrproc_t) xdr_fep_reply, (caddr_t) argp,
+		(xdrproc_t) xdr_void, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return ((void *)&clnt_res);
+}
+
+errorstatus *
+fep_set_debug_32(int *argp, CLIENT *clnt)
+{
+	static errorstatus clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_SET_DEBUG,
+		(xdrproc_t) xdr_int, (caddr_t) argp,
+		(xdrproc_t) xdr_errorstatus, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+int *
+fep_get_stack_left_32(void *argp, CLIENT *clnt)
+{
+	static int clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_GET_STACK_LEFT,
+		(xdrproc_t) xdr_void, (caddr_t) argp,
+		(xdrproc_t) xdr_int, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+errorstatus *
+fep_setlmdebug_32(fep_setschedule *argp, CLIENT *clnt)
+{
+	static errorstatus clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_SETLMDEBUG,
+		(xdrproc_t) xdr_fep_setschedule, (caddr_t) argp,
+		(xdrproc_t) xdr_errorstatus, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+errorstatus *
+fep_shutdown_32(void *argp, CLIENT *clnt)
+{
+	static errorstatus clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_SHUTDOWN,
+		(xdrproc_t) xdr_void, (caddr_t) argp,
+		(xdrproc_t) xdr_errorstatus, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+int *
+fep_initsystem_32(int *argp, CLIENT *clnt)
+{
+	static int clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_INITSYSTEM,
+		(xdrproc_t) xdr_int, (caddr_t) argp,
+		(xdrproc_t) xdr_int, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
+
+int *
+fep_initrealix_32(init_form *argp, CLIENT *clnt)
+{
+	static int clnt_res;
+
+	memset((char *)&clnt_res, 0, sizeof(clnt_res));
+	if (clnt_call (clnt, FEP_INITREALIX,
+		(xdrproc_t) xdr_init_form, (caddr_t) argp,
+		(xdrproc_t) xdr_int, (caddr_t) &clnt_res,
+		TIMEOUT) != RPC_SUCCESS) {
+		return (NULL);
+	}
+	return (&clnt_res);
+}
