File: ncbi_comm.h

package info (click to toggle)
ncbi-tools6 6.1.20120620-8
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 241,628 kB
  • ctags: 101,236
  • sloc: ansic: 1,431,713; cpp: 6,248; pascal: 3,949; xml: 3,390; sh: 3,090; perl: 1,077; csh: 488; makefile: 449; ruby: 93; lisp: 81
file content (104 lines) | stat: -rw-r--r-- 4,429 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#ifndef CONNECT___NCBI_COMM__H
#define CONNECT___NCBI_COMM__H

/* $Id: ncbi_comm.h,v 6.19 2012/06/19 19:45:59 kazimird Exp $
 * ===========================================================================
 *
 *                            PUBLIC DOMAIN NOTICE
 *               National Center for Biotechnology Information
 *
 *  This software/database is a "United States Government Work" under the
 *  terms of the United States Copyright Act.  It was written as part of
 *  the author's official duties as a United States Government employee and
 *  thus cannot be copyrighted.  This software/database is freely available
 *  to the public for use. The National Library of Medicine and the U.S.
 *  Government have not placed any restriction on its use or reproduction.
 *
 *  Although all reasonable efforts have been taken to ensure the accuracy
 *  and reliability of the software and data, the NLM and the U.S.
 *  Government do not and cannot warrant the performance or results that
 *  may be obtained by using this software or data. The NLM and the U.S.
 *  Government disclaim all warranties, express or implied, including
 *  warranties of performance, merchantability or fitness for any particular
 *  purpose.
 *
 *  Please cite the author in any work or product based on this material.
 *
 * ===========================================================================
 *
 * Author:  Anton Lavrentiev
 *
 * File Description:
 *   Common part of internal communication protocol used by both sides
 *   (client and server) of firewall daemon and service dispatcher.
 *
 */

#define NCBID_WEBPATH          "/Service/ncbid.cgi"
#define HTTP_CONNECTION_INFO   "Connection-Info:"
#define HTTP_NCBI_SID          "NCBI-SID:"
#define HTTP_DISP_FAILURES     "Dispatcher-Failures:"
#define HTTP_DISP_MESSAGES     "Dispatcher-Messages:"
#define HTTP_NCBI_MESSAGE      "NCBI-Message:"
#define LBSM_DEFAULT_TIME      30     /* Default expiration time, in seconds */
#define LBSM_DEFAULT_RATE      1000.0 /* For SLBSM_Service::info::rate       */
#define DISPATCHER_CFGPATH     "/etc/lbsmd/"
#define DISPATCHER_CFGFILE     "servrc.cfg"
#define DISP_PROTOCOL_VERSION  "1.1"
#define DISPD_MESSAGE_FILE     ".dispd.msg"
#define CONN_FWD_PORT_MIN      5860
#define CONN_FWD_PORT_MAX      5870

#ifdef __cplusplus
extern "C" {
#endif


typedef unsigned int           ticket_t;


/* This structure is assumed packed */
typedef struct {
    unsigned int   host;   /* must be in network byte order                  */
    unsigned short port;   /* see note about byte flag byte order below      */
    unsigned short flag;   /* FWDaemon control information, see below        */
    ticket_t       ticket; /* connection ticket (raw binary data, n.b.o.)    */
    unsigned int   client; /* expected host to call back (nbo, logging only) */
    char           text[1];/* name requested (for statistics purposes only)  */
} SFWDRequestReply;


/* Maximal accepted request/reply size */
#define FWD_MAX_RR_SIZE 128


/*
 * Currently, bit 0 (if set) of FWDaemon control information (flag) is used to
 * indicate that the client is a true firewall client.  If the bit is clear,
 * it means that the client is a relay client (and should use a secondary
 * -not an official firewall- port of the daemon, if available).
 * Non-zero bit 0 in response indicates that the true firewall mode (via DMZ)
 * is available (acknowledged when requested) and is being used by FWDaemon.
 *
 * Byte order for port and flag fields:
 * When FWDaemon is contacted via INET socket, these two fields must be
 * in network byte order.
 * When FWDaemon is contacted via UNIX socket, these two fields are assumed
 * to be in host byte order, unless 0xF000 is ORed with input "flag" value
 * and both fields are then converted (or not) into network byte order:  in
 * this case the byte order can be auto-detected, and the values returned
 * in both fields in the response are going to use that very same byte order.
 * NOTE:  0xF000 can also be used with INET socket, but conversion to and
 *        from network byte order is still mandatory.
 * NOTE:  0xF000 is ORed in reply flag field only if it has been present
 *        in the request.
 * NOTE:  This is a transitional interface;  future revisions will
 *        require both flag and port to always be in network byte order.
 */


#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* CONNECT___NCBI_COMM__H */