1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-26 18:50:30 +03:00

librpc: Add NETWORK_INTERFACE_INFO IDL data structure

This is in preparation for adding NETWORK_INTERFACE_INFO Ioctl smbtorture test
case. This data structure is described in MS-SMB2 Sec. 2.2.32.5

Pair-Programmed-With: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Anubhav Rakshit <anubhav.rakshit@gmail.com>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
This commit is contained in:
Anubhav Rakshit 2014-06-16 15:30:18 +05:30 committed by Stefan Metzmacher
parent dbc1ad2965
commit 09fb44d122
3 changed files with 86 additions and 1 deletions

View File

@ -99,3 +99,48 @@ interface compression
uint16 format;
} compression_state;
}
interface netinterface
{
typedef [bitmap32bit] bitmap {
FSCTL_NET_IFACE_RSS_CAPABLE = 0x00000001,
FSCTL_NET_IFACE_RDMA_CAPABLE = 0x00000002
} fsctl_net_iface_capability;
typedef [enum16bit] enum {
FSCTL_NET_IFACE_AF_INET = 0x0002,
FSCTL_NET_IFACE_AF_INET6 = 0x0017
} fsctl_sockaddr_af;
typedef [flag(NDR_NOALIGN)] struct {
[value(0)] uint16 port;
[flag(NDR_BIG_ENDIAN)] ipv4address ipv4;
[value(0)] hyper reserved;
} fsctl_sockaddr_in;
typedef [flag(NDR_NOALIGN)] struct {
[value(0)] uint16 port;
[value(0)] uint32 flowinfo;
[flag(NDR_BIG_ENDIAN)] ipv6address ipv6;
[value(0)] uint32 scopeid;
} fsctl_sockaddr_in6;
typedef [nodiscriminant,flag(NDR_NOALIGN)] union {
[case (FSCTL_NET_IFACE_AF_INET)] fsctl_sockaddr_in saddr_in;
[case (FSCTL_NET_IFACE_AF_INET6)] fsctl_sockaddr_in6 saddr_in6;
} fsctl_sockaddr_union;
typedef [flag(NDR_NOALIGN)] struct {
fsctl_sockaddr_af family;
[subcontext(0),subcontext_size(126),switch_is(family)] fsctl_sockaddr_union saddr;
} fsctl_sockaddr_storage;
typedef [public,relative_base,noprint] struct {
[relative] fsctl_net_iface_info *next;
uint32 ifindex;
fsctl_net_iface_capability capability;
[value(0)] uint32 reserved;
hyper linkspeed;
fsctl_sockaddr_storage sockaddr;
} fsctl_net_iface_info;
}

40
librpc/ndr/ndr_ioctl.c Normal file
View File

@ -0,0 +1,40 @@
/*
Unix SMB/CIFS implementation.
Manually parsed structures for IOCTL/FSCTL
Copyright (C) Stefan Metzmacher 2014
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "includes.h"
#include "librpc/gen_ndr/ndr_ioctl.h"
_PUBLIC_ void ndr_print_fsctl_net_iface_info(struct ndr_print *ndr, const char *name, const struct fsctl_net_iface_info *r)
{
ndr_print_struct(ndr, name, "fsctl_net_iface_info");
if (r == NULL) { ndr_print_null(ndr); return; }
ndr->depth++;
ndr_print_ptr(ndr, "next", r->next);
ndr_print_uint32(ndr, "ifindex", r->ifindex);
ndr_print_fsctl_net_iface_capability(ndr, "capability", r->capability);
ndr_print_uint32(ndr, "reserved", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->reserved);
ndr_print_hyper(ndr, "linkspeed", r->linkspeed);
ndr_print_fsctl_sockaddr_storage(ndr, "sockaddr", &r->sockaddr);
ndr->depth--;
if (r->next) {
ndr_print_fsctl_net_iface_info(ndr, "next", r->next);
}
}

View File

@ -616,7 +616,7 @@ bld.SAMBA_SUBSYSTEM('RPC_NDR_DNSSERVER',
)
bld.SAMBA_SUBSYSTEM('NDR_IOCTL',
source='gen_ndr/ndr_ioctl.c',
source='gen_ndr/ndr_ioctl.c ndr/ndr_ioctl.c',
public_deps='ndr'
)