tdr: teach TDR about uint1632 enums
authorAndrew Tridgell <tridge@samba.org>
Tue, 6 Oct 2009 19:39:03 +0000 (06:39 +1100)
committerJeremy Allison <jra@samba.org>
Tue, 3 Nov 2009 21:24:52 +0000 (13:24 -0800)
TDB doesn't have NDR64, but it needs to know how to map the new types
from pidl
(cherry picked from commit 1d0fb1e0fba3cf4d04d4602ed4e717912804e5de)

lib/tdr/tdr.c
pidl/lib/Parse/Pidl/Samba4/TDR.pm

index 293436ed5e3474a942a1ab53efadbe65892aec3e..ce67003f8bfdfae5a618ad20ea5fc17b858c5c13 100644 (file)
@@ -92,6 +92,11 @@ NTSTATUS tdr_pull_uint16(struct tdr_pull *tdr, TALLOC_CTX *ctx, uint16_t *v)
        return NT_STATUS_OK;
 }
 
+NTSTATUS tdr_pull_uint1632(struct tdr_pull *tdr, TALLOC_CTX *ctx, uint16_t *v)
+{
+       return tdr_pull_uint16(tdr, ctx, v);
+}
+
 NTSTATUS tdr_push_uint16(struct tdr_push *tdr, const uint16_t *v)
 {
        TDR_PUSH_NEED_BYTES(tdr, 2);
@@ -100,6 +105,11 @@ NTSTATUS tdr_push_uint16(struct tdr_push *tdr, const uint16_t *v)
        return NT_STATUS_OK;
 }
 
+NTSTATUS tdr_push_uint1632(struct tdr_push *tdr, const uint16_t *v)
+{
+       return tdr_push_uint16(tdr, v);
+}
+
 NTSTATUS tdr_print_uint16(struct tdr_print *tdr, const char *name, uint16_t *v)
 {
        tdr->print(tdr, "%-25s: 0x%02x (%u)", name, *v, *v);
index a6b74a0ba45d0d51265ae832d7ca9d82113ea577..c0749304ef32a11b96ff357c2b0fd1f00141e245 100644 (file)
@@ -7,6 +7,7 @@ package Parse::Pidl::Samba4::TDR;
 use Parse::Pidl qw(fatal);
 use Parse::Pidl::Util qw(has_property ParseExpr is_constant);
 use Parse::Pidl::Samba4 qw(is_intree choose_header);
+use Parse::Pidl::Typelist qw(mapTypeName);
 
 use Exporter;
 @ISA = qw(Exporter);
@@ -195,15 +196,16 @@ sub ParserEnum($$$$)
 {
        my ($self,$e,$t,$p) = @_;
        my $bt = Parse::Pidl::Typelist::enum_type_fn($e);
+       my $mt = mapTypeName($bt);
 
        $self->fn_declare($p, "NTSTATUS tdr_$t\_$e->{NAME} (struct tdr_$t *tdr".typearg($t).", enum $e->{NAME} *v)");
        $self->pidl("{");
        if ($t eq "pull") {
-               $self->pidl("\t$bt\_t r;");
+               $self->pidl("\t$mt r;");
                $self->pidl("\tTDR_CHECK(tdr_$t\_$bt(tdr, mem_ctx, \&r));");
                $self->pidl("\t*v = r;");
        } elsif ($t eq "push") {
-               $self->pidl("\tTDR_CHECK(tdr_$t\_$bt(tdr, ($bt\_t *)v));");
+               $self->pidl("\tTDR_CHECK(tdr_$t\_$bt(tdr, ($mt *)v));");
        } elsif ($t eq "print") {
                $self->pidl("\t/* FIXME */");
        }