summaryrefslogtreecommitdiffstats
path: root/src/vpp.am
AgeCommit message (Collapse)AuthorFilesLines
2017-11-10Break up vpe.apiNeale Ranns1-2/+6
- makes the VAPI generated file more consumable. - VOM build times improve. Change-Id: I838488930bd23a0d3818adfdffdbca3eead382df Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
2017-09-07Allow individual stats API and introduce stats.apiKeith Burns (alagalah)1-5/+7
- want_interface_simple_stats - want_interface_combined_stats - want_ip4|6_fib|nbr_stats Change-Id: I4e97461def508958b3e429c3fe8859b36fef2d18 Signed-off-by: Keith Burns (alagalah) <alagalah@gmail.com>
2017-07-17Fix unlinking of /dev/shm files.Dave Wallace1-3/+3
- api-segment prefix not used when unlinking shm files - unlink root region on exit if no clients referenced - stale reference to freed segment name - don't add fake client to /db unless CLIB_DEBUG > 2 - turn off the gmond plugin - clean up unused vars in vpp/api Change-Id: I66451fcfd6ee64a12466c2d6c209050e3cdb74b7 Signed-off-by: Dave Wallace <dwallacelf@gmail.com> Signed-off-by: Dave Barach <dave@barachs.net>
2017-06-24Rewrite vppctl in CDamjan Marion1-0/+4
- removes python dependency - removes vpp_api_test dependency - communicates over unix socket - properly detects terminal size and type - responds on terminal resize Change-Id: I46c0a49f9b5f9ef8a0a31faec4fc5d49aa3ee02e Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-05-10Make reproducible build possibleMarco Varlese1-3/+7
For downstream consumption is important to have a way to specify the date or the user or the hostname to particular values so to have reproducible builds and/or packages. Change-Id: I134288662b6cfbbe26bba7d8bc6be8511b34360c Signed-off-by: Marco Varlese <marco.varlese@suse.com>
2017-05-03Fix vnet unit testsFilip Tehlar1-1/+0
Change-Id: Ibe55e4399c6b78d83268d7c49ed498cab7bfdb43 Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2017-03-30Clean up more Debian packaging symbol warningsDave Barach1-4/+0
Change-Id: I6081a38af3817f0957a2faf0e3e41afa4a74f3a4 Signed-off-by: Dave Barach <dave@barachs.net>
2017-01-28Add files to CLEANFILES for robust make clean.Burt Silverman1-0/+2
At the least, $(BUILT_SOURCES) should be added to CLEANFILES. Also beneficial is $(api_DATA), and in the case of Java, *.files and *.h. Also there is a vpp/app/version.h, and some grammar and lex files in vppapigen. Change-Id: Ic6d3f2d40ce65e1d9a8b88217fa1f36de393ebb4 Signed-off-by: Burt Silverman <burtms@gmail.com>
2017-01-23binary-api debug CLI works with pluginsDave Barach1-1/+5
Change-Id: I81f33f5153d5afac94b66b5a8cb91da77463af79 Signed-off-by: Dave Barach <dave@barachs.net>
2017-01-16Define more dependencies between libsDamjan Marion1-4/+2
Change-Id: Ia74699bad15c1c583571944458fc8a5c3ded574b Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-01-11Makefile.am cleanupDamjan Marion1-34/+2
- remove unused stuff - add --quiet flag to libtool - avoid building some tests programs when tests are not enabled Change-Id: Ie34aeec1a598ad811256a00354f66cfddae9d0b9 Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-01-08Multiple Autotools improvementsDamjan Marion1-13/+20
- Defines some dependencies between shared libraries - updates version.h only when version changes Updating version.h on each "make" and "make install" was causing issues with parallel builds. "make install" was re-linking vpp binary due to "updated" version.h and in parallel it was re-linking shared libraries as part of installation process. That was resulting on sporadic build failures. Change-Id: I2a27ae1aea6a7a4100822018e095a60dd48d39ca Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-01-03vlib: merge libvlib_unix.so into libvlib.soDamjan Marion1-1/+0
Change-Id: Iedbee427d838794c4b26db5bd07b8d27aad9fcd8 Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-01-03fix version.h generation for out-of-tree buildsDamjan Marion1-2/+2
Change-Id: Ic882f5aec74858a36533ed8cd61a7726947dceef Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-01-01Move java,lua api and remaining plugins to src/Damjan Marion1-1/+1
Change-Id: I1c3b87e886603678368428ae56a6bd3327cbc90d Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-12-28Reorganize source tree to use single autotools instanceDamjan Marion1-0/+159
Change-Id: I7b51f88292e057c6443b12224486f2d0c9f8ae23 Signed-off-by: Damjan Marion <damarion@cisco.com>
.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
/*
 * Copyright (c) 2015 Cisco and/or its affiliates.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*
  Copyright (c) 2001, 2002, 2003 Eliot Dresselhaus

  Permission is hereby granted, free of charge, to any person obtaining
  a copy of this software and associated documentation files (the
  "Software"), to deal in the Software without restriction, including
  without limitation the rights to use, copy, modify, merge, publish,
  distribute, sublicense, and/or sell copies of the Software, and to
  permit persons to whom the Software is furnished to do so, subject to
  the following conditions:

  The above copyright notice and this permission notice shall be
  included in all copies or substantial portions of the Software.

  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

#ifndef included_test_vec_h
#define included_test_vec_h


#include <vppinfra/clib.h>
#include <vppinfra/mem.h>
#include <vppinfra/format.h>
#include <vppinfra/error.h>


extern uword g_verbose;
extern u32 g_seed;

always_inline u8 *
format_u32_binary (u8 * s, va_list * va)
{
  u32 val = va_arg (*va, u32);
  word i = 0;

  for (i = BITS (val) - 1; i >= 0; i--)
    {
      if (val & (1 << i))
	s = format (s, "1");
      else
	s = format (s, "0");
    }

  return s;
}

#define VERBOSE1(fmt, args...)			\
do {						\
  if (g_verbose >= 1)				\
    fformat (stdout, fmt, ## args);		\
} while (0)

#define VERBOSE2(fmt, args...)			\
do {						\
  if (g_verbose >= 2)				\
    fformat (stdout, fmt, ## args);		\
} while (0)

#define VERBOSE3(fmt, args...)			\
do {						\
  if (g_verbose >= 3)				\
    fformat (stdout, fmt, ## args);		\
} while (0)

#define clib_mem_free_safe(p)			\
do {						\
  if (p)					\
    {						\
      clib_mem_free (p);			\
      (p) = NULL;				\
    }						\
} while (0)

/* XXX - I get undefined symbol trying to call random_u32() <vppinfra/random.h> */
/* Simple random number generator with period 2^31 - 1. */
static u32
my_random_u32 (u32 * seed_return)
{
  /* Unlikely mask value to XOR into seed.
     Otherwise small seed values would give
     non-random seeming smallish numbers. */
  const u32 mask = 0x12345678;
  u32 seed, a, b, result;

  seed = *seed_return;
  seed ^= mask;

  a = seed / 127773;
  b = seed % 127773;
  seed = 16807 * b - 2836 * a;

  if ((i32) seed < 0)
    seed += ((u32) 1 << 31) - 1;

  result = seed;

  *seed_return = seed ^ mask;

  return result;
}

