Ignore:
Timestamp:
Nov 24, 2016, 1:14:11 PM (9 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: update vendor to version 4.4.3

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vendor/current/source3/include/ntdomain.h

    r919 r988  
    2222
    2323#ifndef _NT_DOMAIN_H /* _NT_DOMAIN_H */
    24 #define _NT_DOMAIN_H
    25 
    26 #include "librpc/rpc/dcerpc.h"
     24#define _NT_DOMAIN_H
    2725
    2826/*
     
    3129 */
    3230
    33 typedef struct _output_data {
    34         /*
    35          * Raw RPC output data. This does not include RPC headers or footers.
    36          */
    37         DATA_BLOB rdata;
    38 
    39         /* The amount of data sent from the current rdata struct. */
    40         uint32 data_sent_length;
    41 
    42         /*
    43          * The current fragment being returned. This inclues
    44          * headers, data and authentication footer.
    45          */
    46         DATA_BLOB frag;
    47 
    48         /* The amount of data sent from the current PDU. */
    49         uint32 current_pdu_sent;
    50 } output_data;
    51 
    52 typedef struct _input_data {
    53         /*
    54          * This is the current incoming pdu. The data here
    55          * is collected via multiple writes until a complete
    56          * pdu is seen, then the data is copied into the in_data
    57          * structure. The maximum size of this is 0x1630 (RPC_MAX_PDU_FRAG_LEN).
    58          * If length is zero, then we are at the start of a new
    59          * pdu.
    60          */
    61         DATA_BLOB pdu;
    62 
    63         /*
    64          * The amount of data needed to complete the in_pdu.
    65          * If this is zero, then we are at the start of a new
    66          * pdu.
    67          */
    68         uint32 pdu_needed_len;
    69 
    70         /*
    71          * This is the collection of input data with all
    72          * the rpc headers and auth footers removed.
    73          * The maximum length of this (1Mb) is strictly enforced.
    74          */
    75         DATA_BLOB data;
    76 
    77 } input_data;
    78 
    79 struct handle_list;
    80 
    81 typedef struct pipe_rpc_fns {
    82 
    83         struct pipe_rpc_fns *next, *prev;
    84 
    85         /* RPC function table associated with the current rpc_bind (associated by context) */
    86 
    87         const struct api_struct *cmds;
    88         int n_cmds;
    89         uint32 context_id;
    90         struct ndr_syntax_id syntax;
    91 
    92         /*
    93          * shall we allow "connect" auth level for this interface ?
    94          */
    95         bool allow_connect;
    96 } PIPE_RPC_FNS;
    97 
    98 /*
    99  * Different auth types we support.
    100  * Can't keep in sync with wire values as spnego wraps different auth methods.
    101  */
    102 
    10331struct gse_context;
    10432
    105 struct dcesrv_ep_entry_list;
    106 
    107 /*
    108  * DCE/RPC-specific samba-internal-specific handling of data on
    109  * NamedPipes.
    110  */
    111 
    112 struct pipes_struct {
    113         struct pipes_struct *next, *prev;
    114 
    115         struct client_address *client_id;
    116         struct client_address *server_id;
    117 
    118         enum dcerpc_transport_t transport;
    119 
    120         struct auth_serversupplied_info *session_info;
    121         struct messaging_context *msg_ctx;
    122 
    123         struct ndr_syntax_id syntax;
    124         struct dcesrv_ep_entry_list *ep_entries;
    125 
    126         /* linked list of rpc dispatch tables associated
    127            with the open rpc contexts */
    128 
    129         PIPE_RPC_FNS *contexts;
    130 
    131         struct pipe_auth_data auth;
    132 
    133         bool ncalrpc_as_system;
    134 
    135         /*
    136          * Set to true when an RPC bind has been done on this pipe.
    137          */
    138 
    139         bool pipe_bound;
    140 
    141         /*
    142          * States we can be in.
    143          */
    144         bool allow_alter;
    145         bool allow_bind;
    146         bool allow_auth3;
    147 
    148         /*
    149          * Set the DCERPC_FAULT to return.
    150          */
    151 
    152         int fault_state;
    153 
    154         /*
    155          * Set to RPC_BIG_ENDIAN when dealing with big-endian PDU's
    156          */
    157 
    158         bool endian;
    159 
    160         /*
    161          * Struct to deal with multiple pdu inputs.
    162          */
    163 
    164         input_data in_data;
    165 
    166         /*
    167          * Struct to deal with multiple pdu outputs.
    168          */
    169 
    170         output_data out_data;
    171 
    172         /* This context is used for PDU data and is freed between each pdu.
    173                 Don't use for pipe state storage. */
    174         TALLOC_CTX *mem_ctx;
    175 
    176         /* handle database to use on this pipe. */
    177         struct handle_list *pipe_handles;
    178 
    179         /* call id retrieved from the pdu header */
    180         uint32_t call_id;
    181 
    182         /* operation number retrieved from the rpc header */
    183         uint16_t opnum;
    184 
    185         /* private data for the interface implementation */
    186         void *private_data;
    187 
    188 };
    189 
    190 struct api_struct { 
    191         const char *name;
    192         uint8 opnum;
    193         bool (*fn) (struct pipes_struct *);
    194 };
    195 
    196 /* The following definitions come from rpc_server/rpc_handles.c  */
    197 
    198 size_t num_pipe_handles(struct pipes_struct *p);
    199 bool init_pipe_handles(struct pipes_struct *p, const struct ndr_syntax_id *syntax);
    200 bool create_policy_hnd(struct pipes_struct *p, struct policy_handle *hnd, void *data_ptr);
    201 bool find_policy_by_hnd(struct pipes_struct *p, const struct policy_handle *hnd,
    202                         void **data_p);
    203 bool close_policy_hnd(struct pipes_struct *p, struct policy_handle *hnd);
    204 void close_policy_by_pipe(struct pipes_struct *p);
    205 bool pipe_access_check(struct pipes_struct *p);
    206 
    207 void *_policy_handle_create(struct pipes_struct *p, struct policy_handle *hnd,
    208                             uint32_t access_granted, size_t data_size,
    209                             const char *type, NTSTATUS *pstatus);
    210 #define policy_handle_create(_p, _hnd, _access, _type, _pstatus) \
    211         (_type *)_policy_handle_create((_p), (_hnd), (_access), sizeof(_type), #_type, \
    212                                        (_pstatus))
    213 
    214 void *_policy_handle_find(struct pipes_struct *p,
    215                           const struct policy_handle *hnd,
    216                           uint32_t access_required, uint32_t *paccess_granted,
    217                           const char *name, const char *location,
    218                           NTSTATUS *pstatus);
    219 #define policy_handle_find(_p, _hnd, _access_required, _access_granted, _type, _pstatus) \
    220         (_type *)_policy_handle_find((_p), (_hnd), (_access_required), \
    221                                      (_access_granted), #_type, __location__, (_pstatus))
     33#include "rpc_server/rpc_pipes.h"
    22234
    22335#include "rpc_server/srv_pipe_register.h"
Note: See TracChangeset for help on using the changeset viewer.