int lispd_get_iface_address_nl( char *ifacename, lisp_addr_t *addr, int afi) { int ifa_index = if_nametoindex(ifacename); if (request_address(ifa_index, afi)!=GOOD){ return (BAD); } if (read_address_nl(ifa_index, addr)!=GOOD){ lispd_log_msg(LISP_LOG_DEBUG_2,"lispd_get_iface_address_nl: Couldn't get iface address from afi"); return (BAD); } return (GOOD); }
//------------------------------------------------------------------------ // int cycle_model::write_data(int addr, int data) // // writes data on data memory which can be internal to the block or // external (case of an hardware peripheral) // //------------------------------------------------------------------------ int cycle_model::write_data(int addr, int data) { int result = 0; bool is_internal = request_address(addr); if(is_internal) { // is internal if((cycles2execute>0)||ALL_CYCLES) { for(int i=0; i<stretch_cycles+1; i++) { exec_bus_cycle(OP_IDLE,addr,data,&result); } } ext_mem[addr]=data; } else { // is external exec_bus_cycle(OP_MEM_WRITE,addr,data,&result); } return result; }
//------------------------------------------------------------------------ // int cycle_model::fetch_data(int ad) // // fetches data from memory which can be internal to the block or // external (case of an hardware peripheral) // //------------------------------------------------------------------------ int cycle_model::fetch_data(int addr) { int data = 0, result; bool is_internal = request_address(addr); if(is_internal) { // is internal if((cycles2execute>0)||ALL_CYCLES) { // Wait for(int i=0; i<stretch_cycles+1; i++) { exec_bus_cycle(OP_IDLE,addr,data,&result); } } result = ext_mem[addr]; } else { // is external exec_bus_cycle(OP_MEM_READ,addr,data,&result); } return result; }