|
Hauptseite - Welches System? - Hardware - Software - Emulatoren - |
Internet MausNet Programmieren Verweise Über |
Die folgenden Beispiele stellen Definitionen für STinG-Module zur Verfügung.
Sprache | C |
---|---|
Beispiel | layer.h |
Beispiel | port.h |
/* * layer.h (c) Peter Rottengatter 1996 * perot@pallas.amp.uni-hannover.de * * Include this file to provide high level protocol interfacing to STinG */ #ifndef STING_LAYER_H #define STING_LAYER_H #ifndef MODULE_DRIVER #define MODULE_DRIVER "MODULE_LAYER" #endif /*--------------------------------------------------------------------------*/ #define MAX_HANDLE 64 /* Number of handles assigned by PRTCL_request */ /*--------------------------------------------------------------------------*/ /* * High level protocol module descriptor. */ typedef struct lay_desc { char *name; /* Name of layer */ char *version; /* Version of layer in xx.yy format */ uint32 flags; /* Private data */ uint16 date; /* Compile date in GEMDOS format */ char *author; /* Name of programmer */ int16 stat_dropped; /* Statistics of dropped data units */ struct lay_desc *next; /* Next layer in driver chain */ BASPAG *basepage; /* Basepage of this module */ } LAYER; /*--------------------------------------------------------------------------*/ /* * CN functions structure for TCP and UDP */ typedef struct cn_funcs { int16 cdecl (* CNkick) (void *); int16 cdecl (* CNbyte_count) (void *); int16 cdecl (* CNget_char) (void *); NDB * cdecl (* CNget_NDB) (void *); int16 cdecl (* CNget_block) (void *, void *, int16); CIB * cdecl (* CNgetinfo) (void *); int16 cdecl (* CNgets) (void *, char *, int16, char); } CN_FUNCS; /*--------------------------------------------------------------------------*/ /* * Module driver structure / functions */ #ifndef MOD_DRIVER #define MOD_DRIVER typedef struct stx { char * module; /* Specific string that can be searched for */ char * author; /* Any string */ char * version; /* Format `00.00' Version:Revision */ void cdecl (* set_dgram_ttl) (IP_DGRAM *); int16 cdecl (* check_dgram_ttl) (IP_DGRAM *); int16 cdecl (* load_routing_table) (void); int32 cdecl (* set_sysvars) (int16, int16); void cdecl (* query_chains) (void **, void **, void **); int16 cdecl (* IP_send) (uint32, uint32, uint8, uint16, uint8, uint8, uint16, void *, uint16, void *, uint16); IP_DGRAM * cdecl (* IP_fetch) (int16); int16 cdecl (* IP_handler) (int16, int16 cdecl (*) (IP_DGRAM *), int16); void cdecl (* IP_discard) (IP_DGRAM *, int16); int16 cdecl (* PRTCL_announce) (int16); int16 cdecl (* PRTCL_get_parameters) (uint32, uint32 *, int16 *, uint16 *); int16 cdecl (* PRTCL_request) (void *, CN_FUNCS *); void cdecl (* PRTCL_release) (int16); void * cdecl (* PRTCL_lookup) (int16, CN_FUNCS *); int16 cdecl (* TIMER_call) (void cdecl (*) (void), int16); int32 cdecl (* TIMER_now) (void); int32 cdecl (* TIMER_elapsed) (int32); int32 cdecl (* protect_exec) (void *, int32 cdecl (*) (void *)); int16 cdecl (* get_route_entry) (int16, uint32 *, uint32 *, void **, uint32 *); int16 cdecl (* set_route_entry) (int16, uint32, uint32, void *, uint32); } STX; extern STX *stx; /* * Definitions of module driver functions for direct use */ #define set_dgram_ttl(x) (*stx->set_dgram_ttl)(x) #define check_dgram_ttl(x) (*stx->check_dgram_ttl)(x) #define load_routing_table() (*stx->load_routing_table)() #define set_sysvars(x,y) (*stx->set_sysvars)(x,y) #define query_chains(x,y,z) (*stx->query_chains)(x,y,z) #define IP_send(a,b,c,d,e,f,g,h,i,j,k) (*stx->IP_send)(a,b,c,d,e,f,g,h,i,j,k) #define IP_fetch(x) (*stx->IP_fetch)(x) #define IP_handler(x,y,z) (*stx->IP_handler)(x,y,z) #define IP_discard(x,y) (*stx->IP_discard)(x,y) #define PRTCL_announce(x) (*stx->PRTCL_announce)(x) #define PRTCL_get_parameters(w,x,y,z) (*stx->PRTCL_get_parameters)(w,x,y,z) #define PRTCL_request(x,y) (*stx->PRTCL_request)(x,y) #define PRTCL_release(x) (*stx->PRTCL_release)(x) #define PRTCL_lookup(x,y) (*stx->PRTCL_lookup)(x,y) #define TIMER_call(x,y) (*stx->TIMER_call)(x,y) #define TIMER_now() (*stx->TIMER_now)() #define TIMER_elapsed(x) (*stx->TIMER_elapsed)(x) #define protect_exec(x,y) (*stx->protect_exec)(x,y) #define get_route_entry(a,b,c,d,e) (*stx->get_route_entry)(a,b,c,d,e) #define set_route_entry(a,b,c,d,e) (*stx->set_route_entry)(a,b,c,d,e) #endif /* MOD_DRIVER */ /*--------------------------------------------------------------------------*/ #endif /* STING_LAYER_H */
/* * port.h (c) Peter Rottengatter 1996 * perot@pallas.amp.uni-hannover.de * * Include this file to provide port interfacing to STinG */ #ifndef STING_PORT_H #define STING_PORT_H #ifndef MODULE_DRIVER #define MODULE_DRIVER "MODULE_LAYER" #endif /*--------------------------------------------------------------------------*/ /* * Internal port descriptor. */ typedef struct port_desc { char *name; /* Name of port */ int16 type; /* Type of port */ int16 active; /* Flag for port active or not */ uint32 flags; /* Type dependent operational flags */ uint32 ip_addr; /* IP address of this network adapter */ uint32 sub_mask; /* Subnet mask of attached network */ int16 mtu; /* Maximum packet size to go through */ int16 max_mtu; /* Maximum allowed value for mtu */ int32 stat_sd_data; /* Statistics of sent data */ IP_DGRAM *send; /* Link to first entry in send queue */ int32 stat_rcv_data; /* Statistics of received data */ IP_DGRAM *receive; /* Link to first entry in receive queue */ int16 stat_dropped; /* Statistics of dropped datagrams */ struct drv_desc *driver; /* Driver program to handle this port */ struct port_desc *next; /* Next port in port chain */ } PORT; /* * Port driver descriptor. */ typedef struct drv_desc { int16 cdecl (* set_state) (PORT *, int16); /* Setup and shutdown port */ void cdecl (* send) (PORT *); /* Send pending packets */ void cdecl (* receive) (PORT *); /* Receive pending packets */ char *name; /* Name of driver */ char *version; /* Version of driver in "xx.yy" format */ uint16 date; /* Compile date in GEMDOS format */ char *author; /* Name of programmer */ struct drv_desc *next; /* Next driver in driver chain */ BASPAG *basepage; /* Basepage of this module */ } DRIVER; /*--------------------------------------------------------------------------*/ /* * Link Type Definitions */ #define L_INTERNAL 0 /* Internal pseudo port */ #define L_SER_PTP 1 /* Serial point to point type link */ #define L_PAR_PTP 2 /* Parallel point to point type link */ #define L_SER_BUS 3 /* Serial bus type link */ #define L_PAR_BUS 4 /* Parallel bus type link */ #define L_SER_RING 5 /* Serial ring type link */ #define L_PAR_RING 6 /* Parallel ring type link */ #define L_MASQUE 7 /* Masquerading pseudo port */ /*--------------------------------------------------------------------------*/ /* * Module driver structure / functions */ #ifndef MOD_DRIVER #define MOD_DRIVER typedef struct stx { char * module; /* Specific string that can be searched for */ char * author; /* Any string */ char * version; /* Format `00.00' Version:Revision */ void cdecl (* set_dgram_ttl) (IP_DGRAM *); int16 cdecl (* check_dgram_ttl) (IP_DGRAM *); int16 cdecl (* load_routing_table) (void); int32 cdecl (* set_sysvars) (int16, int16); void cdecl (* query_chains) (void **, void **, void **); int16 cdecl (* IP_send) (uint32, uint32, uint8, uint16, uint8, uint8, uint16, void *, uint16, void *, uint16); IP_DGRAM * cdecl (* IP_fetch) (int16); int16 cdecl (* IP_handler) (int16, int16 cdecl (*) (IP_DGRAM *), int16); void cdecl (* IP_discard) (IP_DGRAM *, int16); int16 cdecl (* PRTCL_announce) (int16); int16 cdecl (* PRTCL_get_parameters) (uint32, uint32 *, int16 *, uint16 *); int16 cdecl (* PRTCL_request) (void *, void *); void cdecl (* PRTCL_release) (int16); void * cdecl (* PRTCL_lookup) (int16, void *); int16 cdecl (* TIMER_call) (void cdecl (*) (void), int16); int32 cdecl (* TIMER_now) (void); int32 cdecl (* TIMER_elapsed) (int32); int32 cdecl (* protect_exec) (void *, int32 cdecl (*) (void *)); int16 cdecl (* get_route_entry) (int16, uint32 *, uint32 *, PORT **, uint32 *); int16 cdecl (* set_route_entry) (int16, uint32, uint32, PORT *, uint32); } STX; extern STX *stx; /* * Definitions of module driver functions for direct use */ #define set_dgram_ttl(x) (*stx->set_dgram_ttl)(x) #define check_dgram_ttl(x) (*stx->check_dgram_ttl)(x) #define load_routing_table() (*stx->load_routing_table)() #define set_sysvars(x,y) (*stx->set_sysvars)(x,y) #define query_chains(x,y,z) (*stx->query_chains)(x,y,z) #define IP_send(a,b,c,d,e,f,g,h,i,j,k) (*stx->IP_send)(a,b,c,d,e,f,g,h,i,j,k) #define IP_fetch(x) (*stx->IP_fetch)(x) #define IP_handler(x,y,z) (*stx->IP_handler)(x,y,z) #define IP_discard(x,y) (*stx->IP_discard)(x,y) #define PRTCL_announce(x) (*stx->PRTCL_announce)(x) #define PRTCL_get_parameters(w,x,y,z) (*stx->PRTCL_get_parameters)(w,x,y,z) #define PRTCL_request(x,y) (*stx->PRTCL_request)(x,y) #define PRTCL_release(x) (*stx->PRTCL_release)(x) #define PRTCL_lookup(x,y) (*stx->PRTCL_lookup)(x,y) #define TIMER_call(x,y) (*stx->TIMER_call)(x,y) #define TIMER_now() (*stx->TIMER_now)() #define TIMER_elapsed(x) (*stx->TIMER_elapsed)(x) #define protect_exec(x,y) (*stx->protect_exec)(x,y) #define get_route_entry(a,b,c,d,e) (*stx->get_route_entry)(a,b,c,d,e) #define set_route_entry(a,b,c,d,e) (*stx->set_route_entry)(a,b,c,d,e) #endif /* MOD_DRIVER */ /*--------------------------------------------------------------------------*/ #endif /* STING_PORT_H */
English version not yet available. |