/** * Called from net_loop in net/net.c before each packet */ void nc_start(void) { refresh_settings_from_env(); if (!output_packet_len || memcmp(nc_ether, net_null_ethaddr, 6)) { /* going to check for input packet */ net_set_udp_handler(nc_handler); net_set_timeout_handler(net_timeout, nc_timeout_handler); } else { /* send arp request */ uchar *pkt; net_set_arp_handler(nc_wait_arp_handler); pkt = (uchar *)net_tx_packet + net_eth_hdr_size() + IP_UDP_HDR_SIZE; memcpy(pkt, output_packet, output_packet_len); net_send_udp_packet(nc_ether, nc_ip, nc_out_port, nc_in_port, output_packet_len); } }
void BootmeStart(void) { if (bootme_state != BOOTME_DOWNLOAD) check_net_config(); if (output_packet_len == 0 || memcmp(bootme_ether, NetEtherNullAddr, ETH_ALEN) != 0) { /* wait for incoming packet */ net_set_udp_handler(bootme_handler); bootme_timed_out = 0; NetSetTimeout(bootme_timeout, bootme_timeout_handler); } else { /* send ARP request */ uchar *pkt; net_set_arp_handler(bootme_wait_arp_handler); assert(NetTxPacket != NULL); pkt = (uchar *)NetTxPacket + NetEthHdrSize() + IP_UDP_HDR_SIZE; memcpy(pkt, output_packet, output_packet_len); NetSendUDPPacket(bootme_ether, bootme_ip, bootme_dst_port, bootme_src_port, output_packet_len); } }
static void net_clear_handlers(void) { net_set_udp_handler(NULL); net_set_arp_handler(NULL); net_set_timeout_handler(0, NULL); }
static void net_clear_handlers(void) { net_set_udp_handler(NULL); net_set_arp_handler(NULL); NetSetTimeout(0, NULL); }