qif.h revision ab25eeb551a4be927a4b6ae2cf8aff7ed17decb4
/*
* Copyright (C) 2003 by Darren Reed.
*
* See the IPFILTER.LICENCE file for details on licencing.
*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef sun
# include <sys/dditypes.h>
#endif
#ifdef IRE_ILL_CN
typedef union {
struct sockaddr_in qfa_in;
struct sockaddr_in6 qfa_in6;
} qfa_t;
#else
# if SOLARIS2 <= 7
# else
# endif
# ifdef USE_INET6
# endif
#endif
typedef struct s_ill_s {
union {
struct sockaddr_in in;
struct sockaddr_in6 in6;
} localaddr;
union {
struct sockaddr_in in;
struct sockaddr_in6 in6;
} netmask;
union {
struct sockaddr_in in;
struct sockaddr_in6 in6;
} broadaddr;
union {
struct sockaddr_in in;
struct sockaddr_in6 in6;
} dstaddr;
} s_ill_t;
typedef struct qif {
/* for alignment reasons, the lock is first. */
struct qifplock {
#ifdef sun
#endif
int pt_refcnt;
int pt_access;
} qf_ptl;
void *qf_ill;
/* statistical data */
/* other data for the NIC on this queue */
int qf_sap; /* Service Access Point */
int qf_bound;
int qf_flags;
int qf_waitack;
int qf_max_frag; /* MTU for interface */
char *qf_members;
/* ON(10, NV) specific */
void *qf_data;
} qif_t;
typedef struct qpktinfo {
/* data that changes per-packet */
void *qpi_ill; /* COPIED */
char *qpi_name; /* points to qf_real->qf_name */
void *qpi_data; /* where layer 3 header starts */
int qpi_flags; /* COPIED */
int qpi_max_frag; /* COPIED */
} qpktinfo_t;
#ifdef sun
# if SOLARIS2 <= 7
# define QF_V4_ADDR(x) \
# define QF_V4_BROADCAST(x) \
# else
# define QF_V4_ADDR(x) \
# define QF_V4_BROADCAST(x) \
# endif
# define QF_V4_NETMASK(x) \
# define QF_V4_PEERADDR(x) \
# ifdef USE_INET6
# define QF_V6_BROADCAST(x) \
# define QF_V6_NETMASK(x) \
# define QF_V6_PEERADDR(x) \
# endif
#endif
#ifdef __hpux
# define QF_V4_BROADCAST(x) 0
# define QF_V4_NETMASK(x) 0xffffffff
# define QF_V4_PEERADDR(x) 0
# ifdef USE_INET6
# define QF_V6_BROADCAST(x) 0
# define QF_V6_NETMASK(x) 0
# define QF_V6_PEERADDR(x) 0
# endif
#endif
#define QF_GROUP 0x0001
#define QF_IPMP 0x0002
extern int qif_attach(queue_t *);
extern int qif_startup(void);
extern void qif_stop(void);
extern void *qif_iflookup(char *, int);
#ifdef __hpux
struct irinfo_s;
#endif
extern int qif_verbose;
extern void qif_nd_init(void);
extern void qif_hl_set(char *);
extern void qif_ipmp_delete(char *);
extern void qif_ipmp_update(char *);
extern void qif_ipmp_syncmaster(struct qif *, const int);
extern void qif_ipmp_syncslave(struct qif *, const int);
#ifndef IRE_ILL_CN
extern void qif_ire_walker(ire_t *, void *);
#endif
extern kmutex_t s_ill_g_head_lock;
extern s_ill_t *s_ill_g_head;