Logo Search packages:      
Sourcecode: yaird version File versions  Download package

sunrpc.h

/*
 * sunrpc.h - open-coded SunRPC structures
 */
#include <sys/types.h>
#include <linux/types.h>      /* for __u32 */

#define SUNRPC_PORT     111
#define MOUNT_PORT      627

#define RPC_CALL  0
#define RPC_REPLY 1

#define PORTMAP_PROGRAM 100000
#define NLM_PROGRAM     100021

#define RPC_PMAP_PROGRAM      100000
#define RPC_PMAP_VERSION      2
#define RPC_PMAP_PORT         111

#define PMAP_PROC_NULL        0
#define PMAP_PROC_SET         1
#define PMAP_PROC_UNSET       2
#define PMAP_PROC_GETPORT     3
#define PMAP_PROC_DUMP        4

#define LAST_FRAG 0x80000000

#define REPLY_OK  0
#define REPLY_DENIED    1

#define SUCCESS         0
#define PROG_UNAVAIL    1
#define PROG_MISMATCH   2
#define PROC_UNAVAIL    3
#define GARBAGE_ARGS    4
#define SYSTEM_ERR      5

struct rpc_udp_header
{
      __u32 xid;
      __u32 msg_type;
};

struct rpc_header
{
      __u32 frag_hdr;
      struct rpc_udp_header udp;
};

struct rpc_call
{
      struct rpc_header hdr;
      __u32 rpc_vers;

      __u32 program;
      __u32 prog_vers;
      __u32 proc;
      __u32 cred_flavor;

      __u32 cred_len;
      __u32 vrf_flavor;
      __u32 vrf_len;
};

struct rpc_reply 
{
      struct rpc_header hdr;
      __u32 reply_state;
      __u32 vrf_flavor;
      __u32 vrf_len;
      __u32 state;
};

struct rpc
{
      struct rpc_call *call;
      size_t call_len;
      struct rpc_reply *reply;
      size_t reply_len;
};

struct client;

typedef int (*call_stub)(struct client *, struct rpc *);

struct client
{
      int sock;
      call_stub call_stub;
};

#define CLI_RESVPORT    00000001

struct client *tcp_client(__u32 server, __u16 port, __u32 flags);
struct client *udp_client(__u32 server, __u16 port, __u32 flags);
void client_free(struct client *client);

int rpc_call(struct client *client, struct rpc *rpc);

__u32 portmap(__u32 server, __u32 program, __u32 version, __u32 proto);

Generated by  Doxygen 1.6.0   Back to index