This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: UDP on Rattler - newbie problem wtih bind


We've been doing joint development with Linux and eCos / Rattlers, too.  One thing I seem to remember is that in eCos, we had to specify the sin_len field of the sockaddr_in struct.  I'm not sure if that's what is causing your problem, but I think you need that.  

Rich

-----Original Message-----
From: ecos-discuss-owner@ecos.sourceware.org
[mailto:ecos-discuss-owner@ecos.sourceware.org]On Behalf Of Ian Board
Sent: Thursday, January 20, 2005 6:11 PM
To: ecos-discuss@sources.redhat.com
Subject: [ECOS] UDP on Rattler - newbie problem wtih bind


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

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]