Annotation of libaitrpc/src/aitrpc.c, revision 1.5.6.2
1.1 misho 1: /*************************************************************************
2: * (C) 2010 AITNET ltd - Sofia/Bulgaria - <misho@aitbg.com>
3: * by Michael Pounov <misho@openbsd-bg.org>
4: *
5: * $Author: misho $
1.5.6.2 ! misho 6: * $Id: aitrpc.c,v 1.5.6.1 2012/05/15 08:33:09 misho Exp $
1.1 misho 7: *
1.2 misho 8: **************************************************************************
9: The ELWIX and AITNET software is distributed under the following
10: terms:
11:
12: All of the documentation and software included in the ELWIX and AITNET
13: Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
14:
1.5 misho 15: Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
1.2 misho 16: by Michael Pounov <misho@elwix.org>. All rights reserved.
17:
18: Redistribution and use in source and binary forms, with or without
19: modification, are permitted provided that the following conditions
20: are met:
21: 1. Redistributions of source code must retain the above copyright
22: notice, this list of conditions and the following disclaimer.
23: 2. Redistributions in binary form must reproduce the above copyright
24: notice, this list of conditions and the following disclaimer in the
25: documentation and/or other materials provided with the distribution.
26: 3. All advertising materials mentioning features or use of this software
27: must display the following acknowledgement:
28: This product includes software developed by Michael Pounov <misho@elwix.org>
29: ELWIX - Embedded LightWeight unIX and its contributors.
30: 4. Neither the name of AITNET nor the names of its contributors
31: may be used to endorse or promote products derived from this software
32: without specific prior written permission.
33:
34: THIS SOFTWARE IS PROVIDED BY AITNET AND CONTRIBUTORS ``AS IS'' AND
35: ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
36: IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
37: ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
38: FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
39: DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
40: OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
41: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
42: LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
43: OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
44: SUCH DAMAGE.
45: */
1.1 misho 46: #include "global.h"
47:
48:
49: #pragma GCC visibility push(hidden)
50:
51: int rpc_Errno;
52: char rpc_Error[STRSIZ];
53:
54: #pragma GCC visibility pop
55:
56: // rpc_GetErrno() Get error code of last operation
57: inline int
58: rpc_GetErrno()
59: {
60: return rpc_Errno;
61: }
62:
63: // rpc_GetError() Get error text of last operation
64: inline const char *
65: rpc_GetError()
66: {
67: return rpc_Error;
68: }
69:
70: // rpc_SetErr() Set error to variables for internal use!!!
71: inline void
72: rpc_SetErr(int eno, char *estr, ...)
73: {
74: va_list lst;
75:
76: rpc_Errno = eno;
77: memset(rpc_Error, 0, STRSIZ);
78: va_start(lst, estr);
79: vsnprintf(rpc_Error, STRSIZ, estr, lst);
80: va_end(lst);
81: }
82:
83:
1.4 misho 84: /*
1.5.6.1 misho 85: * rpc_chkPktSession() - Check RPC session
1.5 misho 86: *
1.4 misho 87: * @p = packet session
88: * @s = active session
1.5.6.1 misho 89: * return: -1, 1, 2, 3 are errors or 0 ok
1.4 misho 90: */
91: inline int
92: rpc_chkPktSession(rpc_sess_t *p, rpc_sess_t *s)
93: {
94: if (!p || !s)
95: return -1;
96:
97: if (p->sess_version != s->sess_version)
98: return 1;
99: if (ntohl(p->sess_program) != s->sess_program)
100: return 2;
101: if (ntohl(p->sess_process) != s->sess_process)
102: return 3;
103:
104: return 0;
105: }
106:
107: /*
1.5.6.1 misho 108: * rpc_addPktSession() - Prepare session into network format
1.5 misho 109: *
1.4 misho 110: * @p = packet session
1.5.6.1 misho 111: * @s = host session
1.4 misho 112: * return: -1 error or 0 ok
113: */
114: inline int
115: rpc_addPktSession(rpc_sess_t *p, rpc_sess_t *s)
116: {
117: if (!p || !s)
118: return -1;
119:
120: p->sess_version = s->sess_version;
1.5 misho 121: p->sess_timeout = s->sess_timeout;
1.4 misho 122: p->sess_program = htonl(s->sess_program);
1.5.6.1 misho 123: p->sess_process = htons(s->sess_process);
1.4 misho 124:
125: return 0;
126: }
1.5.6.2 ! misho 127:
! 128: /*
! 129: * rpc_register_srvServices() - Register internal service functions
! 130: *
! 131: * @srv = RPC server instance
! 132: * return: -1 error or 0 ok
! 133: */
! 134: int
! 135: rpc_register_srvServices(rpc_srv_t * __restrict srv)
! 136: {
! 137: if (!srv)
! 138: return -1;
! 139:
! 140: rpc_srv_registerCall(srv, NULL, CALL_SRVSHUTDOWN, 0);
! 141: rpc_srv_registerCall(srv, NULL, CALL_SRVCLIENTS, 1);
! 142: rpc_srv_registerCall(srv, NULL, CALL_SRVSESSIONS, 4);
! 143: rpc_srv_registerCall(srv, NULL, CALL_SRVCALLS, 1);
! 144:
! 145: return 0;
! 146: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>