1 |
62 |
marcus.erl |
/*
|
2 |
|
|
* fs/cifs/rfc1002pdu.h
|
3 |
|
|
*
|
4 |
|
|
* Protocol Data Unit definitions for RFC 1001/1002 support
|
5 |
|
|
*
|
6 |
|
|
* Copyright (c) International Business Machines Corp., 2004
|
7 |
|
|
* Author(s): Steve French (sfrench@us.ibm.com)
|
8 |
|
|
*
|
9 |
|
|
* This library is free software; you can redistribute it and/or modify
|
10 |
|
|
* it under the terms of the GNU Lesser General Public License as published
|
11 |
|
|
* by the Free Software Foundation; either version 2.1 of the License, or
|
12 |
|
|
* (at your option) any later version.
|
13 |
|
|
*
|
14 |
|
|
* This library is distributed in the hope that it will be useful,
|
15 |
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
17 |
|
|
* the GNU Lesser General Public License for more details.
|
18 |
|
|
*
|
19 |
|
|
* You should have received a copy of the GNU Lesser General Public License
|
20 |
|
|
* along with this library; if not, write to the Free Software
|
21 |
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
22 |
|
|
*/
|
23 |
|
|
|
24 |
|
|
/* NB: unlike smb/cifs packets, the RFC1002 structures are big endian */
|
25 |
|
|
|
26 |
|
|
/* RFC 1002 session packet types */
|
27 |
|
|
#define RFC1002_SESSION_MESSAGE 0x00
|
28 |
|
|
#define RFC1002_SESSION_REQUEST 0x81
|
29 |
|
|
#define RFC1002_POSITIVE_SESSION_RESPONSE 0x82
|
30 |
|
|
#define RFC1002_NEGATIVE_SESSION_RESPONSE 0x83
|
31 |
|
|
#define RFC1002_RETARGET_SESSION_RESPONSE 0x84
|
32 |
|
|
#define RFC1002_SESSION_KEEP_ALIVE 0x85
|
33 |
|
|
|
34 |
|
|
/* RFC 1002 flags (only one defined */
|
35 |
|
|
#define RFC1002_LENGTH_EXTEND 0x80 /* high order bit of length (ie +64K) */
|
36 |
|
|
|
37 |
|
|
struct rfc1002_session_packet {
|
38 |
|
|
__u8 type;
|
39 |
|
|
__u8 flags;
|
40 |
|
|
__u16 length;
|
41 |
|
|
union {
|
42 |
|
|
struct {
|
43 |
|
|
__u8 called_len;
|
44 |
|
|
__u8 called_name[32];
|
45 |
|
|
__u8 scope1; /* null */
|
46 |
|
|
__u8 calling_len;
|
47 |
|
|
__u8 calling_name[32];
|
48 |
|
|
__u8 scope2; /* null */
|
49 |
|
|
} __attribute__((packed)) session_req;
|
50 |
|
|
struct {
|
51 |
|
|
__u32 retarget_ip_addr;
|
52 |
|
|
__u16 port;
|
53 |
|
|
} __attribute__((packed)) retarget_resp;
|
54 |
|
|
__u8 neg_ses_resp_error_code;
|
55 |
|
|
/* POSITIVE_SESSION_RESPONSE packet does not include trailer.
|
56 |
|
|
SESSION_KEEP_ALIVE packet also does not include a trailer.
|
57 |
|
|
Trailer for the SESSION_MESSAGE packet is SMB/CIFS header */
|
58 |
|
|
} __attribute__((packed)) trailer;
|
59 |
|
|
} __attribute__((packed));
|
60 |
|
|
|
61 |
|
|
/* Negative Session Response error codes */
|
62 |
|
|
#define RFC1002_NOT_LISTENING_CALLED 0x80 /* not listening on called name */
|
63 |
|
|
#define RFC1002_NOT_LISTENING_CALLING 0x81 /* not listening on calling name */
|
64 |
|
|
#define RFC1002_NOT_PRESENT 0x82 /* called name not present */
|
65 |
|
|
#define RFC1002_INSUFFICIENT_RESOURCE 0x83
|
66 |
|
|
#define RFC1002_UNSPECIFIED_ERROR 0x8F
|
67 |
|
|
|
68 |
|
|
/* RFC 1002 Datagram service packets are not defined here as they
|
69 |
|
|
are not needed for the network filesystem client unless we plan on
|
70 |
|
|
implementing broadcast resolution of the server ip address (from
|
71 |
|
|
server netbios name). Currently server names are resolved only via DNS
|
72 |
|
|
(tcp name) or ip address or an /etc/hosts equivalent mapping to ip address.*/
|
73 |
|
|
|
74 |
|
|
#define DEFAULT_CIFS_CALLED_NAME "*SMBSERVER "
|