|
Packit |
8480eb |
/* ----------------------------------------------------------------------- *
|
|
Packit |
8480eb |
*
|
|
Packit |
8480eb |
* rpc_subs.h - header file for rpc discovery
|
|
Packit |
8480eb |
*
|
|
Packit |
8480eb |
* Copyright 2004 Jeff Moyer <jmoyer@redaht.com> - All Rights Reserved
|
|
Packit |
8480eb |
* Copyright 2004-2006 Ian Kent <raven@themaw.net> - All Rights Reserved
|
|
Packit |
8480eb |
*
|
|
Packit |
8480eb |
* This program is free software; you can redistribute it and/or modify
|
|
Packit |
8480eb |
* it under the terms of the GNU General Public License as published by
|
|
Packit |
8480eb |
* the Free Software Foundation, Inc., 675 Mass Ave, Cambridge MA 02139,
|
|
Packit |
8480eb |
* USA; either version 2 of the License, or (at your option) any later
|
|
Packit |
8480eb |
* version; incorporated herein by reference.
|
|
Packit |
8480eb |
*
|
|
Packit |
8480eb |
* ----------------------------------------------------------------------- */
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
#ifndef _RPC_SUBS_H
|
|
Packit |
8480eb |
#define _RPC_SUBS_H
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
#include <rpc/rpc.h>
|
|
Packit Service |
27309f |
#include <rpc/types.h>
|
|
Packit |
8480eb |
#include <rpc/pmap_prot.h>
|
|
Packit |
8480eb |
#include <nfs/nfs.h>
|
|
Packit |
8480eb |
#include <linux/nfs2.h>
|
|
Packit |
8480eb |
#include <linux/nfs3.h>
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
#define NFS4_VERSION 4
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
/* rpc helper subs */
|
|
Packit |
8480eb |
#define RPC_PING_FAIL 0x0000
|
|
Packit |
8480eb |
#define RPC_PING_V2 NFS2_VERSION
|
|
Packit |
8480eb |
#define RPC_PING_V3 NFS3_VERSION
|
|
Packit |
8480eb |
#define RPC_PING_V4 NFS4_VERSION
|
|
Packit |
8480eb |
#define RPC_PING_UDP 0x0100
|
|
Packit |
8480eb |
#define RPC_PING_TCP 0x0200
|
|
Packit |
8480eb |
/*
|
|
Packit |
8480eb |
* Close options to allow some choice in how and where the TIMED_WAIT
|
|
Packit |
8480eb |
* happens.
|
|
Packit |
8480eb |
*/
|
|
Packit |
8480eb |
#define RPC_CLOSE_DEFAULT 0x0000
|
|
Packit |
8480eb |
#define RPC_CLOSE_ACTIVE RPC_CLOSE_DEFAULT
|
|
Packit |
8480eb |
#define RPC_CLOSE_NOLINGER 0x0001
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
#define PMAP_TOUT_UDP 3
|
|
Packit |
8480eb |
#define PMAP_TOUT_TCP 5
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
#define RPC_TOUT_UDP PMAP_TOUT_UDP
|
|
Packit |
8480eb |
#define RPC_TOUT_TCP PMAP_TOUT_TCP
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
#define HOST_ENT_BUF_SIZE 2048
|
|
Packit |
8480eb |
|
|
Packit Service |
27309f |
struct hostinfo {
|
|
Packit Service |
27309f |
char *name;
|
|
Packit Service |
27309f |
struct hostinfo *next;
|
|
Packit Service |
27309f |
};
|
|
Packit Service |
27309f |
|
|
Packit Service |
27309f |
struct exportinfo {
|
|
Packit Service |
27309f |
char *dir;
|
|
Packit Service |
27309f |
struct hostinfo *hosts;
|
|
Packit Service |
27309f |
struct exportinfo *next;
|
|
Packit Service |
27309f |
};
|
|
Packit Service |
27309f |
|
|
Packit |
8480eb |
struct conn_info {
|
|
Packit |
8480eb |
const char *host;
|
|
Packit |
8480eb |
struct sockaddr *addr;
|
|
Packit |
8480eb |
size_t addr_len;
|
|
Packit |
8480eb |
unsigned short port;
|
|
Packit |
8480eb |
unsigned long program;
|
|
Packit |
8480eb |
unsigned long version;
|
|
Packit |
8480eb |
int proto;
|
|
Packit |
8480eb |
unsigned int send_sz;
|
|
Packit |
8480eb |
unsigned int recv_sz;
|
|
Packit |
8480eb |
struct timeval timeout;
|
|
Packit |
8480eb |
unsigned int close_option;
|
|
Packit |
8480eb |
CLIENT *client;
|
|
Packit |
8480eb |
};
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
int rpc_udp_getclient(struct conn_info *, unsigned int, unsigned int);
|
|
Packit |
8480eb |
void rpc_destroy_udp_client(struct conn_info *);
|
|
Packit |
8480eb |
int rpc_tcp_getclient(struct conn_info *, unsigned int, unsigned int);
|
|
Packit |
8480eb |
void rpc_destroy_tcp_client(struct conn_info *);
|
|
Packit |
8480eb |
int rpc_portmap_getclient(struct conn_info *, const char *, struct sockaddr *, size_t, int, unsigned int);
|
|
Packit |
8480eb |
int rpc_portmap_getport(struct conn_info *, struct pmap *, unsigned short *);
|
|
Packit |
8480eb |
int rpc_ping_proto(struct conn_info *);
|
|
Packit |
8480eb |
int rpc_ping(const char *, int, unsigned int, long, long, unsigned int);
|
|
Packit |
8480eb |
double monotonic_elapsed(struct timespec, struct timespec);
|
|
Packit Service |
27309f |
struct exportinfo *rpc_get_exports(const char *host, long seconds, long micros, unsigned int option);
|
|
Packit Service |
27309f |
void rpc_exports_free(struct exportinfo *exports);
|
|
Packit |
8480eb |
const char *get_addr_string(struct sockaddr *, char *, socklen_t);
|
|
Packit |
8480eb |
|
|
Packit |
8480eb |
#endif
|
|
Packit |
8480eb |
|