The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/port/netif.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 typedef struct Etherpkt Etherpkt;
    2 typedef struct Netaddr  Netaddr;
    3 typedef struct Netfile  Netfile;
    4 typedef struct Netif    Netif;
    5 
    6 enum
    7 {
    8         Nmaxaddr=       64,
    9         Nmhash=         31,
   10 
   11         Ncloneqid=      1,
   12         Naddrqid,
   13         N2ndqid,
   14         N3rdqid,
   15         Ndataqid,
   16         Nctlqid,
   17         Nstatqid,
   18         Ntypeqid,
   19         Nifstatqid,
   20 };
   21 
   22 /*
   23  *  Macros to manage Qid's used for multiplexed devices
   24  */
   25 #define NETTYPE(x)      (((ulong)x)&0x1f)
   26 #define NETID(x)        ((((ulong)x))>>5)
   27 #define NETQID(i,t)     ((((ulong)i)<<5)|(t))
   28 
   29 /*
   30  *  one per multiplexed connection
   31  */
   32 struct Netfile
   33 {
   34         QLock;
   35 
   36         int     inuse;
   37         ulong   mode;
   38         char    owner[KNAMELEN];
   39 
   40         int     type;                   /* multiplexor type */
   41         int     prom;                   /* promiscuous mode */
   42         int     scan;                   /* base station scanning interval */
   43         int     bridge;                 /* bridge mode */
   44         int     headersonly;            /* headers only - no data */
   45         uchar   maddr[8];               /* bitmask of multicast addresses requested */
   46         int     nmaddr;                 /* number of multicast addresses */
   47 
   48         Queue   *in;                    /* input buffer */
   49 };
   50 
   51 /*
   52  *  a network address
   53  */
   54 struct Netaddr
   55 {
   56         Netaddr *next;          /* allocation chain */
   57         Netaddr *hnext;
   58         uchar   addr[Nmaxaddr];
   59         int     ref;
   60 };
   61 
   62 /*
   63  *  a network interface
   64  */
   65 struct Netif
   66 {
   67         QLock;
   68 
   69         /* multiplexing */
   70         char    name[KNAMELEN];         /* for top level directory */
   71         int     nfile;                  /* max number of Netfiles */
   72         Netfile **f;
   73 
   74         /* about net */
   75         int     limit;                  /* flow control */
   76         int     alen;                   /* address length */
   77         int     mbps;                   /* megabits per sec */
   78         int     link;                   /* link status */
   79         uchar   addr[Nmaxaddr];
   80         uchar   bcast[Nmaxaddr];
   81         Netaddr *maddr;                 /* known multicast addresses */
   82         int     nmaddr;                 /* number of known multicast addresses */
   83         Netaddr *mhash[Nmhash];         /* hash table of multicast addresses */
   84         int     prom;                   /* number of promiscuous opens */
   85         int     scan;                   /* number of base station scanners */
   86         int     all;                    /* number of -1 multiplexors */
   87 
   88         /* statistics */
   89         int     misses;
   90         uvlong  inpackets;
   91         uvlong  outpackets;
   92         int     crcs;           /* input crc errors */
   93         int     oerrs;          /* output errors */
   94         int     frames;         /* framing errors */
   95         int     overflows;      /* packet overflows */
   96         int     buffs;          /* buffering errors */
   97         int     soverflows;     /* software overflow */
   98 
   99         /* routines for touching the hardware */
  100         void    *arg;
  101         void    (*promiscuous)(void*, int);
  102         void    (*multicast)(void*, uchar*, int);
  103         void    (*scanbs)(void*, uint); /* scan for base stations */
  104 };
  105 
  106 void    netifinit(Netif*, char*, int, ulong);
  107 Walkqid*        netifwalk(Netif*, Chan*, Chan*, char **, int);
  108 Chan*   netifopen(Netif*, Chan*, int);
  109 void    netifclose(Netif*, Chan*);
  110 long    netifread(Netif*, Chan*, void*, long, ulong);
  111 Block*  netifbread(Netif*, Chan*, long, ulong);
  112 long    netifwrite(Netif*, Chan*, void*, long);
  113 int     netifwstat(Netif*, Chan*, uchar*, int);
  114 int     netifstat(Netif*, Chan*, uchar*, int);
  115 int     activemulti(Netif*, uchar*, int);
  116 
  117 /*
  118  *  Ethernet specific
  119  */
  120 enum
  121 {
  122         Eaddrlen=       6,
  123         ETHERMINTU =    60,             /* minimum transmit size */
  124         ETHERMAXTU =    1514,           /* maximum transmit size */
  125         ETHERHDRSIZE =  14,             /* size of an ethernet header */
  126 
  127         /* ethernet packet types */
  128         ETARP           = 0x0806,
  129         ETIP4           = 0x0800,
  130         ETIP6           = 0x86DD,
  131 };
  132 
  133 struct Etherpkt
  134 {
  135         uchar   d[Eaddrlen];
  136         uchar   s[Eaddrlen];
  137         uchar   type[2];
  138         uchar   data[1500];
  139 };

Cache object: 4830d3b637e347fa745e0f21057cbca3


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.