| #!/bin/sh |
| # |
| # usage: rtpw_test <rtpw_commands> |
| # |
| # tests the rtpw sender and receiver functions |
| # |
| # Copyright (c) 2001-2006, Cisco Systems, Inc. |
| # All rights reserved. |
| # |
| # Redistribution and use in source and binary forms, with or without |
| # modification, are permitted provided that the following conditions |
| # are met: |
| # |
| # Redistributions of source code must retain the above copyright |
| # notice, this list of conditions and the following disclaimer. |
| # |
| # Redistributions in binary form must reproduce the above |
| # copyright notice, this list of conditions and the following |
| # disclaimer in the documentation and/or other materials provided |
| # with the distribution. |
| # |
| # Neither the name of the Cisco Systems, Inc. nor the names of its |
| # contributors may be used to endorse or promote products derived |
| # from this software without specific prior written permission. |
| # |
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
| # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
| # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
| # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
| # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
| # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
| # OF THE POSSIBILITY OF SUCH DAMAGE. |
| # |
| |
| RTPW=./rtpw |
| DEST_PORT=9999 |
| DURATION=3 |
| |
| # First, we run "killall" to get rid of all existing rtpw processes. |
| # This step also enables this script to clean up after itself; if this |
| # script is interrupted after the rtpw processes are started but before |
| # they are killed, those processes will linger. Re-running the script |
| # will get rid of them. |
| |
| killall rtpw 2>/dev/null |
| |
| if test -x $RTPW; then |
| |
| GCMARGS128="-k 01234567890123456789012345678901234567890123456789012345 -g -e 128" |
| echo $0 ": starting GCM mode 128-bit rtpw receiver process... " |
| |
| exec $RTPW $* $GCMARGS128 -r 127.0.0.1 $DEST_PORT & |
| |
| receiver_pid=$! |
| |
| echo $0 ": receiver PID = $receiver_pid" |
| |
| sleep 1 |
| |
| # verify that the background job is running |
| ps | grep -q $receiver_pid |
| retval=$? |
| echo $retval |
| if [ $retval != 0 ]; then |
| echo $0 ": error" |
| exit 254 |
| fi |
| |
| echo $0 ": starting GCM 128-bit rtpw sender process..." |
| |
| exec $RTPW $* $GCMARGS128 -s 127.0.0.1 $DEST_PORT & |
| |
| sender_pid=$! |
| |
| echo $0 ": sender PID = $sender_pid" |
| |
| # verify that the background job is running |
| ps | grep -q $sender_pid |
| retval=$? |
| echo $retval |
| if [ $retval != 0 ]; then |
| echo $0 ": error" |
| exit 255 |
| fi |
| |
| sleep $DURATION |
| |
| kill $receiver_pid |
| kill $sender_pid |
| |
| GCMARGS128="-k 01234567890123456789012345678901234567890123456789012345 -g -t 16 -e 128" |
| echo $0 ": starting GCM mode 128-bit (16 byte tag) rtpw receiver process... " |
| |
| exec $RTPW $* $GCMARGS128 -r 127.0.0.1 $DEST_PORT & |
| |
| receiver_pid=$! |
| |
| echo $0 ": receiver PID = $receiver_pid" |
| |
| sleep 1 |
| |
| # verify that the background job is running |
| ps | grep -q $receiver_pid |
| retval=$? |
| echo $retval |
| if [ $retval != 0 ]; then |
| echo $0 ": error" |
| exit 254 |
| fi |
| |
| echo $0 ": starting GCM 128-bit (16 byte tag) rtpw sender process..." |
| |
| exec $RTPW $* $GCMARGS128 -s 127.0.0.1 $DEST_PORT & |
| |
| sender_pid=$! |
| |
| echo $0 ": sender PID = $sender_pid" |
| |
| # verify that the background job is running |
| ps | grep -q $sender_pid |
| retval=$? |
| echo $retval |
| if [ $retval != 0 ]; then |
| echo $0 ": error" |
| exit 255 |
| fi |
| |
| sleep $DURATION |
| |
| kill $receiver_pid |
| kill $sender_pid |
| |
| |
| |
| GCMARGS256="-k 0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567 -g -e 256" |
| echo $0 ": starting GCM mode 256-bit rtpw receiver process... " |
| |
| exec $RTPW $* $GCMARGS256 -r 127.0.0.1 $DEST_PORT & |
| |
| receiver_pid=$! |
| |
| echo $0 ": receiver PID = $receiver_pid" |
| |
| sleep 1 |
| |
| # verify that the background job is running |
| ps | grep -q $receiver_pid |
| retval=$? |
| echo $retval |
| if [ $retval != 0 ]; then |
| echo $0 ": error" |
| exit 254 |
| fi |
| |
| echo $0 ": starting GCM 256-bit rtpw sender process..." |
| |
| exec $RTPW $* $GCMARGS256 -s 127.0.0.1 $DEST_PORT & |
| |
| sender_pid=$! |
| |
| echo $0 ": sender PID = $sender_pid" |
| |
| # verify that the background job is running |
| ps | grep -q $sender_pid |
| retval=$? |
| echo $retval |
| if [ $retval != 0 ]; then |
| echo $0 ": error" |
| exit 255 |
| fi |
| |
| sleep $DURATION |
| |
| kill $receiver_pid |
| kill $sender_pid |
| |
| |
| GCMARGS256="-k a123456789012345678901234567890123456789012345678901234567890123456789012345678901234567 -g -t 16 -e 256" |
| echo $0 ": starting GCM mode 256-bit (16 byte tag) rtpw receiver process... " |
| |
| exec $RTPW $* $GCMARGS256 -r 127.0.0.1 $DEST_PORT & |
| |
| receiver_pid=$! |
| |
| echo $0 ": receiver PID = $receiver_pid" |
| |
| sleep 1 |
| |
| # verify that the background job is running |
| ps | grep -q $receiver_pid |
| retval=$? |
| echo $retval |
| if [ $retval != 0 ]; then |
| echo $0 ": error" |
| exit 254 |
| fi |
| |
| echo $0 ": starting GCM 256-bit (16 byte tag) rtpw sender process..." |
| |
| exec $RTPW $* $GCMARGS256 -s 127.0.0.1 $DEST_PORT & |
| |
| sender_pid=$! |
| |
| echo $0 ": sender PID = $sender_pid" |
| |
| # verify that the background job is running |
| ps | grep -q $sender_pid |
| retval=$? |
| echo $retval |
| if [ $retval != 0 ]; then |
| echo $0 ": error" |
| exit 255 |
| fi |
| |
| sleep $DURATION |
| |
| kill $receiver_pid |
| kill $sender_pid |
| |
| |
| echo $0 ": done (test passed)" |
| |
| else |
| |
| echo "error: can't find executable" $RTPW |
| exit 1 |
| |
| fi |
| |
| # EOF |
| |
| |