summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2012-08-06 09:29:40 +0200
committerStefan Metzmacher <metze@samba.org>2012-08-07 11:16:36 +0200
commit357110c10be1e4d2e295e3362bbd484463c8af78 (patch)
tree44d95dc53f7113a708c5b137e25ec6d1882fdec2
parent5ac4d3d27448c7ccc7e0ae0b7ee3c83409821d43 (diff)
downloadsamba-357110c10be1e4d2e295e3362bbd484463c8af78.tar.gz
samba-357110c10be1e4d2e295e3362bbd484463c8af78.tar.bz2
samba-357110c10be1e4d2e295e3362bbd484463c8af78.zip
s3:smb2_server: introduce a smbd_smb2_dispatch_table (for now just with names)
metze
-rw-r--r--source3/smbd/smb2_server.c68
1 files changed, 46 insertions, 22 deletions
diff --git a/source3/smbd/smb2_server.c b/source3/smbd/smb2_server.c
index 625859e914..8972892850 100644
--- a/source3/smbd/smb2_server.c
+++ b/source3/smbd/smb2_server.c
@@ -32,34 +32,58 @@
#define OUTVEC_ALLOC_SIZE (SMB2_HDR_BODY + 9)
-static const char *smb2_names[] = {
- "SMB2_NEGPROT",
- "SMB2_SESSSETUP",
- "SMB2_LOGOFF",
- "SMB2_TCON",
- "SMB2_TDIS",
- "SMB2_CREATE",
- "SMB2_CLOSE",
- "SMB2_FLUSH",
- "SMB2_READ",
- "SMB2_WRITE",
- "SMB2_LOCK",
- "SMB2_IOCTL",
- "SMB2_CANCEL",
- "SMB2_KEEPALIVE",
- "SMB2_FIND",
- "SMB2_NOTIFY",
- "SMB2_GETINFO",
- "SMB2_SETINFO",
- "SMB2_BREAK"
+static const struct smbd_smb2_dispatch_table {
+ uint16_t opcode;
+ const char *name;
+} smbd_smb2_table[] = {
+#define _OP(o) .opcode = o, .name = #o
+ {
+ _OP(SMB2_OP_NEGPROT),
+ },{
+ _OP(SMB2_OP_SESSSETUP),
+ },{
+ _OP(SMB2_OP_LOGOFF),
+ },{
+ _OP(SMB2_OP_TCON),
+ },{
+ _OP(SMB2_OP_TDIS),
+ },{
+ _OP(SMB2_OP_CREATE),
+ },{
+ _OP(SMB2_OP_CLOSE),
+ },{
+ _OP(SMB2_OP_FLUSH),
+ },{
+ _OP(SMB2_OP_READ),
+ },{
+ _OP(SMB2_OP_WRITE),
+ },{
+ _OP(SMB2_OP_LOCK),
+ },{
+ _OP(SMB2_OP_IOCTL),
+ },{
+ _OP(SMB2_OP_CANCEL),
+ },{
+ _OP(SMB2_OP_KEEPALIVE),
+ },{
+ _OP(SMB2_OP_FIND),
+ },{
+ _OP(SMB2_OP_NOTIFY),
+ },{
+ _OP(SMB2_OP_GETINFO),
+ },{
+ _OP(SMB2_OP_SETINFO),
+ },{
+ _OP(SMB2_OP_BREAK),
+ }
};
const char *smb2_opcode_name(uint16_t opcode)
{
- if (opcode > 0x12) {
+ if (opcode >= ARRAY_SIZE(smbd_smb2_table)) {
return "Bad SMB2 opcode";
}
- return smb2_names[opcode];
+ return smbd_smb2_table[opcode].name;
}
static void print_req_vectors(struct smbd_smb2_request *req)