1 // vim: noet sw=4 ts=4:
3 ==================================================================================
4 Copyright (c) 2020 Nokia
5 Copyright (c) 2020 AT&T Intellectual Property.
7 Licensed under the Apache License, Version 2.0 (the "License");
8 you may not use this file except in compliance with the License.
9 You may obtain a copy of the License at
11 http://www.apache.org/licenses/LICENSE-2.0
13 Unless required by applicable law or agreed to in writing, software
14 distributed under the License is distributed on an "AS IS" BASIS,
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 See the License for the specific language governing permissions and
17 limitations under the License.
18 ==================================================================================
22 ******************************************************************************
24 * Mnemonic: socket_if.h
25 * Abstract: Main set of definitions needed by the SI native functions and
27 * Date: 26 March 1995 (original)
28 * 3 January 2020 (revised)
29 * Author: E. Scott Daniels
31 *****************************************************************************
37 #ifndef PARANOID_CHECKS
38 # define PARANOID_CHECKS 0
41 #define TCP_DEVICE 0 // device type of socket
44 // these are for SIclose, must be negative so as to be distinguished from real fd values
45 #define TCP_LISTEN_PORT (-1) // close first listen port found
46 #define UDP_PORT (-2) // close first udp port found
48 #define SI_BAD_HANDLE ((void *) 0)
50 #define SI_OPT_NONE 0 // initialisation options
51 #define SI_OPT_FORK 0x01 // fork new sessions
52 #define SI_OPT_FG 0x02 // keep process in the "foreground"
53 #define SI_OPT_TTY 0x04 // processes keyboard interrupts if fg
54 #define SI_OPT_ALRM 0x08 // cause setsig to be called with alarm flg
56 // offsets of callbacks in table
57 // used to indentify cb in SIcbreg
58 #define SI_CB_SIGNAL 0 // usr signal/alarm received
59 #define SI_CB_RDATA 1 // handles data arrival on raw interface
60 #define SI_CB_CDATA 2 // handles data arrival on cooked interface
61 #define SI_CB_KDATA 3 // handles data arrival from keyboard
62 #define SI_CB_SECURITY 4 // authorizes acceptance of a conect req
63 #define SI_CB_CONN 5 // called when a session is accepted
64 #define SI_CB_DISC 6 // called when a session is lost
67 // return values callbacks are expected to produce
68 #define SI_RET_OK 0 // processing ok -- continue
69 #define SI_RET_ERROR (-1) // processing not ok -- reject/disallow
70 #define SI_RET_UNREG 1 // unregester (never call again) the cb
71 #define SI_RET_QUIT 2 // set the shutdown flag and terminate the SI environment
73 // values returned to user by SI routines
74 #define SI_ERROR (-1) // unable to process
75 #define SI_OK 0 // processing completed successfully
76 #define SI_QUEUED 1 // send messages was queued
78 // flags passed to signal callback
79 #define SI_SF_QUIT 0x01 // program should terminate
80 #define SI_SF_USR1 0x02 // user 1 signal received
81 #define SI_SF_USR2 0x04 // user 2 signal received
82 #define SI_SF_ALRM 0x08 // alarm clock signal received
84 // signal bitmasks for the setsig routine
85 #define SI_SIG_QUIT 0x01 // please catch quit signal
86 #define SI_SIG_HUP 0x02 // catch hangup signal
87 #define SI_SIG_TERM 0x04 // catch the term signal
88 #define SI_SIG_USR1 0x08 // catch user signals
89 #define SI_SIG_USR2 0x10
90 #define SI_SIG_ALRM 0x20 // catch alarm signals
91 #define SI_DEF_SIGS 0x1F // default signals to catch
93 // SIerrno values set in public rtns
94 #define SI_ERR_NONE 0 // no error as far as we can tell
95 #define SI_ERR_QUEUED 1 // must be same as queued
96 #define SI_ERR_TPORT 2 // could not bind to requested tcp port
97 #define SI_ERR_UPORT 3 // could not bind to requested udp port
98 #define SI_ERR_FORK 4 // could not fork to become daemon
99 #define SI_ERR_HANDLE 5 // global information pointer went off
100 #define SI_ERR_SESSID 6 // invalid session id
101 #define SI_ERR_TP 7 // error occured in transport provider
102 #define SI_ERR_SHUTD 8 // cannot process because in shutdown mode
103 #define SI_ERR_NOFDS 9 // no file descriptors are open
104 #define SI_ERR_SIGUSR1 10 // signal received data not read
105 #define SI_ERR_SIGUSR2 11 // signal received data not read
106 #define SI_ERR_DISC 12 // session disconnected
107 #define SI_ERR_TIMEOUT 13 // poll attempt timed out - no data
108 #define SI_ERR_ORDREL 14 // orderly release received
109 #define SI_ERR_SIGALRM 15 // alarm signal received
110 #define SI_ERR_NOMEM 16 // could not allocate needed memory
111 #define SI_ERR_ADDR 17 // address conversion failed
112 #define SI_ERR_BLOCKED 18 // operation would block
114 #define SI_TF_NONE 0 // tcp flags in the global info applied to each session
115 #define SI_TF_NODELAY 0x01 // set nagle's off for each connection
116 #define SI_TF_FASTACK 0x02 // set fast ack on for each connection
119 extern int SIerrno; // error number set by public routines
123 typedef struct ginfo_blk si_ctx_t; // generic context reference for users