]> arthur.barton.de Git - netatalk.git/blob - include/atalk/nbp.h
use off_t rather than size_t for read/write_count, doesn't overflow at 4GB, yes movin...
[netatalk.git] / include / atalk / nbp.h
1 /*
2  * Copyright (c) 1990,1991 Regents of The University of Michigan.
3  * All Rights Reserved.
4  *
5  * Permission to use, copy, modify, and distribute this software and
6  * its documentation for any purpose and without fee is hereby granted,
7  * provided that the above copyright notice appears in all copies and
8  * that both that copyright notice and this permission notice appear
9  * in supporting documentation, and that the name of The University
10  * of Michigan not be used in advertising or publicity pertaining to
11  * distribution of the software without specific, written prior
12  * permission. This software is supplied as is without expressed or
13  * implied warranties of any kind.
14  *
15  *      Research Systems Unix Group
16  *      The University of Michigan
17  *      c/o Mike Clark
18  *      535 W. William Street
19  *      Ann Arbor, Michigan
20  *      +1-313-763-0525
21  *      netatalk@itd.umich.edu
22  */
23
24 #ifndef _ATALK_NBP_H
25 #define _ATALK_NBP_H 1
26 #define NBP_UNRGSTR_4ARGS 1
27 #define ATP_OPEN_2ARGS 1
28
29 #include <sys/cdefs.h>
30 #include <sys/types.h>
31 #include <netatalk/at.h>
32 #include <netatalk/endian.h>
33
34 struct nbphdr {
35 #if BYTE_ORDER == BIG_ENDIAN
36     unsigned    nh_op : 4,
37                 nh_cnt : 4,
38 #else /* BYTE_ORDER != BIG_ENDIAN */
39     unsigned    nh_cnt : 4,
40                 nh_op : 4,
41 #endif /* BYTE_ORDER */
42                 nh_id : 8;
43 };
44
45 #define SZ_NBPHDR       2
46
47 struct nbptuple {
48     u_int16_t   nt_net;
49     u_int8_t    nt_node;
50     u_int8_t    nt_port;
51     u_int8_t    nt_enum;
52 };
53 #define SZ_NBPTUPLE     5
54
55 #define NBPSTRLEN       32
56 /*
57  * Name Binding Protocol Network Visible Entity
58  */
59 struct nbpnve {
60     struct sockaddr_at  nn_sat;
61     u_char              nn_objlen;
62     char                nn_obj[ NBPSTRLEN ];
63     u_char              nn_typelen;
64     char                nn_type[ NBPSTRLEN ];
65     u_char              nn_zonelen;
66     char                nn_zone[ NBPSTRLEN ];
67 };
68
69 /*
70  * Note that NBPOP_ERROR is not standard. As Apple adds more NBPOPs,
71  * we need to check for collisions with our extra values.  */
72 #define NBPOP_BRRQ       0x1
73 #define NBPOP_LKUP       0x2
74 #define NBPOP_LKUPREPLY  0x3
75 #define NBPOP_FWD        0x4
76 #define NBPOP_RGSTR      0x7
77 #define NBPOP_UNRGSTR    0x8
78 #define NBPOP_CONFIRM    0x9
79 #define NBPOP_OK         0xa  /* NBPOP_STATUS_REPLY */
80 #define NBPOP_CLOSE_NOTE 0xb
81
82 #define NBPOP_ERROR      0xf
83
84 #define NBPMATCH_NOGLOB (1<<1)
85 #define NBPMATCH_NOZONE (1<<2)
86
87 extern int nbp_name (const char *, char **, char **, char **);
88 extern int nbp_lookup (const char *, const char *, const char *,
89                            struct nbpnve *, const int, 
90                            const struct at_addr *);
91 extern int nbp_rgstr (struct sockaddr_at *, 
92                           const char *, const char *, const char *);
93 extern int nbp_unrgstr (const char *, const char *, const char *,
94                             const struct at_addr *);
95
96 #endif