Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/netsmb/netbios.h
39476 views
1
/*-
2
* SPDX-License-Identifier: BSD-2-Clause
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
*
16
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26
* SUCH DAMAGE.
27
*/
28
#ifndef _NETSMB_NETBIOS_H_
29
#define _NETSMB_NETBIOS_H_
30
31
/*
32
* make this file dirty...
33
*/
34
#ifndef _NETINET_IN_H_
35
#include <netinet/in.h>
36
#endif
37
38
#define NMB_TCP_PORT 137
39
40
#define NBPROTO_TCPSSN 1 /* NETBIOS session over TCP */
41
#define NBPROTO_IPXSSN 11 /* NETBIOS over IPX */
42
43
#define NB_NAMELEN 16
44
#define NB_ENCNAMELEN NB_NAMELEN * 2
45
#define NB_MAXLABLEN 63
46
47
#define NB_MINSALEN (sizeof(struct sockaddr_nb))
48
49
/*
50
* name types
51
*/
52
#define NBT_WKSTA 0x00
53
#define NBT_MESSENGER 0x03
54
#define NBT_RAS_SERVER 0x06
55
#define NBT_DOMAIN_MASTER_BROWSER 0x1B
56
#define NBT_DOMAIN_CONTROLLER 0x1C
57
#define NBT_MASTER_BROWSER 0x1D
58
#define NBT_NETDDE 0x1F
59
#define NBT_SERVER 0x20
60
#define NBT_RAS_CLIENT 0x21
61
62
/*
63
* Session packet types
64
*/
65
#define NB_SSN_MESSAGE 0x0
66
#define NB_SSN_REQUEST 0x81
67
#define NB_SSN_POSRESP 0x82
68
#define NB_SSN_NEGRESP 0x83
69
#define NB_SSN_RTGRESP 0x84
70
#define NB_SSN_KEEPALIVE 0x85
71
72
/*
73
* resolver: Opcodes
74
*/
75
#define NBNS_OPCODE_QUERY 0x00
76
#define NBNS_OPCODE_REGISTER 0x05
77
#define NBNS_OPCODE_RELEASE 0x06
78
#define NBNS_OPCODE_WACK 0x07
79
#define NBNS_OPCODE_REFRESH 0x08
80
#define NBNS_OPCODE_RESPONSE 0x10 /* or'ed with other opcodes */
81
82
/*
83
* resolver: NM_FLAGS
84
*/
85
#define NBNS_NMFLAG_BCAST 0x01
86
#define NBNS_NMFLAG_RA 0x08 /* recursion available */
87
#define NBNS_NMFLAG_RD 0x10 /* recursion desired */
88
#define NBNS_NMFLAG_TC 0x20 /* truncation occurred */
89
#define NBNS_NMFLAG_AA 0x40 /* authoritative answer */
90
91
/*
92
* resolver: Question types
93
*/
94
#define NBNS_QUESTION_TYPE_NB 0x0020
95
#define NBNS_QUESTION_TYPE_NBSTAT 0x0021
96
97
/*
98
* resolver: Question class
99
*/
100
#define NBNS_QUESTION_CLASS_IN 0x0001
101
102
/*
103
* resolver: Limits
104
*/
105
#define NBNS_MAXREDIRECTS 3 /* maximum number of accepted redirects */
106
#define NBDG_MAXSIZE 576 /* maximum nbns datagram size */
107
108
/*
109
* NETBIOS addressing
110
*/
111
union nb_tran {
112
struct sockaddr_in x_in;
113
/* struct sockaddr_ipx was here. */
114
};
115
116
struct nb_name {
117
u_int nn_type;
118
u_char nn_name[NB_NAMELEN + 1];
119
u_char * nn_scope;
120
};
121
122
/*
123
* Socket address
124
*/
125
struct sockaddr_nb {
126
u_char snb_len;
127
u_char snb_family;
128
union nb_tran snb_tran; /* transport */
129
u_char snb_name[1 + NB_ENCNAMELEN + 1]; /* encoded */
130
};
131
132
#define snb_addrin snb_tran.x_in
133
134
#endif /* !_NETSMB_NETBIOS_H_ */
135
136