routed.h revision 3173664e967186de0a5f0e61548c25996fa6d37f
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
/*
* Copyright (c) 1983, 1989, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgment:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Routing Information Protocol
*
* Derived from Xerox NS Routing Information Protocol
* by changing 32-bit net numbers to sockaddr's and
* padding stuff to 32-bit boundaries.
*/
#ifndef _PROTOCOLS_ROUTED_H
#define _PROTOCOLS_ROUTED_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
/* The RIPv2 protocol is described in RFC 2453 */
#define RIPv1 1
#define RIPv2 2
#ifndef RIPVERSION
#define RIPVERSION RIPv1
#endif
#define RIP_PORT 520
#if RIPVERSION == RIPv1
struct netinfo {
};
#else
struct netinfo {
#define RIP_AF_UNSPEC 0
#define RIP_AF_AUTH 0xffff
#define RIP_DEFAULT 0
};
#endif /* RIPv1 */
/* RIPv2 authentication */
struct netauth {
#define RIP_AUTH_NONE 0
union {
#define RIP_AUTH_PW_LEN 16
struct a_md5 {
#define RIP_AUTH_MD5_LEN RIP_AUTH_PW_LEN
} a_md5;
} au;
};
struct rip_emetric {
};
struct rip_sec_entry {
};
struct rip {
union { /* variable length... */
struct {
} ru_tsol;
} ripun;
};
struct entryinfo {
struct sockaddr rtu_router;
short rtu_flags;
short rtu_state;
int rtu_timer;
int rtu_metric;
int int_flags;
char int_name[16];
};
typedef struct rdisc_info_s {
} rdisc_info_t;
/*
* Structure that is returned with the default router info.
*/
typedef struct defr_s {
} defr_t;
/*
* Packet types.
*/
/*
* Gated extended RIP to include a "poll" command instead of using
* RIPCMD_REQUEST with (RIP_AF_UNSPEC, RIP_DEFAULT). RFC 1058 says
* command 5 is used by Sun Microsystems for its own purposes.
*/
#define RIPCMD_MAX 7
#define RDISC_SNMP_SOCKET "/var/run/in.rdisc_mib"
#define RDISC_SNMP_INFO_REQ 1
#define RDISC_SNMP_INFO_RESPONSE 2
#define RDISC_DEF_ROUTER_INFO 3
#define RDISC_SNMP_INFO_VER 1
#define RDISC_DEF_ROUTER_VER 1
/ sizeof (struct netinfo) +1)
/*
* Timer values used in managing the routing table.
*
* Complete tables are broadcast every SUPPLY_INTERVAL seconds.
* If changes occur between updates, dynamic updates containing only changes
* may be sent. When these are sent, a timer is set for a random value
* between MIN_WAITTIME and MAX_WAITTIME, and no additional dynamic updates
* are sent until the timer expires.
*
* Every update of a routing entry forces an entry's timer to be reset.
* After EXPIRE_TIME without updates, the entry is marked invalid,
* but held onto until GARBAGE_TIME so that others may see it, to
* "poison" the bad route.
*/
#ifdef __cplusplus
}
#endif
#endif /* _PROTOCOLS_ROUTED_H */