*/
+#include "librpc/rpc/dcerpc.h"
+
/*
* struct definition for connecting to a dcerpc inferface
*/
LIBNET_RPC_CONNECT_SERVER, /* connect to a standalone rpc server */
LIBNET_RPC_CONNECT_PDC, /* connect to a domain pdc (resolves domain
name to a pdc address before connecting) */
- LIBNET_RPC_CONNECT_BINDING /* specified binding string */
+ LIBNET_RPC_CONNECT_DC, /* connect to any DC (resolves domain
+ name to a DC address before connecting) */
+ LIBNET_RPC_CONNECT_BINDING, /* specified binding string */
+ LIBNET_RPC_CONNECT_DC_INFO /* connect to a DC and provide basic domain
+ information (name, realm, sid, guid) */
};
struct libnet_RpcConnect {
enum libnet_RpcConnect_level level;
struct {
- const char *domain_name;
+ const char *name;
const char *binding;
- const char *dcerpc_iface_name;
- const char *dcerpc_iface_uuid;
- uint32_t dcerpc_iface_version;
+ const struct dcerpc_interface_table *dcerpc_iface;
} in;
struct {
struct dcerpc_pipe *dcerpc_pipe;
+
+ /* parameters provided in LIBNET_RPC_CONNECT_DC_INFO level, null otherwise */
+ const char *domain_name;
+ struct dom_sid *domain_sid;
+ const char *realm; /* these parameters are only present if */
+ struct GUID *guid; /* the remote server is known to be AD */
+
const char *error_string;
} out;
};
+
+
+/*
+ * Monitor messages sent from libnet_rpc.c functions
+ */
+
+struct msg_net_lookup_dc {
+ const char *domain_name;
+ const char *hostname;
+ const char *address;
+};
+
+
+struct msg_net_pipe_connected {
+ const char *host;
+ const char *endpoint;
+ enum dcerpc_transport_t transport;
+};