File: gp_xdr.c

package info (click to toggle)
gssproxy 0.8.0-1.1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 2,988 kB
  • sloc: ansic: 17,989; sh: 5,011; python: 1,064; xml: 535; makefile: 394
file content (29 lines) | stat: -rw-r--r-- 696 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/* Copyright (C) 2013 the GSS-PROXY contributors, see COPYING for license */

#include "rpcgen/gp_xdr.h"

bool_t gp_xdr_uint64_t(XDR *xdrs, uint64_t *objp)
{
    uint32_t h;
    uint32_t l;

    switch(xdrs->x_op) {
    case XDR_ENCODE:
        h = (uint32_t)((*objp) >> 32);
        l = (uint32_t)(*objp);
        if (!xdr_u_int32(xdrs, &h) || !xdr_u_int32(xdrs, &l)) {
            return FALSE;
        }
        return TRUE;
    case XDR_DECODE:
        if (!xdr_u_int32(xdrs, &h) || !xdr_u_int32(xdrs, &l)) {
            return FALSE;
        }
        *objp = (((uint64_t)h) << 32) | l;
        return TRUE;
    case XDR_FREE:
        return TRUE;
    default:
        return FALSE;
    }
}