Annotation of XNU/bsd/netat/at_var.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * The contents of this file constitute Original Code as defined in and
        !             7:  * are subject to the Apple Public Source License Version 1.1 (the
        !             8:  * "License").  You may not use this file except in compliance with the
        !             9:  * License.  Please obtain a copy of the License at
        !            10:  * http://www.apple.com/publicsource and read it before using this file.
        !            11:  * 
        !            12:  * This Original Code and all software distributed under the License are
        !            13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            17:  * License for the specific language governing rights and limitations
        !            18:  * under the License.
        !            19:  * 
        !            20:  * @APPLE_LICENSE_HEADER_END@
        !            21:  */
        !            22: /*
        !            23:  *     Copyright (c) 1998 Apple Computer, Inc. 
        !            24:  */
        !            25: 
        !            26: #include <sys/queue.h>
        !            27: 
        !            28: /* at_var.h */
        !            29: 
        !            30: /* at_var.h contains definitions formerly found in: at/at_lap.h & at/elap.h */
        !            31: 
        !            32: /* multicast tracking */
        !            33: #define MAX_MCASTS 25          /* #multicast addrs tracked per i/f */
        !            34: #define MCAST_TRACK_ADD                1
        !            35: #define MCAST_TRACK_DELETE     2
        !            36: #define MCAST_TRACK_CHECK      3
        !            37: 
        !            38: #define ETHERNET_ADDR_LEN 6
        !            39: #define IFNAMESIZ 16
        !            40: 
        !            41: #define FDDI_OR_TOKENRING(i) ((i == IFT_FDDI) || (i == IFT_ISO88025))
        !            42: 
        !            43: typedef struct etalk_addr {
        !            44:        u_char          etalk_addr_octet[ETHERNET_ADDR_LEN];    
        !            45: } etalk_addr_t;
        !            46: 
        !            47: typedef char if_name_t[IFNAMESIZ];
        !            48: 
        !            49: typedef struct at_if_statstics {
        !            50:        u_long  fwdBytes;               /* bytes received & forwarded */
        !            51:        u_long  fwdPkts;                /* pkts  received & forwarded */
        !            52:        u_long  droppedBytes;           /* bytes received & dropped */
        !            53:        u_long  droppedPkts;            /* pkts  received & dropped */ 
        !            54:        u_long  outBytes;               /* bytes sent */
        !            55:        u_long  outPkts;                /* pkts  sent */
        !            56:        u_long  routes;                 /* count of routes in rtmptable */
        !            57: } at_if_statistics_t;
        !            58: 
        !            59: typedef struct {
        !            60:        u_int   unknown_mblks;  /* number of unknown streams msgs       */
        !            61:        u_int   rcv_bytes;      /* number of data bytes received        */
        !            62:        u_int   rcv_packets;    /* number of packets received           */
        !            63:        u_int   xmit_bytes;     /* number of data bytes xmited          */
        !            64:        u_int   xmit_packets;   /* number of packets xmited             */
        !            65: } at_elap_stats_t;
        !            66: 
        !            67: typedef struct {
        !            68:        char            ifr_name[IFNAMESIZ];
        !            69:        u_int           flags;          /* misc. port flags, 
        !            70:                                           (ELAP_CFG_xxx on input 
        !            71:                                           ifFlags on output) */
        !            72:        struct at_addr  node;           /* Our node number. */
        !            73:        struct at_addr  router;         /* Our router. */
        !            74:        u_short         netStart;       /* network start range */
        !            75:        u_short         netEnd;         /* network ending range */
        !            76:        at_nvestr_t     zonename;
        !            77: } at_if_cfg_t;
        !            78: 
        !            79: typedef struct {
        !            80:        at_entity_t     name;
        !            81:        at_inet_t       addr;           /* net and node are ignored, except in
        !            82:                                           multihoming mode where "addr" is used
        !            83:                                           to specify the interface. */
        !            84:        u_char          ddptype;
        !            85:        long            unique_nbp_id;
        !            86: } at_nbp_reg_t;
        !            87: 
        !            88: typedef struct {
        !            89:        char            ifr_name[IFNAMESIZ];
        !            90:        at_nvestr_t     zonename;
        !            91: } at_def_zone_t;
        !            92: 
        !            93: typedef struct {
        !            94:        short multihome;
        !            95:        short rtmp_table_sz;
        !            96:        short zone_table_sz;
        !            97:        short router_mix;
        !            98: } at_router_params_t;
        !            99: 
        !           100: typedef struct at_kern_err {
        !           101:        int             error;          /* kernel error # (KE_xxx) */
        !           102:        int             port1;
        !           103:        int             port2;
        !           104:        char    name1[IFNAMESIZ];
        !           105:        char    name2[IFNAMESIZ];
        !           106:        u_short net;                            
        !           107:        u_char  node;
        !           108:        u_short netr1b, netr1e;         /* net range 1 begin & end */
        !           109:        u_short netr2b, netr2e;         /* net range 2 begin & end */
        !           110:        u_char  rtmp_id;
        !           111: } at_kern_err_t;
        !           112: 
        !           113: #define KE_CONF_RANGE                  1
        !           114: #define KE_CONF_SEED_RNG               2
        !           115: #define KE_CONF_SEED1                  3
        !           116: #define KE_CONF_SEED_NODE              4
        !           117: #define KE_NO_ZONES_FOUND              5
        !           118: #define KE_NO_SEED                     6
        !           119: #define KE_INVAL_RANGE                 7
        !           120: #define KE_SEED_STARTUP                        8       
        !           121: #define KE_BAD_VER                     9
        !           122: #define KE_RTMP_OVERFLOW               10
        !           123: #define KE_ZIP_OVERFLOW                        11
        !           124: 
        !           125: /*
        !           126:  * Interface address, AppleTalk version.  One of these structures
        !           127:  * is allocated for each AppleTalk address on an interface.
        !           128:  *
        !           129:  * The ifaddr structure contains the protocol-independent part
        !           130:  * of the structure and is assumed to be first, as it is in
        !           131:  * "struct in_ifaddr", defined in bsd/netinet/in_var.h.
        !           132:  */
        !           133: typedef struct at_ifaddr {
        !           134:        struct ifaddr   aa_ifa;
        !           135: #define                aa_ifp          aa_ifa.ifa_ifp
        !           136: #define                        aa_flags        aa_ifa.ifa_flags
        !           137: 
        !           138:        TAILQ_ENTRY(at_ifaddr) aa_link; /* tailq macro glue */
        !           139: 
        !           140:        u_long at_dl_tag;               /* DLIL tag to be used in packet output */
        !           141:        u_long aarp_dl_tag;             /* DLIL tag for Appletalk ARP */
        !           142: 
        !           143:        /* from pat_unit_t */
        !           144:        unsigned char   mcast[MAX_MCASTS];
        !           145:         char           xaddr[ETHERNET_ADDR_LEN];
        !           146: 
        !           147:        /* from elap_specifics_t */
        !           148:        at_elap_stats_t stats;
        !           149: 
        !           150:        /* The DDP sets these values: */
        !           151:        u_char          ifState;        /* State of the interface LAP_* */
        !           152:        u_short         ifThisCableStart;
        !           153:        u_short         ifThisCableEnd;
        !           154:        struct  at_addr ifARouter;
        !           155:        u_char          ifRouterState;
        !           156:        u_int           ifFlags;        /* Flags, see AT_IFF_*  */
        !           157:        struct sockaddr_at ifNodeAddress;
        !           158: #define                ifThisNode ifNodeAddress.sat_addr
        !           159:                                /* AppleTalk node ID is ifNodeAddress.sat_addr*/
        !           160: 
        !           161:        /* for use by ZIP */
        !           162:        u_char          ifNumRetries;
        !           163:        at_nvestr_t     ifZoneName;
        !           164: 
        !           165:        /* Added for routing support */
        !           166:        int             ifPort;         /* the unique ddp logical port 
        !           167:                                           number, also index into
        !           168:                                           at_interfaces[] and ifID_table[] */
        !           169:        char            ifName[IFNAMESIZ]; 
        !           170:                                        /* added to support LAP_IOC_GET_IFID */
        !           171:        u_short         ifDefZone;      /*  Default Zone index in ZoneTable; used
        !           172:                                            only in routing/multihome modes to be
        !           173:                                            able to answer a ZIP GetNetInfo request */
        !           174:        char            ifZipNeedQueries;
        !           175:                                        /* ZIP/RTMP Query flag */
        !           176:        char            ifRoutingState; /* Port (as a router) state */
        !           177:        at_if_statistics_t      
        !           178:                        ifStatistics;   /* statistics */
        !           179:        /* end of elap_if structure */
        !           180: 
        !           181:        u_short         flags;          /* port specific flags */
        !           182:        struct etalk_addr       ZoneMcastAddr;  
        !           183:                                        /* zone multicast addr */
        !           184:        struct etalk_addr       cable_multicast_addr;   
        !           185:                                        /* AppleTalk broadcast addr */
        !           186:        
        !           187:        struct  at_addr initial_addr;   /* temporary value used during startup */
        !           188:        at_nvestr_t     startup_zone;
        !           189:        int             startup_error,  /* to get error code  back from
        !           190:                                           ZIPwakeup() / AARPwakeup() */
        !           191:                        startup_inprogress; /* to decide whether it's the
        !           192:                                           middle of an elap_online operation */
        !           193: 
        !           194: } at_ifaddr_t;
        !           195: 
        !           196: #define        LAP_OFFLINE             0       /* LAP_OFFLINE MUST be 0 */     
        !           197: #define        LAP_ONLINE              1
        !           198: #define        LAP_ONLINE_FOR_ZIP      2
        !           199: #define        LAP_ONLINE_ZONELESS     3       /* for non-home router ports */
        !           200: 
        !           201: #define        NO_ROUTER       1       /* there's no router around     */
        !           202: #define        ROUTER_WARNING  2       /* there's a router around that */
        !           203:                                /* we are ignoring, warning has */
        !           204:                                /* been issued to the user      */
        !           205: #define        ROUTER_AROUND   3       /* A router is around and we've */
        !           206:                                /* noted its presence           */
        !           207: #define ROUTER_UPDATED  4      /* for mh tracking of routers. Value decremented
        !           208:                                   with rtmp aging timer, a value of 4 allows a 
        !           209:                                   minimum of 40 secs to laps before we decide
        !           210:                                   to revert to cable multicasts */
        !           211:               
        !           212: #define AIOCSTOPATALK  _IOW('a',  1, int)              /* stop AppleTalk */
        !           213: #define AIOCGETIFCFG   _IOWR('a', 2, at_if_cfg_t)      /* get AT interface cfg */
        !           214: #define AIOCNBPREG     _IOWR('a', 3, at_nbp_reg_t)     /* NBP register */
        !           215: #define AIOCNBPREMOVE  _IOW('a', 4, at_nbp_reg_t)      /* NBP remove */
        !           216: #define AIOCGETSTATE   _IOR('a', 5, at_state_t)        /* get AT global state */
        !           217: #define AIOCSETDEFZONE _IOW('a', 6, at_def_zone_t)     /* set default zone */
        !           218: #define AIOCSETROUTER  _IOW('a', 7, at_router_params_t)
        !           219: #define AIOCGETROUTER  _IOR('a', 8, at_router_params_t)
        !           220: #define AIOCSIFADDR    _IOW('a', 9, at_if_cfg_t)       /* init AT interface */
        !           221: #define AIOCSTARTROUTER _IOR('a',10, at_kern_err_t)    /* start AT routing */
        !           222: 
        !           223: /* values for ifFlags */
        !           224: #define LAP_STATE_MASK                0xf      /* low order bits used to report
        !           225:                                                   IF state, by AIOCGETIFCFG */
        !           226: #define AT_IFF_DEFAULT            0x40000
        !           227: #define AT_IFF_AURP               0x20000
        !           228: #define RTR_NXNET_PORT         0x10000000  /* Non Extended net port */
        !           229: #define RTR_XNET_PORT          0x20000000  /* Extended net port */
        !           230: #define RTR_SEED_PORT          0x40000000  /* Seed port require config net values*/
        !           231: 
        !           232: /* elap_cfg 'flags' defines */
        !           233: #define ELAP_CFG_ZONELESS   0x01       /* true if we shouldn't set a zone
        !           234:                                          (to avoid generating a zip_getnetinfo
        !           235:                                          when routing) */
        !           236: #define ELAP_CFG_HOME      0x02        /* designate home port (one allowed) */
        !           237: #define ELAP_CFG_SEED      0x08        /* set if it's a seed port */
        !           238: 
        !           239: #ifdef KERNEL
        !           240: extern TAILQ_HEAD(at_ifQueueHd, at_ifaddr) at_ifQueueHd;
        !           241: 
        !           242: int at_control __P((struct socket *, u_long, caddr_t, struct ifnet *));
        !           243: int ddp_usrreq __P((struct socket *, int, struct mbuf *, struct mbuf *, 
        !           244:                    struct mbuf *));
        !           245: int ddp_ctloutput __P((struct socket *, struct sockopt *));
        !           246: void ddp_init __P((void));;
        !           247: void ddp_slowtimo __P((void));
        !           248: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.