Please wait until the page is fully downloaded and then press the "Expand" button or the blue line numbers.

0106000 /*
0106001 server/gen/ip/eth_io.h
0106002 */
0106003 
0106004 #ifndef __SERVER__IP__GEN__ETH_IO_H__
0106005 #define __SERVER__IP__GEN__ETH_IO_H__
0106006 
0106007 typedef struct nwio_ethopt
0106008 {
0106009          u32_t nweo_flags;
0106010          ether_addr_t nweo_multi, nweo_rem;
0106011          ether_type_t nweo_type;
0106012 } nwio_ethopt_t;
0106013 
0106014 #define NWEO_NOFLAGS       0x0000L
0106015 #define NWEO_ACC_MASK       0x0003L
"ACC" stands for Access. NWEO_SHARED comes into play in eth_arrive().


0106016 #       define NWEO_EXCL       0x00000001L
0106017 #       define NWEO_SHARED       0x00000002L
0106018 #       define NWEO_COPY       0x00000003L
0106019 #define NWEO_LOC_MASK       0x0010L
"LOC" stands for local. Either allow (EN = enable) packets to the local ethernet address (the default) or disallow them.


0106020 #       define NWEO_EN_LOC       0x00000010L
0106021 #       define NWEO_DI_LOC       0x00100000L
0106022 #define NWEO_BROAD_MASK       0x0020L
0106023 #       define NWEO_EN_BROAD       0x00000020L
0106024 #       define NWEO_DI_BROAD       0x00200000L
0106025 #define NWEO_MULTI_MASK 0x0040L
0106026 #       define NWEO_EN_MULTI       0x00000040L
0106027 #       define NWEO_DI_MULTI       0x00400000L
0106028 #define NWEO_PROMISC_MASK 0x0080L
0106029 #       define NWEO_EN_PROMISC       0x00000080L
0106030 #       define NWEO_DI_PROMISC       0x00800000L
One oddity (at least in my own mind) is that if promiscuous mode is configured for an ethernet file descriptor, the file descriptor will not accept local, multicast, or broadcast packets unless it is specifically configured to accept them.


0106031 #define NWEO_REM_MASK       0x0100L
"REM" stands for remote. NWEO_REMANY means that an incoming packet may be from any source. If the NWEO_REMSPEC flag is set, an ethernet file descriptor will only accept packets from the address specified by the file descriptor's (eth_fd_t) ef_ethopt.nweo_rem.


0106032 #       define NWEO_REMSPEC       0x00000100L
0106033 #       define NWEO_REMANY       0x01000000L
Allow packets to go to any destination.


0106034 #define NWEO_TYPE_MASK       0x0200L
0106035 #       define NWEO_TYPESPEC       0x00000200L
0106036 #       define NWEO_TYPEANY       0x02000000L
0106037 #define NWEO_RW_MASK       0x1000L
0106038 #       define NWEO_RWDATONLY       0x00001000L
0106039 #       define NWEO_RWDATALL       0x10000000L
0106040 
0106041 typedef struct eth_stat
0106042 {
0106043          unsigned long ets_recvErr,       /* # receive errors */
0106044                   ets_sendErr,              /* # send error */
0106045                   ets_OVW,              /* # buffer overwrite warnings,
0106046                                               (packets arrive faster than
0106047                                               can be processed) */
0106048                   ets_CRCerr,              /* # crc errors of read */
0106049                   ets_frameAll,              /* # frames not alligned (# bits
0106050                                               not a mutiple of 8) */
0106051                   ets_missedP,              /* # packets missed due to too
0106052                                               slow packet processing */
0106053                   ets_packetR,              /* # packets received */
0106054                   ets_packetT,              /* # packets transmitted */
0106055                   ets_transDef,              /* # transmission defered (there
0106056                                               was a transmission of an
0106057                                               other station in progress */
0106058                   ets_collision,              /* # collissions */
0106059                   ets_transAb,              /* # transmissions aborted due
0106060                                               to accesive collisions */
0106061                   ets_carrSense,              /* # carrier sense lost */
0106062                   ets_fifoUnder,              /* # fifo underruns (processor
0106063                                               is too busy) */
0106064                   ets_fifoOver,              /* # fifo overruns (processor is
0106065                                               too busy) */
0106066                   ets_CDheartbeat,       /* # times unable to transmit
0106067                                               collision signal */
0106068                   ets_OWC;              /* # times out of window
0106069                                               collision */
0106070 } eth_stat_t;
0106071 
0106072 typedef struct nwio_ethstat
0106073 {
0106074          ether_addr_t nwes_addr;
0106075          eth_stat_t nwes_stat;
0106076 } nwio_ethstat_t;
0106077 
0106078 #endif /* __SERVER__IP__GEN__ETH_IO_H__ */
0107000 /* When a needed block is not in the cache, it must be fetched from the disk.