addr.c

00001 /* Copyright 2008 Michael Marsh, University of Maryland.
00002  *
00003  * This file is part of pydtn.
00004  *
00005  * pydtn is free software: you can redistribute it and/or modify
00006  * it under the terms of the GNU General Public License as published by
00007  * the Free Software Foundation, either version 3 of the License, or
00008  * (at your option) any later version.
00009  *
00010  * pydtn is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  * GNU General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU General Public License
00016  * along with pydtn.  If not, see <http://www.gnu.org/licenses/>.
00017  *
00018  * The views and conclusions contained in the software and documentation
00019  * are those of the authors and should not be interpreted as representing
00020  * official policies, either expressed or implied, of the University
00021  * of Maryland.
00022  *
00023  * pydtn extends and embeds the Python interpreter, which is
00024  * Copyright 2001-2006 Python Software Foundation, All Rights Reserved,
00025  * and is released under the PSF License Agreement.
00026  *
00027  * RANLUX random number generation uses the Boost library,
00028  * Copyright 1994-2006 by various authors (details in individual files),
00029  * which is released under the Boost Software License, Version 1.0.
00030  */
00031 
00032 #include "aodv.h"
00033 #include <string.h>
00034 
00035 char
00036 aodv_cmp_addr( const aodv_addr_t* a, const aodv_addr_t* b )
00037 {
00038    unsigned int i;
00039 
00040    if ( NULL == a )
00041    {
00042       if ( NULL == b )
00043       {
00044          return 0;
00045       }
00046       return -1;
00047    }
00048    if ( NULL == b )
00049    {
00050       return 1;
00051    }
00052 
00053    for ( i = 0 ; i < a->length ; ++i )
00054    {
00055       if ( i >= b->length )
00056       {
00057          return 1;
00058       }
00059       if ( a->data[i] < b->data[i] )
00060       {
00061          return -1;
00062       }
00063       if ( a->data[i] > b->data[i] )
00064       {
00065          return 1;
00066       }
00067    }
00068 
00069    if ( a->length < b->length )
00070    {
00071       return -1;
00072    }
00073    return 0;
00074 }
00075 
00076 void
00077 set_aodv_addr( aodv_addr_t* dest, const aodv_addr_t* src )
00078 {
00079    if ( NULL == dest ) return;
00080    if ( NULL == src ) return;
00081    if ( NULL != dest->data )
00082    {
00083       free(dest->data);
00084       dest->length = 0;
00085    }
00086 
00087    dest->data = calloc( src->length, sizeof(unsigned char) );
00088    if ( NULL == dest->data ) return;
00089    dest->length = src->length;
00090    memcpy( dest->data, src->data, dest->length );
00091 }

Generated on Mon Mar 24 11:15:45 2008 for Pydtn Simulator by  doxygen 1.5.4