]> arthur.barton.de Git - netatalk.git/blob - include/atalk/nbp.h
a1fb271400e4367fbbe38586e6c55a2eeccc99ec
[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/types.h>
30 #include <netatalk/at.h>
31 #include <netatalk/endian.h>
32
33 struct nbphdr {
34 #if BYTE_ORDER == BIG_ENDIAN
35     unsigned    nh_op : 4,
36                 nh_cnt : 4,
37 #else /* BYTE_ORDER != BIG_ENDIAN */
38     unsigned    nh_cnt : 4,
39                 nh_op : 4,
40 #endif /* BYTE_ORDER */
41                 nh_id : 8;
42 };
43
44 #define SZ_NBPHDR       2
45
46 struct nbptuple {
47     u_int16_t   nt_net;
48     u_int8_t    nt_node;
49     u_int8_t    nt_port;
50     u_int8_t    nt_enum;
51 };
52 #define SZ_NBPTUPLE     5
53
54 #define NBPSTRLEN       32
55 /*
56  * Name Binding Protocol Network Visible Entity
57  */
58 struct nbpnve {
59     struct sockaddr_at  nn_sat;
60     u_char              nn_objlen;
61     char                nn_obj[ NBPSTRLEN ];
62     u_char              nn_typelen;
63     char                nn_type[ NBPSTRLEN ];
64     u_char              nn_zonelen;
65     char                nn_zone[ NBPSTRLEN ];
66 };
67
68 /*
69  * Note that NBPOP_ERROR is not standard. As Apple adds more NBPOPs,
70  * we need to check for collisions with our extra values.  */
71 #define NBPOP_BRRQ       0x1
72 #define NBPOP_LKUP       0x2
73 #define NBPOP_LKUPREPLY  0x3
74 #define NBPOP_FWD        0x4
75 #define NBPOP_RGSTR      0x7
76 #define NBPOP_UNRGSTR    0x8
77 #define NBPOP_CONFIRM    0x9
78 #define NBPOP_OK         0xa  /* NBPOP_STATUS_REPLY */
79 #define NBPOP_CLOSE_NOTE 0xb
80
81 #define NBPOP_ERROR      0xf
82
83 #define NBPMATCH_NOGLOB (1<<1)
84 #define NBPMATCH_NOZONE (1<<2)
85
86 extern int nbp_name (const char *, char **, char **, char **);
87 extern int nbp_lookup (const char *, const char *, const char *,
88                            struct nbpnve *, const int, 
89                            const struct at_addr *);
90 extern int nbp_rgstr (struct sockaddr_at *, 
91                           const char *, const char *, const char *);
92 extern int nbp_unrgstr (const char *, const char *, const char *,
93                             const struct at_addr *);
94
95 #endif