|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T i
Length: 3213 (0xc8d) Types: TextFile Names: »init.c«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit └─⟦3b20aab50⟧ »EurOpenD3/network/snmp/kip-snmp.91.tar.Z« └─⟦b503a39fe⟧ └─⟦this⟧ »kip/init.c«
/* * Initialize data structures that might otherwise be initialized * at compile time, but for re-startable RAM code, must be at run-time. * * (c) Copyright 1986, Kinetics, Inc. * May be used but not sold without permission. * * $Header: init.c,v 4.1 88/11/01 19:49:58 sw0l Locked $ */ #include "gw.h" #include "fp/pbuf.h" #include "ab.h" #include "ether.h" #include "inet.h" #include "ie.h" #include "gwctl.h" #include "fp/cmdmacro.h" #include "glob.h" /* from ie.c */ /* * Configuration command data (from page 4-5 of NI3210 manual). */ struct cb ieconf_proto = { SWAB(0), /* status */ SWAB(CB_EL|CBC_CONFIG), /* cmd */ SWAB(0xffff), /* link to next (none) */ SWAB(0x020c), /* FIFO thresshold is 2 */ /* 12 byte parameter list */ SWAB(0x2ec0), /* 8 byte preamble */ /* address and data type in data */ /* 6 ethernet address bytes */ /* store bad frames in memory */ /* srdy/ardy pin opertes as srdy */ SWAB(0x6000), /* 0x60 Interframe spacing in TxC time units */ /* 802.3 Exponential Backoff */ SWAB(0xf200), /* 16 retries on xmit collision */ /* slot time: 0x200 */ SWAB(0x0400), /* Collision Detect Source: external */ /* Carrier Sense Source: external */ /* No padding */ /* Bitstuffing: End of carrier (802.3) */ /* CRC: 32 bit CCITT II CRC polyn. */ /* CRC Insertion */ /* No Xmit on no carrier */ /* NRZ encoding/decoding */ /* Broadcast allowed */ /* Normal (vs. promiscuous) mode */ /* Unclear what bit 10 on does */ SWAB(0x003C) /* min pkt size to 60 (was 64) */ }; /* from send.c */ extern short dlen; extern char outbuf[]; u_char lap_head[3]; u_char atwr_diag[1]; struct fp_atwrite atwr_proto[] = { 3, (u_char *) lap_head, 2, (u_char *) &dlen, 1, (u_char *) atwr_diag, 0, (u_char *) outbuf, 0, (u_char *) 0 }; struct fp_proelem elem[1]; struct fp_protect prot; data_init() { /* from gw.c */ extern struct ifnet ifie_proto, ifab_proto, ifet_proto; /* EtherTalk address aquisition variables */ extern iaddr_t et_probe; extern short et_probe_count; /* from ie.c */ extern struct cb xmit; extern struct cb iasetup; extern struct cb ieconfig; /* from send.c */ extern struct fp_atwrite the_pkt[]; register struct fp_atwrite *ap,*bp; /* from gw.c */ ddpWKSUnix = defddpWKSUnix; ifie = ifie_proto; ifab = ifab_proto; ifet = ifet_proto; msclock = 0; et_probe = 0; ((char *)&et_probe)[3] = 0x7f; /* start PROBE's in server range */ et_probe_count = 0; /* from ie.c */ xmit.cb_cmd = SWAB(CB_EL|CB_I|CBC_TRANS); iasetup.cb_cmd = SWAB(CB_EL | CBC_IASETUP); ieconfig = ieconf_proto; /* from send.c */ lap_head[0] = (u_char) 0xFF; lap_head[1] = (u_char) 0x00; lap_head[2] = (u_char) 'K'; atwr_diag[0] = 'D'; ap = the_pkt; bp = atwr_proto; while (ap < &the_pkt[5]) { *ap++ = *bp++; } } checksum(begin,dataend) char *begin; char *dataend; { /* set up protected ram areas */ /* beginning of text segment through the end of initialized data */ elem[0].fpp_memp = begin; elem[0].fpp_count = ((int)dataend) - ((int)begin); /* make the protect call */ prot.fpt_oper = PR_PROTECT; prot.fpt_count = 1; prot.fpt_elem = elem; K_PROTECT(&prot); }