add_interface.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 
00034 int
00035 aodv_add_interface( aodv_state_t* state, int iface )
00036 {
00037    unsigned int i;
00038    unsigned int n;
00039    unsigned int l;
00040    int* temp;
00041 
00042    if ( NULL == state ) return 0;
00043 
00044    n = state->interfaces.nifaces;
00045 
00046    if ( 0 == state->interfaces.lifaces )
00047    {
00048       l = 2;
00049       state->interfaces.lifaces = l;
00050       state->interfaces.interfaces = (int*) calloc( l, sizeof(int) );
00051       if ( NULL == state->interfaces.interfaces )
00052       {
00053          return 0;
00054       }
00055    }
00056    else if ( state->interfaces.lifaces == n )
00057    {
00058       l = 2 * state->interfaces.lifaces;
00059       temp = (int*) calloc( l, sizeof(int) );
00060       if ( NULL == temp )
00061       {
00062          return 0;
00063       }
00064       for ( i = 0 ; i < n ; ++i )
00065       {
00066          temp[i] = state->interfaces.interfaces[i];
00067       }
00068       free(state->interfaces.interfaces);
00069       state->interfaces.interfaces = temp;
00070       state->interfaces.lifaces = l;
00071    }
00072 
00073    state->interfaces.interfaces[n] = iface;
00074    ++(state->interfaces.nifaces);
00075 
00076    return 1;
00077 }
00078 
00079 

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