summaryrefslogtreecommitdiffstats
path: root/src/vnet/dpo/punt_dpo.h
blob: 370547c1596425013c4879fffc64562deb4a2adb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
 * Copyright (c) 2016 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.
 */
/**
 * @brief A DPO to punt packets to the Control-plane
 */

#ifndef __PUNT_DPO_H__
#define __PUNT_DPO_H__

#include <vnet/dpo/dpo.h>

extern int dpo_is_punt(const dpo_id_t *dpo);

extern const dpo_id_t *punt_dpo_get(dpo_proto_t proto);

extern void punt_dpo_module_init(void);

#endif
lass="o">() { echo "$0" 1>&2 echo "" 1>&2 echo "Usage: $0 [-p <pre-exec-cmd>] [-m <email>] -- <make test options|verify>" 1>&2 echo "" 1>&2 echo "Parameters:" 1>&2 echo " -p <pre-exec-cmd> - run a command before each test loop (e.g. 'git pull')" 1>&2 echo " -m <email> - if set, email is sent to this address on failure" 1>&2 echo "" 1>&2 echo "Examples:" 1>&2 echo " $0 -m <somebody@cisco.com> -- test-debug TEST=l2bd" 1>&2 echo " $0 -m <somebody@cisco.com> -- verify" 1>&2 exit 1; } PRE_EXEC_CMD="" EMAIL="" while getopts "p:m:h" o; do case "${o}" in p) PRE_EXEC_CMD=${OPTARG} ;; m) regex="^[a-z0-9!#\$%&'*+/=?^_\`{|}~-]+(\.[a-z0-9!#$%&'*+/=?^_\`{|}~-]+)*@([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]([a-z0-9-]*[a-z0-9])?\$" m=${OPTARG} if [[ ! $m =~ $regex ]] then echo "Invalid -m parameter value: \`$m'" >&2 usage fi EMAIL="$m" ;; h) usage ;; ?) usage ;; esac done shift $((OPTIND-1)) if ! echo $* | grep test >/dev/null then if ! echo $* | grep verify >/dev/null then echo "Error: command line doesn't look right - should contain \`test' or \`verify' token..." >&2 usage fi fi function finish { NOW=`date +%s` RUNTIME=$((NOW - START)) AVG=$(echo "scale=2; $RUNTIME/$COUNT" | bc) OUT="*********************************************************************" OUT="$OUT\n* tail -n 30 $TMP:" OUT="$OUT\n*********************************************************************" OUT="$OUT\n`tail -n 30 $TMP`" OUT="$OUT\n*********************************************************************" OUT="$OUT\n* Total runtime: ${RUNTIME}s" OUT="$OUT\n* Iterations: ${COUNT}" OUT="$OUT\n* Average time: ${AVG}s" OUT="$OUT\n* Log file: ${TMP}" OUT="$OUT\n*********************************************************************" echo -e "$OUT" if [[ "$EMAIL" != "" && "$REASON" != "" ]] then SUBJECT="test loop finished ($REASON)" echo -e "$OUT" | mail -s "$SUBJECT" $EMAIL fi } trap "echo Caught signal, exiting...; REASON=\"received signal\"; finish; exit -1" SIGINT SIGTERM TMP=`mktemp` START=`date +%s` COUNT=0 if ! test -f "$TMP" then echo "Couldn't create temporary file!" exit -1 fi echo "Temporary file is $TMP" CMD="make $*" echo "Command line is \`$CMD'" REASON="" while true do COUNT=$((COUNT+1)) BEFORE=`date +%s` if [[ "$PRE_EXEC_CMD" != "" ]] then echo "Executing \`$PRE_EXEC_CMD' before test.." if ! ($PRE_EXEC_CMD 2>&1 | tee $TMP) then echo "\`$PRE_EXEC_CMD' failed!" >&2 REASON="$PRE_EXEC_CMD failed" break fi fi echo -n "Running test iteration #$COUNT..." if ! ($CMD >$TMP 2>&1) then AFTER=`date +%s` RUNTIME=$((AFTER-BEFORE)) echo "FAILED! (after ${RUNTIME}s)" REASON="test failed" break fi AFTER=`date +%s` RUNTIME=$((AFTER-BEFORE)) echo "PASSED (after ${RUNTIME}s)" done finish exit 1