static u32
bounded_random_u32 (u32 * seed, uword lo, uword hi)
{
  if (lo == hi)
    return lo;

  ASSERT (lo < hi);

  return ((my_random_u32 (seed) % (hi - lo + ((hi != ~0) ? (1) : (0)))) + lo);
}

#define fill_with_random_data(ptr, bytes, seed)			\
do {								\
  u8 * _v(p) = (u8 *) (ptr);					\
  uword _v(b) = (bytes);					\
  uword _v(i);							\
								\
  for (_v(i) = 0; _v(i) < _v(b); _v(i)++)			\
    _v(p)[_v(i)] = (u8) bounded_random_u32 (&(seed), 0, 255);	\
								\
} while (0)

#define compute_mem_hash(hash, ptr, bytes)	\
({						\
  u8 * _v(p) = (u8 *) (ptr);			\
  uword _v(b) = (uword) (bytes);		\
  uword _v(i);					\
  uword _v(h) = (u8) (hash);			\
						\
  if (_v(p) && _v(b) > 0)			\
    {						\
      for (_v(i) = 0; _v(i) < _v(b); _v(i)++)	\
	_v(h) ^= _v(p)[_v(i)];			\
    }						\
						\
  _v(h);					\
})

#define log2_align_down(value, align)		\
({						\
  uword _v = (uword) (value);			\
  uword _a = (uword) (align);			\
  uword _m = (1 << _a) - 1;			\
						\
  _v = _v & ~_m;				\
})

#define log2_align_up(value, align)		\
({						\
  uword _v = (uword) (value);			\
  uword _a = (uword) (align);			\
  uword _m = (1 << _a) - 1;			\
						\
  _v = (_v + _m) & ~_m;				\
})

#define log2_align_ptr_down(ptr, align) \
uword_to_pointer (log2_align_down (pointer_to_uword (ptr), align), void *)

#define log2_align_ptr_up(ptr, align) \
uword_to_pointer (log2_align_up (pointer_to_uword (ptr), align), void *)

#define MAX_LOG2_ALIGN		6
#define MAX_UNALIGN_OFFSET	((1 << MAX_LOG2_ALIGN) - 1)

/* Allocates pointer to memory whose address is:
   addr = <log2_align>-aligned address */
always_inline void *
alloc_aligned (uword size, uword log2_align, void **ptr_to_free)
{
  void *p;

  if (size <= 0)
    return NULL;

  p = (void *) clib_mem_alloc (size + (1 << log2_align) - 1);

  if (ptr_to_free)
    *ptr_to_free = p;

  return (p) ? log2_align_ptr_up (p, log2_align) : (NULL);
}

/* Allocates pointer to memory whose address is:
   addr = MAX_LOG2_ALIGN-aligned address + <offset> */
always_inline void *
alloc_unaligned (uword size, uword offset, void **ptr_to_free)
{
  void *p;

  if (size <= 0)
    return NULL;

  ASSERT (offset <= MAX_UNALIGN_OFFSET);

  p =
    alloc_aligned (size + (1 << MAX_LOG2_ALIGN), MAX_LOG2_ALIGN, ptr_to_free);

  if (!p)
    return NULL;

  return (void *) ((u8 *) p + (offset % MAX_UNALIGN_OFFSET));
}

#define memory_snap()						\
do {								\
  clib_mem_usage_t _usage = { 0 };				\
  clib_mem_usage (&_usage);					\
  fformat (stdout, "%U\n", format_clib_mem_usage, _usage, 0);	\
} while (0)


#endif /* included_test_vec_h */

/*
 * fd.io coding-style-patch-verification: ON
 *
 * Local Variables:
 * eval: (c-set-style "gnu")
 * End:
 */