/*	$OpenBSD: ddp_var.h,v 1.3 2007/12/14 18:33:40 deraadt Exp $	*/

/*
 * Copyright (c) 1990,1994 Regents of The University of Michigan.
 * All Rights Reserved.  See COPYRIGHT.
 */

/*
 * The following is the contents of the COPYRIGHT file from the
 * netatalk-1.4a2 distribution, from which this file is derived.
 */
/*
 * Copyright (c) 1990,1996 Regents of The University of Michigan.
 *
 * All Rights Reserved.
 *
 *    Permission to use, copy, modify, and distribute this software and
 *    its documentation for any purpose and without fee is hereby granted,
 *    provided that the above copyright notice appears in all copies and
 *    that both that copyright notice and this permission notice appear
 *    in supporting documentation, and that the name of The University
 *    of Michigan not be used in advertising or publicity pertaining to
 *    distribution of the software without specific, written prior
 *    permission. This software is supplied as is without expressed or
 *    implied warranties of any kind.
 *
 * This product includes software developed by the University of
 * California, Berkeley and its contributors.
 *
 * Solaris code is encumbered by the following:
 *
 *     Copyright (C) 1996 by Sun Microsystems Computer Co.
 *
 *     Permission to use, copy, modify, and distribute this software and
 *     its documentation for any purpose and without fee is hereby
 *     granted, provided that the above copyright notice appear in all
 *     copies and that both that copyright notice and this permission
 *     notice appear in supporting documentation.  This software is
 *     provided "as is" without express or implied warranty.
 *
 * Research Systems Unix Group
 * The University of Michigan
 * c/o Wesley Craig
 * 535 W. William Street
 * Ann Arbor, Michigan
 * +1-313-764-2278
 * netatalk@umich.edu
 */
/*
 * None of the Solaris code mentioned is included in OpenBSD.
 * This code also relies heavily on previous effort in FreeBSD and NetBSD.
 */

#ifndef _NETATALK_DDP_VAR_H_
#define _NETATALK_DDP_VAR_H_
struct ddpcb {
    struct sockaddr_at	ddp_fsat, ddp_lsat;
    struct route	ddp_route;
    struct socket	*ddp_socket;
    struct ddpcb	*ddp_prev, *ddp_next;
    struct ddpcb	*ddp_pprev, *ddp_pnext;
};

#define sotoddpcb(so)	((struct ddpcb *)(so)->so_pcb)

struct ddpstat {
    u_long	ddps_short;		/* short header packets received */
    u_long	ddps_long;		/* long header packets received */
    u_long	ddps_nosum;		/* no checksum */
    u_long	ddps_badsum;		/* bad checksum */
    u_long	ddps_tooshort;		/* packet too short */
    u_long	ddps_toosmall;		/* not enough data */
    u_long	ddps_forward;		/* packets forwarded */
    u_long	ddps_cantforward;	/* packets rcvd for unreachable dest */
    u_long	ddps_nosockspace;	/* no space in sockbuf for packet */
};

/*
 * Names for DDP sysctl objects
 */
#define DDPCTL_STATS		1 /* DDP statistics */
#define DDPCTL_MAXID		2

#define DDPCTL_NAMES { \
	{ 0, 0 }, \
	{ "stats",	CTLTYPE_STRUCT } \
}

#define UDPCTL_VARS { \
	NULL \
}

#ifdef _KERNEL
extern struct ddpcb		*ddp_ports[ ATPORT_LAST ];
extern struct ddpcb		*ddpcb;
extern struct ddpstat		ddpstat;

int	 ddp_sysctl(int *, u_int, void *, size_t *, void *, size_t);

#endif

#endif /* _NETATALK_DDP_VAR_H_ */