components/proftpd/dtrace/ftp_provider_impl.h
author Stefan Teleman <stefan.teleman@oracle.com>
Mon, 16 Mar 2015 13:28:51 -0700
changeset 3955 4e310c8109a5
parent 3932 1b7dd68f6aa9
permissions -rw-r--r--
20461144 LIBSTDCXX should have some master test results to compare against 20021138 stdcxx fails to build with studio 12.4 fcs 20460634 NEON should have some master test results to compare against 20460896 OCAML has no tests and no master test results files 19931870 "gmake test" failures for libneon

/*
 * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
 */

#ifndef _FTP_PROVIDER_IMPL_H
#define	_FTP_PROVIDER_IMPL_H

/*
 * This structure must match the definition of same in ftp.d.
 */
typedef struct ftpproto {
	uint32_t ftp_user;	/* user name */
	uint32_t ftp_cmd;	/* FTP command */
	uint32_t ftp_pathname;  /* path of file being operated upon */
	uint32_t ftp_raddr;	/* remote address, as IPv6 address */
	uint32_t ftp_fd;	/* fd for transfer, if any */
	uint32_t ftp_pad;	/* padding for copyin() */
	uint64_t ftp_nbytes;	/* bytes transferred, if any */
} ftpproto_t;

#define	FTP_TRANSFER_PROTO(proto, fh, len) \
do { \
	bzero((proto), sizeof (struct ftpproto)); \
	(proto)->ftp_user = (uint32_t)session.user; \
	(proto)->ftp_cmd = (uint32_t)session.curr_cmd; \
	(proto)->ftp_pathname = (uint32_t)((fh)->fh_path); \
	(proto)->ftp_raddr = \
	    (int32_t)pr_netaddr_get_ipstr(session.c->remote_addr); \
	(proto)->ftp_fd = (uint32_t)((fh)->fh_fd); \
	(proto)->ftp_nbytes = (len); \
} while (0)

extern int ftp_transfer_start_enabled(void);
extern int ftp_transfer_done_enabled(void);
extern void ftp_transfer_start(struct ftpproto *);
extern void ftp_transfer_done(struct ftpproto *);

#endif /* _FTP_PROVIDER_IMPL_H */