[ECOS] UDP on Rattler - newbie problem wtih bind
Ian Board
iboard@telasic.com
Fri Jan 21 02:39:00 GMT 2005
I am trying to write a simple UDP-based server on a Rattler board (new
to ecos).
I get an error with bind() that it can't assign the requested address -
I am using INADDR_ANY - this code worked fine under linux.
The board is ping-able when the app is running.
Here is a portion of the code ...
Can anyone help me with this?
- Ian
#include <stdio.h>
#include <network.h>
...
static struct sockaddr_in local_addr;
static struct sockaddr_in client_address;
static int sd;
void comm_task( cyg_addrword_t ct_param)
{
int ret_val;
int rc;
unsigned int value;
int total_sent = 0;
int n = 0;
char buf[ MAX_UDP_SIZE ];
int reply_length;
unsigned char *parse_message( unsigned char *,
unsigned int * );
int address_length;
int n_read, n_sent;
char *reply_ptr;
printf( "Entering comm task\n" );
memset( &local_addr, 0, sizeof(struct sockaddr_in) );
local_addr.sin_family = AF_INET;
local_addr.sin_port = htons( SERVER_PORT );
local_addr.sin_addr.s_addr = htonl( INADDR_ANY );
sd = socket( AF_INET, SOCK_DGRAM, 0);
if( sd ) printf("socket retval = %d\n", sd );
rc = bind( sd,
(struct sockaddr *) &local_addr,
sizeof(struct sockaddr_in) );
Here is the exported configuration -
cdl_savefile_version 1;
cdl_savefile_command cdl_savefile_version {};
cdl_savefile_command cdl_savefile_command {};
cdl_savefile_command cdl_configuration { description hardware template
package };
cdl_savefile_command cdl_package { value_source user_value wizard_value
inferred_value };
cdl_savefile_command cdl_component { value_source user_value
wizard_value inferred_value };
cdl_savefile_command cdl_option { value_source user_value wizard_value
inferred_value };
cdl_savefile_command cdl_interface { value_source user_value
wizard_value inferred_value };
cdl_configuration eCos {
description "" ;
hardware rattler ;
template net ;
package -hardware CYGPKG_HAL_POWERPC current ;
package -hardware CYGPKG_HAL_POWERPC_MPC8XXX current ;
package -hardware CYGPKG_HAL_POWERPC_RATTLER current ;
package -hardware CYGPKG_DEVS_FLASH_POWERPC_RATTLER current ;
package -hardware CYGPKG_DEVS_FLASH_AMD_AM29XXXXX current ;
package -hardware CYGPKG_DEVS_ETH_POWERPC_FCC current ;
package -hardware CYGPKG_DEVS_ETH_POWERPC_RATTLER current ;
package -hardware CYGPKG_DEVS_ETH_PHY current ;
package -hardware CYGPKG_IO_SERIAL_POWERPC_MPC8XXX current ;
package -template CYGPKG_HAL current ;
package -template CYGPKG_IO current ;
package -template CYGPKG_IO_SERIAL current ;
package -template CYGPKG_INFRA current ;
package -template CYGPKG_ISOINFRA current ;
package -template CYGPKG_KERNEL current ;
package -template CYGPKG_MEMALLOC current ;
package -template CYGPKG_LIBC current ;
package -template CYGPKG_LIBC_TIME current ;
package -template CYGPKG_LIBC_STDLIB current ;
package -template CYGPKG_LIBC_STRING current ;
package -template CYGPKG_LIBC_I18N current ;
package -template CYGPKG_LIBC_SETJMP current ;
package -template CYGPKG_LIBC_STARTUP current ;
package -template CYGPKG_LIBC_STDIO current ;
package -template CYGPKG_LIBM current ;
package -template CYGPKG_POSIX current ;
package -template CYGPKG_IO_WATCHDOG current ;
package -template CYGPKG_IO_WALLCLOCK current ;
package -template CYGPKG_ERROR current ;
package -template CYGPKG_IO_FILEIO current ;
package -template CYGPKG_NET current ;
package -template CYGPKG_NET_FREEBSD_STACK current ;
package -template CYGPKG_NS_DNS current ;
package -template CYGPKG_IO_ETH_DRIVERS current ;
package -template CYGPKG_NET_SNTP current ;
};
cdl_option CYGSEM_HAL_POWERPC_RESET_USES_JUMP {
inferred_value 1
};
cdl_option CYGINT_HAL_POWERPC_RATTLER_FLASH_SIZE {
inferred_value 8
};
cdl_option CYGINT_HAL_POWERPC_RATTLER_SDRAM_SIZE {
inferred_value 16
};
cdl_option CYGHWR_HAL_POWERPC_RATTLER_8250 {
user_value 1
};
cdl_option CYGHWR_DEVS_ETH_PHY_AM79C874 {
inferred_value 1
};
cdl_option CYGBLD_ISO_CTYPE_HEADER {
inferred_value 1 <cyg/libc/i18n/ctype.inl>
};
cdl_option CYGBLD_ISO_ERRNO_CODES_HEADER {
inferred_value 1 <cyg/error/codes.h>
};
cdl_option CYGBLD_ISO_ERRNO_HEADER {
inferred_value 1 <cyg/error/errno.h>
};
cdl_option CYGBLD_ISO_STDIO_FILETYPES_HEADER {
inferred_value 1 <cyg/libc/stdio/stdio.h>
};
cdl_option CYGBLD_ISO_STDIO_STREAMS_HEADER {
inferred_value 1 <cyg/libc/stdio/stdio.h>
};
cdl_option CYGBLD_ISO_STDIO_FILEOPS_HEADER {
inferred_value 1 <cyg/libc/stdio/stdio.h>
};
cdl_option CYGBLD_ISO_STDIO_FILEACCESS_HEADER {
inferred_value 1 <cyg/libc/stdio/stdio.h>
};
cdl_option CYGBLD_ISO_STDIO_FORMATTED_IO_HEADER {
inferred_value 1 <cyg/libc/stdio/stdio.h>
};
cdl_option CYGBLD_ISO_STDIO_CHAR_IO_HEADER {
inferred_value 1 <cyg/libc/stdio/stdio.h>
};
cdl_option CYGBLD_ISO_STDIO_DIRECT_IO_HEADER {
inferred_value 1 <cyg/libc/stdio/stdio.h>
};
cdl_option CYGBLD_ISO_STDIO_FILEPOS_HEADER {
inferred_value 1 <cyg/libc/stdio/stdio.h>
};
cdl_option CYGBLD_ISO_STDIO_ERROR_HEADER {
inferred_value 1 <cyg/libc/stdio/stdio.h>
};
cdl_option CYGBLD_ISO_STDLIB_STRCONV_HEADER {
inferred_value 1 <cyg/libc/stdlib/atox.inl>
};
cdl_option CYGBLD_ISO_STDLIB_ABS_HEADER {
inferred_value 1 <cyg/libc/stdlib/abs.inl>
};
cdl_option CYGBLD_ISO_STDLIB_DIV_HEADER {
inferred_value 1 <cyg/libc/stdlib/div.inl>
};
cdl_option CYGBLD_ISO_STRERROR_HEADER {
inferred_value 1 <cyg/error/strerror.h>
};
cdl_option CYGBLD_ISO_STRTOK_R_HEADER {
inferred_value 1 <cyg/libc/string/string.h>
};
cdl_option CYGBLD_ISO_STRING_LOCALE_FUNCS_HEADER {
inferred_value 1 <cyg/libc/string/string.h>
};
cdl_option CYGBLD_ISO_STRING_BSD_FUNCS_HEADER {
inferred_value 1 <cyg/libc/string/bsdstring.h>
};
cdl_option CYGBLD_ISO_STRING_MEMFUNCS_HEADER {
inferred_value 1 <cyg/libc/string/string.h>
};
cdl_option CYGBLD_ISO_STRING_STRFUNCS_HEADER {
inferred_value 1 <cyg/libc/string/string.h>
};
cdl_option CYGBLD_ISO_POSIX_TIMER_TYPES_HEADER {
inferred_value 1 <cyg/posix/time.h>
};
cdl_option CYGBLD_ISO_POSIX_CLOCK_TYPES_HEADER {
inferred_value 1 <cyg/posix/time.h>
};
cdl_option CYGBLD_ISO_C_TIME_TYPES_HEADER {
inferred_value 1 <cyg/libc/time/time.h>
};
cdl_option CYGBLD_ISO_POSIX_TIMERS_HEADER {
inferred_value 1 <cyg/posix/time.h>
};
cdl_option CYGBLD_ISO_POSIX_CLOCKS_HEADER {
inferred_value 1 <cyg/posix/time.h>
};
cdl_option CYGBLD_ISO_C_CLOCK_FUNCS_HEADER {
inferred_value 1 <cyg/libc/time/time.h>
};
cdl_option CYGBLD_ISO_SIGNAL_NUMBERS_HEADER {
inferred_value 1 <cyg/posix/signal.h>
};
cdl_option CYGBLD_ISO_SIGNAL_IMPL_HEADER {
inferred_value 1 <cyg/posix/signal.h>
};
cdl_option CYGBLD_ISO_SETJMP_HEADER {
inferred_value 1 <cyg/libc/setjmp/setjmp.h>
};
cdl_option CYGBLD_ISO_SIGSETJMP_HEADER {
inferred_value 1 <cyg/posix/sigsetjmp.h>
};
cdl_option CYGBLD_ISO_DIRENT_HEADER {
inferred_value 1 <cyg/fileio/dirent.h>
};
cdl_option CYGBLD_ISO_PTHREADTYPES_HEADER {
inferred_value 1 <cyg/posix/types.h>
};
cdl_option CYGBLD_ISO_PMUTEXTYPES_HEADER {
inferred_value 1 <cyg/posix/muttypes.h>
};
cdl_option CYGBLD_ISO_BSDTYPES_HEADER {
inferred_value 1 <sys/bsdtypes.h>
};
cdl_option CYGBLD_ISO_UTSNAME_HEADER {
inferred_value 1 <cyg/posix/utsname.h>
};
cdl_option CYGBLD_ISO_SEMAPHORES_HEADER {
inferred_value 1 <cyg/posix/semaphore.h>
};
cdl_option CYGBLD_ISO_PTHREAD_IMPL_HEADER {
inferred_value 1 <cyg/posix/pthread.h>
};
cdl_option CYGBLD_ISO_PTHREAD_MUTEX_HEADER {
inferred_value 1 <cyg/posix/mutex.h>
};
cdl_option CYGBLD_ISO_POSIX_LIMITS_HEADER {
inferred_value 1 <cyg/posix/limits.h>
};
cdl_option CYGBLD_ISO_OPEN_MAX_HEADER {
inferred_value 1 <cyg/fileio/limits.h>
};
cdl_option CYGBLD_ISO_NAME_MAX_HEADER {
inferred_value 1 <cyg/fileio/limits.h>
};
cdl_option CYGBLD_ISO_DNS_HEADER {
inferred_value 1 <cyg/ns/dns/dns.h>
};
cdl_option CYGBLD_ISO_NETDB_PROTO_HEADER {
inferred_value 1 <net/netdb.h>
};
cdl_option CYGBLD_ISO_NETDB_SERV_HEADER {
inferred_value 1 <net/netdb.h>
};
cdl_option CYGIMP_KERNEL_SCHED_SORTED_QUEUES {
inferred_value 1
};
cdl_option CYGSEM_KERNEL_SCHED_TIMESLICE_ENABLE {
inferred_value 1
};
cdl_component CYGSEM_KERNEL_SCHED_ASR_SUPPORT {
inferred_value 1
};
cdl_option CYGSEM_KERNEL_SCHED_ASR_GLOBAL {
inferred_value 1
};
cdl_component CYGPKG_KERNEL_THREADS_DESTRUCTORS {
inferred_value 1
};
cdl_option CYGPKG_NET_FORCE_SERIAL_CONSOLE {
inferred_value 1
};
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
More information about the Ecos-discuss
mailing list