/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2005 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 */
/*
* Portions of this source code were derived from Berkeley 4.3 BSD
* under license from the Regents of the University of California.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
#include "defs.h"
char *control;
int iocsoc;
char *packet;
int poll_ifs_num = 0;
int rip6_port;
/* BEGIN CSTYLED */
{ 0xff, 0x2, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x9 }
/* END CSTYLED */
};
static void
{
"usage: "
"%s [ -P ] [ -p port ] [ -q ] [ -s ] [ -t ] [ -v ] [<logfile>]\n",
fname);
}
int
{
int i, n;
int c;
int timeout;
switch (c) {
case 'n':
break;
case 's':
break;
case 'q':
break;
case 'v':
tracing |= ACTION_BIT;
break;
case 'T':
break;
case 't':
break;
case 'd':
break;
case 'P':
break;
case 'p':
break;
default:
/* NOTREACHED */
}
}
/*
* Any extra argument is considered
* a tracing log file.
*/
} else if (tracing) {
/* NOTREACHED */
}
if (daemon) {
int t;
if (fork())
for (t = 0; t < 20; t++) {
(void) close(t);
}
(void) open("/", 0);
(void) dup2(0, 1);
(void) dup2(0, 2);
(void) setsid();
}
/* Store our process id, blow away any existing file if it exists. */
} else {
}
if (iocsoc < 0) {
}
setup_rtsock();
/*
* Allocate the buffer to hold the RIPng packet. In reality, it will be
* smaller than IPV6_MAX_PACKET octets due to (at least) the IPv6 and
* UDP headers but IPV6_MAX_PACKET is a convenient size.
*/
}
/*
* Allocate the buffer to hold the ancillary data. This data is used to
* insure that the incoming hop count of a RIPCMD6_RESPONSE message is
* IPV6_MAX_HOPS which indicates that it came from a direct neighbor
* (namely, no intervening router decremented it).
*/
}
initifs();
if (supplier)
/*
* Seed the pseudo-random number generator for GET_RANDOM().
*/
timer();
for (;;) {
if (needupdate) {
timeout = 0;
} else {
}
if (tracing & ACTION_BIT) {
"poll until dynamic update in %d msec\n",
timeout);
}
} else {
}
continue;
}
/*
* Poll timed out.
*/
if (n == 0) {
if (needupdate) {
TRACE_ACTION("send delayed dynamic update",
(void) gettimeofday(&now,
}
continue;
}
for (i = 0; i < poll_ifs_num; i++) {
/*
* This case should never happen.
*/
"main: poll returned a POLLERR event");
continue;
}
}
}
}
}
return (0);
}
void
{
}
}
void
{
}
}