0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035 #include <stdio.h>
0036 #include <stdlib.h>
0037 #include <ndebug.h>
0038 #include <atmi.h>
0039 #include <ndrstandard.h>
0040 #include <ubf.h>
0041 #include <test.fd.h>
0042 #include <string.h>
0043 #include <unistd.h>
0044 #include "test41.h"
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057 void TESTSV (TPSVCINFO *p_svc)
0058 {
0059 int ret=EXSUCCEED;
0060 char *bufferreq=NULL;
0061 int i;
0062 BFLDLEN retlen;
0063 UBFH *p_ub = (UBFH *)p_svc->data;
0064
0065 NDRX_LOG(log_debug, "%s got call", __func__);
0066
0067 bufferreq = NDRX_MALLOC(TEST_MSGSIZE);
0068
0069 if (NULL==bufferreq)
0070 {
0071 NDRX_LOG(log_error, "Failed to malloc: %s", strerror(errno));
0072 EXFAIL_OUT(ret);
0073 }
0074
0075
0076
0077 retlen = TEST_MSGSIZE;
0078 if (EXFAIL==Bget(p_ub, T_CARRAY_FLD, 0, bufferreq, &retlen))
0079 {
0080 NDRX_LOG(log_debug, "Failed to get T_CARRAY_FLD[0]: %s", Bstrerror(Berror));
0081 ret=EXFAIL;
0082 goto out;
0083 }
0084
0085 if (retlen != TEST_MSGSIZE)
0086 {
0087 NDRX_LOG(log_error, "Invalid message size received, expected: %d, got: %d",
0088 (int)retlen, (int)TEST_MSGSIZE);
0089 ret=EXFAIL;
0090 goto out;
0091 }
0092
0093 for (i=0; i<TEST_MSGSIZE; i++)
0094 {
0095 char c = (char) ((i+2) & 0xff);
0096 if (bufferreq[i] != c)
0097 {
0098 NDRX_LOG(log_error, "TESTERROR and index %d: expected %x but got %x",
0099 i, (int)bufferreq[i], (int)c);
0100 ret=EXFAIL;
0101 goto out;
0102 }
0103 }
0104
0105 for (i=0; i<TEST_MSGSIZE; i++)
0106 {
0107 bufferreq[i] = (char) ((i+3) & 0xff);
0108 }
0109
0110 if (EXFAIL==Bchg(p_ub, T_CARRAY_FLD, 0, bufferreq, TEST_MSGSIZE))
0111 {
0112 NDRX_LOG(log_debug, "Failed to set T_CARRAY_FLD[0]: %s", Bstrerror(Berror));
0113 ret=EXFAIL;
0114 goto out;
0115 }
0116
0117 out:
0118
0119 if (NULL!=bufferreq)
0120 {
0121 NDRX_FREE(bufferreq);
0122 }
0123
0124 tpreturn( ret==EXSUCCEED?TPSUCCESS:TPFAIL,
0125 0L,
0126 (char *)p_ub,
0127 0L,
0128 0L);
0129 }
0130
0131
0132
0133
0134 int NDRX_INTEGRA(tpsvrinit)(int argc, char **argv)
0135 {
0136 NDRX_LOG(log_debug, "tpsvrinit called");
0137
0138 if (EXSUCCEED!=tpadvertise("TESTSV", TESTSV))
0139 {
0140 NDRX_LOG(log_error, "Failed to initialize TESTSV!");
0141 }
0142
0143 return EXSUCCEED;
0144 }
0145
0146
0147
0148
0149 void NDRX_INTEGRA(tpsvrdone)(void)
0150 {
0151 NDRX_LOG(log_debug, "tpsvrdone called");
0152 }
0153
0154