FreeBSD/Linux Kernel Cross Reference
sys/netsmb/netbios.h
1 /* $NetBSD: netbios.h,v 1.7 2005/12/11 06:25:32 christos Exp $ */
2
3 /*
4 * Copyright (c) 2000-2001 Boris Popov
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. All advertising materials mentioning features or use of this software
16 * must display the following acknowledgement:
17 * This product includes software developed by Boris Popov.
18 * 4. Neither the name of the author nor the names of any co-contributors
19 * may be used to endorse or promote products derived from this software
20 * without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 *
34 * FreeBSD: src/sys/netsmb/netbios.h,v 1.1 2001/04/10 07:59:05 bp Exp
35 */
36 #ifndef _NETSMB_NETBIOS_H_
37 #define _NETSMB_NETBIOS_H_
38
39 /*
40 * make this file dirty...
41 */
42 #ifndef _NETINET_IN_H_
43 #include <netinet/in.h>
44 #endif
45
46 #ifndef NetBSD
47 #ifndef _NETIPX_IPX_H_
48 #include <netipx/ipx.h>
49 #endif
50 #endif
51
52 #define AF_NETBIOS AF_NS /* XXX: should go to socket.h */
53 #define PF_NETBIOS AF_NETBIOS
54
55 #define NBPROTO_TCPSSN 1 /* NETBIOS session over TCP */
56 #define NBPROTO_IPXSSN 11 /* NETBIOS over IPX */
57
58 #define NB_NAMELEN 16
59 #define NB_ENCNAMELEN (NB_NAMELEN * 2)
60 #define NB_MAXLABLEN 63
61
62 #define NB_MINSALEN (sizeof(struct sockaddr_nb))
63
64 /*
65 * name types
66 */
67 #define NBT_WKSTA 0x00
68 #define NBT_SERVER 0x20
69
70 /*
71 * Session packet types
72 */
73 #define NB_SSN_MESSAGE 0x0
74 #define NB_SSN_REQUEST 0x81
75 #define NB_SSN_POSRESP 0x82
76 #define NB_SSN_NEGRESP 0x83
77 #define NB_SSN_RTGRESP 0x84
78 #define NB_SSN_KEEPALIVE 0x85
79
80 /*
81 * resolver: Opcodes
82 */
83 #define NBNS_OPCODE_QUERY 0x00
84 #define NBNS_OPCODE_REGISTER 0x05
85 #define NBNS_OPCODE_RELEASE 0x06
86 #define NBNS_OPCODE_WACK 0x07
87 #define NBNS_OPCODE_REFRESH 0x08
88 #define NBNS_OPCODE_RESPONSE 0x10 /* or'ed with other opcodes */
89
90 /*
91 * resolver: NM_FLAGS
92 */
93 #define NBNS_NMFLAG_BCAST 0x01
94 #define NBNS_NMFLAG_RA 0x08 /* recursion available */
95 #define NBNS_NMFLAG_RD 0x10 /* recursion desired */
96 #define NBNS_NMFLAG_TC 0x20 /* truncation occurred */
97 #define NBNS_NMFLAG_AA 0x40 /* authoritative answer */
98
99 /*
100 * resolver: Question types
101 */
102 #define NBNS_QUESTION_TYPE_NB 0x0020
103 #define NBNS_QUESTION_TYPE_NBSTAT 0x0021
104
105 /*
106 * resolver: Question class
107 */
108 #define NBNS_QUESTION_CLASS_IN 0x0001
109
110 /*
111 * resolver: Limits
112 */
113 #define NBNS_MAXREDIRECTS 3 /* maximum number of accepted redirects */
114 #define NBDG_MAXSIZE 576 /* maximum nbns datagram size */
115
116 /*
117 * NETBIOS addressing
118 */
119 union nb_tran {
120 struct sockaddr_in x_in;
121 };
122
123 struct nb_name {
124 u_int nn_type;
125 u_char nn_name[NB_NAMELEN + 1];
126 u_char * nn_scope;
127 };
128
129 /*
130 * Socket address
131 */
132 struct sockaddr_nb {
133 u_char snb_len;
134 u_char snb_family;
135 union nb_tran snb_tran; /* transport */
136 u_char snb_name[1 + NB_ENCNAMELEN + 1]; /* encoded */
137 };
138
139 #define snb_addrin snb_tran.x_in
140
141 #endif /* !_NETSMB_NETBIOS_H_ */
Cache object: 8c521bdb505116a629b8d16bebcab68a
|