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
1.5.4