📄 snx.tpl
字号:
{
{ "__CLONE__", 0, 0, 0 },
@make_dmodsw_list(@(snx.drvmod.list))
{ 0, 0, 0, 0 }
};
/*
* Driver/Module initialization functions called from swk_tcp_init
*/
@make_dmodconf_decl(@(snx.drvmod.list))
struct dmod_conf dmodconf[] =
{
@make_dmodconf_list(@(snx.drvmod.list))
{ 0 }
};
/*
* Upper layer initialization functions called from swk_tcp_init
* once SNX is initialized
*/
@ifelse(@(rpc.enabled),yes,`extern void sys_initialize_rpc();')
@ifelse(@(nfs.enabled),yes,`extern void sys_initialize_nfs();')
@ifelse(@(snx.hook_init),0,,`extern void @(snx.hook_init)();')
struct dmod_conf ulconf[] =
{
@make_dmodconf_list(@(snx.ul.list))
@ifelse(@(rpc.enabled),yes,`{sys_initialize_rpc},')
@ifelse(@(nfs.enabled),yes,`{sys_initialize_nfs},')
@ifelse(@(snx.hook_init),0,,`{@(snx.hook_init)},')
{ 0 }
};
int swk_maxmajor = sizeof(dmodsw)/sizeof(struct sdev_tbl) - 2;
/*
* Network Interface table
*/
struct snx_net_interface snx_interface_table[] = {
@make_interface_list(@(snx.interface.list))
{ "", NULL, NULL, NULL, 0, 0, 0 }
};
/*
* SNX devices
*/
@ifelse(@(snx.drvmod.vme.enable),yes,``extern int vme_intr_srv(struct swk_irq_req *);
extern void vme_logio_snx_hdlr1(), vme_logio_snx_hdlr2();
struct vme_logio_dev vme_logio_dev[] = {
{ ''"@(snx.logio.devname.vme0)"``, vme_logio_snx_hdlr1, { 0, 0, vme_intr_srv } }
};
'')@dnl
@ifelse(@(snx.drvmod.lg.enable),yes,``extern int lg_intr_srv(struct swk_irq_req *);
extern void lg_logio_snx_hdlr1(), lg_logio_snx_hdlr2();
struct lg_logio_dev lg_logio_dev[] = {
{ ''"@(snx.logio.devname.lg0)"``, lg_logio_snx_hdlr1, { 0, 0, lg_intr_srv } },
{ ''"@(snx.logio.devname.lg1)"``, lg_logio_snx_hdlr2, { 0, 1, lg_intr_srv } }
};
'')@dnl
/*
* Local host info
*/
unsigned char snx_local_host[HOST_NAME_LEN];
unsigned char x_snx_local_host[HOST_NAME_LEN] = "@(snx.local_host)";
unsigned char snx_domain_name[DOMAIN_NAME_LEN] = "@(snx.domain.name)";
/*
* Host table (/etc/hosts)
*/
struct snx_host snx_host_table[] = {
{ "localhost", "127.0.0.1", 1 },
@make_host_list(@(snx.hosts.list))
{ "", "", 0 }
};
/*
* Name server table (/etc/resolv.conf)
*/
struct snx_nameserv snx_nameservers[] = {
@make_nameservers(@(snx.nameserver.list))
{ "" }
};
/*
* Gateway table (/etc/gateways)
*/
struct snx_gw_entry snx_gw_table[] = {
@make_route_list(@(snx.route.list))
{ 0, 0, 0, 0, 0 }
};
/*
* RARP parameters
*/
int snx_rarp_enable = @ifelse(@(snx.rarp.enable),yes,1,0);
int snx_rarp_timeout = @(snx.rarp.timeout);
int snx_rarp_retries = @(snx.rarp.retries);
int swk_tid = @(snx.swk.tid); /* Streams server TID */
int swk_priority = @(snx.swk.priority); /* Streams server priority */
int swk_request_weight = @(snx.swk.request_weight); /* weighted count for message interface */
int swk_nfile = @(snx.fdtab_size); /* Max number of files */
dev_t swk_ftbl[@(snx.fdtab_size)]; /* File table */
int open_fdtbl[@(snx.fdtab_size)];
int swk_sig_tid = @(snx.sig.tid); /* Signal server TID */
int swk_sig_prio = @(snx.sig.priority); /* Signal server PRIO */
extern int sys_sc_tcreates();
int (*sys_tcreate_fctp)() = @ifelse(@(sys.vrtx32),yes,`@ifelse(@(board.tool.type),ix86,(int (*)())sc_tcreate,sys_sc_tcreates)',(int (*)())sc_tcreate);
/*
* RPC parameters
*/
@ifelse(@(rpc.enabled),yes,int rpc_pm_priority = @(rpc.pm_priority);)
int sca_lenbad;
int gethostname_first;
int snx_stats_enabled;
int snx_gratuitous_arp_enabled;
int snx_print_mem_err;
/*
* TFTP parameters
*/
int max_tftp_clients = @(snx.tftp.max_clients);
char tftp_homedir[] = "@(snx.tftp.homedir)";
/*
* TCP (keepalive) configuration parameters
*/
int tcptv_keep_idle = @(snx.tcp.keepidle);
int tcptv_keepintvl = @(snx.tcp.keepintvl);
int tcptv_keepcnt = @(snx.tcp.keepcnt);
int tcp_maxrxtshift = @(snx.tcp.maxrxtshift);
/*
* IP and LOGIO Interface trace parameters
*/
unsigned char sw_trace_ip_in = @ifelse(@(snx.trace.ip.in.enabled),yes,TRUE,FALSE) ;
unsigned char sw_trace_ip_out = @ifelse(@(snx.trace.ip.out.enabled),yes,TRUE,FALSE) ;
unsigned char sw_trace_lgif_in = @ifelse(@(snx.trace.lgif.in.enabled),yes,TRUE,FALSE) ;
unsigned char sw_trace_lgif_out = @ifelse(@(snx.trace.lgif.out.enabled),yes,TRUE,FALSE) ;
unsigned char sw_trace_ip_not_for_us_include = @ifelse(@(snx.trace.ip.in.enabled),no,FALSE,@(snx.trace.ip.in.not4us_dgram.included),yes,TRUE,FALSE) ;
unsigned char sw_trace_lgif_not_bound_include = @ifelse(@(snx.trace.lgif.in.enabled),no,FALSE,@(snx.trace.lgif.not_bound.include),yes,TRUE,FALSE) ;
unsigned long counter_trace_ip_in = 0;
unsigned long counter_trace_ip_out = 0;
unsigned long counter_trace_lgif_in = 0;
unsigned long counter_trace_lgif_out = 0;
unsigned short size_trace_ip_in = @ifelse(@(snx.trace.ip.in.enabled),yes,`@(snx.trace.ip.in.array_size)',0);
unsigned short size_trace_ip_out = @ifelse(@(snx.trace.ip.out.enabled),yes,`@(snx.trace.ip.out.array_size)',0);
unsigned short size_trace_lgif_in = @ifelse(@(snx.trace.lgif.in.enabled),yes,`@(snx.trace.lgif.in.array_size)',0);
unsigned short size_trace_lgif_out = @ifelse(@(snx.trace.lgif.out.enabled),yes,`@(snx.trace.lgif.out.array_size)',0);
struct struct_trace_ip_in array_trace_ip_in [@ifelse(@(snx.trace.ip.in.enabled),yes,`@(snx.trace.ip.in.array_size)',1)];
struct struct_trace_ip_out array_trace_ip_out [@ifelse(@(snx.trace.ip.out.enabled),yes,`@(snx.trace.ip.out.array_size)',1)];
struct struct_trace_lgif_in array_trace_lgif_in [@ifelse(@(snx.trace.lgif.in.enabled),yes,`@(snx.trace.lgif.in.array_size)',1)];
struct struct_trace_lgif_out array_trace_lgif_out [@ifelse(@(snx.trace.lgif.out.enabled),yes,`@(snx.trace.lgif.out.array_size)',1)];
@ifelse(@(snx.rtlsnx.enabled),yes,`
/*
** Load function stubs for rtlsnx. Applications using
** rtlsnx continue to work as it is, w/o linking
** with snx libraries. This function pulls the rtlsnx
** functions into snx image.
*/
snx_app_func_load()
{
snx_dummy_loadfunc();
} ')
/*
* SNX initialization
*/
void
sys_initialize_snx()
{
int i, err;
extern int swk_main_task();
extern void swk_signal_server(),
swk_tcp_init(),
swk_timeout_init();
struct dmod_conf *p;
/*
* global variables
*/
gethostname_first = 1;
sca_lenbad = 0;
snx_stats_enabled = @(snx.stats.enabled);
snx_gratuitous_arp_enabled = @(snx.gratuitous_arp.enabled);
snx_print_mem_err = @(snx.print.memerr);
/* Initializetion of structures, variables and arrays used for
SNX statistics.
*/
snx_init_stats();
/*
* open/close requests to be handle by a separate thread
*/
sc_qcreate(swk_ocq_id, swk_ocq_size, &err);
if (err)
(*sys_message_handler)(USECONSOLE | VSYSLIBID | FATALTYPE | SYS_ESNXREQ, err);
@ifelse(@(snx.snmp.enabled),yes,``
/* Create the event flag used by SMUX peers to synchronize */
ev_snmpd = sc_fcreate (&err);
if (err != 0) {
sys_bsp_abort();
}
'')@dnl
if (swk_init_msgqueue() == -1)
(*sys_message_handler)(USECONSOLE | VSYSLIBID | FATALTYPE | SYS_ESNXMSGQ, NULL);
/* Initialize global file table */
for (i = 0; i < swk_nfile; i++)
{
swk_ftbl[i] = NODEV;
open_fdtbl[i] = 0;
}
/* Initialize SwK globol data */
swk_start();
/* Initialize global timeout data */
swk_timeout_init();
/* swk_main_task() has to run with kernel privileges */
(*sys_tcreate_fctp)(swk_main_task, swk_tid, swk_priority, &err);
if (err)
(*sys_message_handler)(USECONSOLE | VSYSLIBID | FATALTYPE | SYS_ESNXTASK, err);
/* The signal server only needs user privileges */
sc_tcreate(swk_signal_server, swk_sig_tid, swk_sig_prio, &err);
if (err)
(*sys_message_handler)(USECONSOLE | VSYSLIBID | FATALTYPE | SYS_ESNXSIGTASK, err);
/*
* Initialize all Streams modules.
*/
for (p = dmodconf; p->initf; ++p)
(void) (*p->initf)();
/* TCP/IP stack initialization */
sc_tcreate(swk_tcp_init, 0,
(swk_priority == 255) ? swk_priority : swk_priority + 1,
&err);
if (err)
(*sys_message_handler)(USECONSOLE | VSYSLIBID | FATALTYPE | SYS_ESNXTCPINIT, err);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -