mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-29 17:13:46 +00:00

Welcome pimd to the Quagga daemon zoo! This is a merge of commit 77ae369 ("pimd: Log ifindex found for an interface when zebra lib reports a new connected address."), with the intermediate "reconnect" changes removed (c9adf00...d274381). d274381 is replaced with b162ab7, which includes some changes. In addition, 4 reconnect-related changes and 1 cosmetic one have been bumped out. The rebase command used to produce the branch that is merged here is: git rebase --onto b162ab7 c9adf00 77ae369 Note that 3 patches had their author rewritten from "Anonymous SR#108542 <>" (which is not a valid git author ID) to: "Savannah SR#108542 <nbahr@atcorp.com>" (which is the e-mail address listed in the associated Savannah ticket) Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
61 lines
1.5 KiB
C
61 lines
1.5 KiB
C
/*
|
|
PIM for Quagga
|
|
Copyright (C) 2008 Everton da Silva Marques
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; see the file COPYING; if not, write to the
|
|
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
|
MA 02110-1301 USA
|
|
|
|
$QuaggaId: $Format:%an, %ai, %h$ $
|
|
*/
|
|
|
|
#include "pim_rand.h"
|
|
#include "pim_time.h"
|
|
|
|
/* Quick and dirty random number generator from NUMERICAL RECIPES IN C:
|
|
THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43108-5). */
|
|
/* BEWARE: '_qseed_' is assigned! */
|
|
#define QRANDOM(_qseed_) ((_qseed_) = (((_qseed_) * 1664525L) + 1013904223L))
|
|
|
|
static long qpim_rand_seed;
|
|
|
|
void pim_rand_init()
|
|
{
|
|
qpim_rand_seed = pim_time_monotonic_sec() ^ getpid();
|
|
}
|
|
|
|
long pim_rand()
|
|
{
|
|
return QRANDOM(qpim_rand_seed);
|
|
}
|
|
|
|
int pim_rand_next(int min, int max)
|
|
{
|
|
long rand;
|
|
|
|
assert(min <= max);
|
|
|
|
/* FIXME better random generator ? */
|
|
|
|
rand = QRANDOM(qpim_rand_seed);
|
|
if (rand < 0)
|
|
rand = -rand;
|
|
rand = rand % (1 + max - min) + min;
|
|
|
|
assert(rand >= min);
|
|
assert(rand <= max);
|
|
|
|
return rand;
|
|
}
|