struct sockaddr *gethostaddr(const char *sip) { const UINT32 nip; struct sockaddr *sockAddr; UINT32 cnt = 20; if(GuStrToIp((BYTE *)&nip, sip)) { printf("%s(): fail to convert ip %s\n", __FUNCTION__, sip); return NULL; } while (cnt--) { UINT32 psr; // add by seen.yang ArpSendPacket((BYTE *)&nip, NULL, ARP_OP_REQ); // add by seen.yang while(GNetRecvPoll() <= 0); IrqDisableSave(psr); sockAddr = getaddr(nip); IrqRestore(psr); if (sockAddr) break; // TODO: add re-send code here udelay(3); } return sockAddr; } |
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |