On Tue, 2006-06-20 at 18:26 -0400, Andre-John Mas wrote: > Hi, > > I am not sure what I am doing wrong, but CYGACC_CALL_IF_FLASH_CFG_OP is not finding the value (returning false). I am trying to read the "bootp_my_ip" value. Every time the card restarts the redboot sees the right values, so it doesn't seem to be an issue of data getting over-written. > > Below are the modifications I made to network_support.c in the net/common package: > > #include > > // For fetching the IP info from RedBoot > #include > #ifndef CONFIG_IP > #define CONFIG_IP 5 > #endif > > typedef unsigned char ip_addr_t[4]; > > // > // taken from redboot ... net/net_io.c > // > static bool > flash_get_IP(char *id, ip_addr_t *val) > { > ip_addr_t my_ip[4]; Do you really want an array of 4 ip_address_t objects? > int i; > > if (CYGACC_CALL_IF_FLASH_CFG_OP(CYGNUM_CALL_IF_FLASH_CFG_GET, id, &my_ip, CONFIG_IP)) > { > diag_printf("flash_get_IP %s\n", my_ip); > if (my_ip[0] != 0 || my_ip[1] != 0 || > my_ip[2] != 0 || my_ip[3] != 0) { > // 'id' is set to something so let it override any static IP > for (i=0; i<4; i++) > (*val)[i] = my_ip[i]; > } > } > else > { > return false; > } > } > > and then in the init_all_networks_interfaces() function I have: > > struct in_addr card_ip; > > flash_get_IP("bootp_my_ip", card_ip.s_addr); > > Any ideas what I might be doing wrong? I don't see anything in particular wrong with this code. I tried the attached program and it worked just fine for me. -- ------------------------------------------------------------ Gary Thomas | Consulting for the MLB Associates | Embedded world ------------------------------------------------------------