Looks good to me. On Fri, Jun 19, 2015 at 8:26 PM, Donald Sharp <[email protected]> wrote:
> pimd rolled it's own solution to random #'s, that was not > terribly random. Rely on the underlying system to generate > random #'s for us > > Signed-off-by: Donald Sharp <[email protected]> > --- > pimd/Makefile.am | 4 ++-- > pimd/pim_iface.c | 8 ++++---- > pimd/pim_pim.c | 5 ++--- > pimd/pim_rand.c | 60 > ------------------------------------------------------ > pimd/pim_rand.h | 30 --------------------------- > pimd/pimd.c | 3 +-- > 6 files changed, 9 insertions(+), 101 deletions(-) > delete mode 100644 pimd/pim_rand.c > delete mode 100644 pimd/pim_rand.h > > diff --git a/pimd/Makefile.am b/pimd/Makefile.am > index b82613a..cb525f7 100644 > --- a/pimd/Makefile.am > +++ b/pimd/Makefile.am > @@ -52,7 +52,7 @@ libpim_a_SOURCES = \ > pim_igmpv3.c pim_str.c pim_mroute.c pim_util.c pim_time.c \ > pim_oil.c pim_zlookup.c pim_pim.c pim_tlv.c pim_neighbor.c \ > pim_hello.c pim_ifchannel.c pim_join.c pim_assert.c \ > - pim_msg.c pim_upstream.c pim_rpf.c pim_rand.c pim_macro.c \ > + pim_msg.c pim_upstream.c pim_rpf.c pim_macro.c \ > pim_igmp_join.c pim_ssmpingd.c pim_int.c > > noinst_HEADERS = \ > @@ -61,7 +61,7 @@ noinst_HEADERS = \ > pim_igmpv3.h pim_str.h pim_mroute.h pim_util.h pim_time.h \ > pim_oil.h pim_zlookup.h pim_pim.h pim_tlv.h pim_neighbor.h \ > pim_hello.h pim_ifchannel.h pim_join.h pim_assert.h \ > - pim_msg.h pim_upstream.h pim_rpf.h pim_rand.h pim_macro.h \ > + pim_msg.h pim_upstream.h pim_rpf.h pim_macro.h \ > pim_igmp_join.h pim_ssmpingd.h pim_int.h > > pimd_SOURCES = \ > diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c > index dc3e9a2..6f806a1 100644 > --- a/pimd/pim_iface.c > +++ b/pimd/pim_iface.c > @@ -36,7 +36,6 @@ > #include "pim_pim.h" > #include "pim_neighbor.h" > #include "pim_ifchannel.h" > -#include "pim_rand.h" > #include "pim_sock.h" > #include "pim_time.h" > #include "pim_ssmpingd.h" > @@ -839,7 +838,7 @@ int pim_if_t_override_msec(struct interface *ifp) > effective_override_interval_msec = > pim_if_effective_override_interval_msec(ifp); > > - t_override_msec = pim_rand_next(0, effective_override_interval_msec); > + t_override_msec = random() % (effective_override_interval_msec + 1); > > return t_override_msec; > } > @@ -902,6 +901,7 @@ long pim_if_t_suppressed_msec(struct interface *ifp) > { > struct pim_interface *pim_ifp; > long t_suppressed_msec; > + uint32_t ramount = 0; > > pim_ifp = ifp->info; > zassert(pim_ifp); > @@ -911,8 +911,8 @@ long pim_if_t_suppressed_msec(struct interface *ifp) > return 0; > > /* t_suppressed = t_periodic * rand(1.1, 1.4) */ > - > - t_suppressed_msec = qpim_t_periodic * pim_rand_next(1100, 1400); > + ramount = 1100 + (random() % (1400 - 1100 + 1)); > + t_suppressed_msec = qpim_t_periodic * ramount; > > return t_suppressed_msec; > } > diff --git a/pimd/pim_pim.c b/pimd/pim_pim.c > index f8ac650..409972d 100644 > --- a/pimd/pim_pim.c > +++ b/pimd/pim_pim.c > @@ -39,7 +39,6 @@ > #include "pim_join.h" > #include "pim_assert.h" > #include "pim_msg.h" > -#include "pim_rand.h" > > static int on_pim_hello_send(struct thread *t); > static int pim_hello_send(struct interface *ifp, > @@ -686,7 +685,7 @@ void pim_hello_restart_triggered(struct interface *ifp) > } > zassert(!pim_ifp->t_pim_hello_timer); > > - random_msec = pim_rand_next(0, triggered_hello_delay_msec); > + random_msec = random() % (triggered_hello_delay_msec + 1); > > if (PIM_DEBUG_PIM_EVENTS) { > zlog_debug("Scheduling %d msec triggered hello on interface %s", > @@ -724,7 +723,7 @@ int pim_sock_add(struct interface *ifp) > pim_ifp->t_pim_sock_read = 0; > pim_ifp->pim_sock_creation = pim_time_monotonic_sec(); > > - pim_ifp->pim_generation_id = pim_rand() & (int64_t) 0xFFFFFFFF; > + pim_ifp->pim_generation_id = random(); > > zlog_info("PIM INTERFACE UP: on interface %s ifindex=%d", > ifp->name, ifp->ifindex); > diff --git a/pimd/pim_rand.c b/pimd/pim_rand.c > deleted file mode 100644 > index df2a111..0000000 > --- a/pimd/pim_rand.c > +++ /dev/null > @@ -1,60 +0,0 @@ > -/* > - 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; > -} > diff --git a/pimd/pim_rand.h b/pimd/pim_rand.h > deleted file mode 100644 > index a1df505..0000000 > --- a/pimd/pim_rand.h > +++ /dev/null > @@ -1,30 +0,0 @@ > -/* > - 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$ $ > -*/ > - > -#ifndef PIM_RAND_H > -#define PIM_RAND_H > - > -void pim_rand_init(void); > -long pim_rand(void); > -int pim_rand_next(int min, int max); > - > -#endif /* PIM_RAND_H */ > diff --git a/pimd/pimd.c b/pimd/pimd.c > index 78c3ff5..3797d4f 100644 > --- a/pimd/pimd.c > +++ b/pimd/pimd.c > @@ -34,7 +34,6 @@ > #include "pim_oil.h" > #include "pim_pim.h" > #include "pim_upstream.h" > -#include "pim_rand.h" > #include "pim_rpf.h" > #include "pim_ssmpingd.h" > > @@ -83,7 +82,7 @@ static void pim_free() > > void pim_init() > { > - pim_rand_init(); > + srandom(time(NULL)); > > if (!inet_aton(PIM_ALL_PIM_ROUTERS, &qpim_all_pim_routers_addr)) { > zlog_err("%s %s: could not solve %s to group address: errno=%d: %s", > -- > 1.7.10.4 > > > _______________________________________________ > Quagga-dev mailing list > [email protected] > https://lists.quagga.net/mailman/listinfo/quagga-dev >
_______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
