~zulcss/samba/samab-3.4-test

« back to all changes in this revision

Viewing changes to source4/lib/tdr/tdr.h

  • Committer: Chuck Short
  • Date: 2010-05-20 18:57:13 UTC
  • Revision ID: zulcss@ubuntu.com-20100520185713-hwqvf9t50z830wck
Initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* 
 
2
   Unix SMB/CIFS implementation.
 
3
   TDR definitions
 
4
   Copyright (C) Jelmer Vernooij 2005
 
5
   
 
6
   This program is free software; you can redistribute it and/or modify
 
7
   it under the terms of the GNU General Public License as published by
 
8
   the Free Software Foundation; either version 3 of the License, or
 
9
   (at your option) any later version.
 
10
   
 
11
   This program is distributed in the hope that it will be useful,
 
12
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
   GNU General Public License for more details.
 
15
   
 
16
   You should have received a copy of the GNU General Public License
 
17
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
18
*/
 
19
 
 
20
#ifndef __TDR_H__
 
21
#define __TDR_H__
 
22
 
 
23
#include <talloc.h>
 
24
#include "../lib/util/charset/charset.h"
 
25
 
 
26
#define TDR_BIG_ENDIAN                  0x01
 
27
#define TDR_ALIGN2                      0x02
 
28
#define TDR_ALIGN4                      0x04
 
29
#define TDR_ALIGN8                      0x08
 
30
#define TDR_REMAINING                   0x10
 
31
 
 
32
struct tdr_pull {
 
33
        DATA_BLOB data;
 
34
        uint32_t offset;
 
35
        int flags;
 
36
        struct smb_iconv_convenience *iconv_convenience;
 
37
};
 
38
 
 
39
struct tdr_push {
 
40
        DATA_BLOB data;
 
41
        int flags;
 
42
        struct smb_iconv_convenience *iconv_convenience;
 
43
};
 
44
 
 
45
struct tdr_print {
 
46
        int level;
 
47
        void (*print)(struct tdr_print *, const char *, ...);
 
48
        int flags;
 
49
};
 
50
 
 
51
#define TDR_CHECK(call) do { NTSTATUS _status; \
 
52
                             _status = call; \
 
53
                             if (!NT_STATUS_IS_OK(_status)) \
 
54
                                return _status; \
 
55
                        } while (0)
 
56
 
 
57
#define TDR_ALLOC(ctx, s, n) do { \
 
58
                               (s) = talloc_array_size(ctx, sizeof(*(s)), n); \
 
59
                           if ((n) && !(s)) return NT_STATUS_NO_MEMORY; \
 
60
                           } while (0)
 
61
 
 
62
typedef NTSTATUS (*tdr_push_fn_t) (struct tdr_push *, const void *);
 
63
typedef NTSTATUS (*tdr_pull_fn_t) (struct tdr_pull *, TALLOC_CTX *, void *);
 
64
 
 
65
#include "lib/tdr/tdr_proto.h"
 
66
 
 
67
#endif /* __TDR_H__ */