iPXE
gdbudp.c File Reference

GDB over UDP transport. More...

#include <stdio.h>
#include <string.h>
#include <byteswap.h>
#include <ipxe/iobuf.h>
#include <ipxe/in.h>
#include <ipxe/if_arp.h>
#include <ipxe/if_ether.h>
#include <ipxe/ip.h>
#include <ipxe/udp.h>
#include <ipxe/netdevice.h>
#include <ipxe/nap.h>
#include <ipxe/gdbstub.h>
#include <ipxe/gdbudp.h>

Go to the source code of this file.

Enumerations

enum  { DEFAULT_PORT = 43770 }

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
 FILE_SECBOOT (FORBIDDEN)
static void gdbudp_ensure_netdev_open (struct net_device *netdev)
static size_t gdbudp_recv (char *buf, size_t len)
static void gdbudp_send (const char *buf, size_t len)
struct gdb_transportgdbudp_configure (const char *name, struct sockaddr_in *addr)
static int gdbudp_init (int argc, char **argv)

Variables

struct gdb_transport udp_gdb_transport __gdb_transport
static struct net_devicenetdev
static uint8_t dest_eth [ETH_ALEN]
static struct sockaddr_in dest_addr
static struct sockaddr_in source_addr

Detailed Description

GDB over UDP transport.

Definition in file gdbudp.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
DEFAULT_PORT 

Definition at line 47 of file gdbudp.c.

47 {
48 DEFAULT_PORT = 43770, /* UDP listen port */
49};
@ DEFAULT_PORT
Definition gdbudp.c:48

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL )

◆ FILE_SECBOOT()

FILE_SECBOOT ( FORBIDDEN )

◆ gdbudp_ensure_netdev_open()

void gdbudp_ensure_netdev_open ( struct net_device * netdev)
static

Definition at line 58 of file gdbudp.c.

58 {
59 /* The device may have been closed between breakpoints */
60 assert ( netdev );
62
63 /* Strictly speaking, we may need to close the device when leaving the interrupt handler */
64}
#define assert(condition)
Assert a condition at run-time.
Definition assert.h:50
static struct net_device * netdev
Definition gdbudp.c:53
int netdev_open(struct net_device *netdev)
Open network device.
Definition netdevice.c:862

References assert, netdev, and netdev_open().

Referenced by gdbudp_recv(), and gdbudp_send().

◆ gdbudp_recv()

size_t gdbudp_recv ( char * buf,
size_t len )
static

Definition at line 66 of file gdbudp.c.

66 {
67 struct io_buffer *iob;
68 struct ethhdr *ethhdr;
69 struct arphdr *arphdr;
70 struct iphdr *iphdr;
71 struct udp_header *udphdr;
72 size_t payload_len;
73
75
76 for ( ; ; ) {
78 while ( ( iob = netdev_rx_dequeue ( netdev ) ) != NULL ) {
79 /* Ethernet header */
80 if ( iob_len ( iob ) < sizeof ( *ethhdr ) ) {
81 goto bad_packet;
82 }
83 ethhdr = iob->data;
84 iob_pull ( iob, sizeof ( *ethhdr ) );
85
86 /* Handle ARP requests so the client can find our MAC */
87 if ( ethhdr->h_protocol == htons ( ETH_P_ARP ) ) {
88 arphdr = iob->data;
89 if ( iob_len ( iob ) < sizeof ( *arphdr ) + 2 * ( ETH_ALEN + sizeof ( struct in_addr ) ) ||
91 arphdr->ar_pro != htons ( ETH_P_IP ) ||
93 arphdr->ar_pln != sizeof ( struct in_addr ) ||
95 * ( uint32_t * ) arp_target_pa ( arphdr ) != source_addr.sin_addr.s_addr ) {
96 goto bad_packet;
97 }
98
99 /* Generate an ARP reply */
101 memswap ( arp_sender_pa ( arphdr ), arp_target_pa ( arphdr ), sizeof ( struct in_addr ) );
103 memcpy ( arp_sender_ha ( arphdr ), netdev->ll_addr, ETH_ALEN );
104
105 /* Fix up ethernet header */
106 ethhdr = iob_push ( iob, sizeof ( *ethhdr ) );
108 memcpy ( ethhdr->h_source, netdev->ll_addr, ETH_ALEN );
109
110 netdev_tx ( netdev, iob );
111 continue; /* no need to free iob */
112 }
113
114 if ( ethhdr->h_protocol != htons ( ETH_P_IP ) ) {
115 goto bad_packet;
116 }
117
118 /* IP header */
119 if ( iob_len ( iob ) < sizeof ( *iphdr ) ) {
120 goto bad_packet;
121 }
122 iphdr = iob->data;
123 iob_pull ( iob, sizeof ( *iphdr ) );
124 if ( iphdr->protocol != IP_UDP || iphdr->dest.s_addr != source_addr.sin_addr.s_addr ) {
125 goto bad_packet;
126 }
127
128 /* UDP header */
129 if ( iob_len ( iob ) < sizeof ( *udphdr ) ) {
130 goto bad_packet;
131 }
132 udphdr = iob->data;
133 if ( udphdr->dest != source_addr.sin_port ) {
134 goto bad_packet;
135 }
136
137 /* Learn the remote connection details */
139 dest_addr.sin_addr.s_addr = iphdr->src.s_addr;
140 dest_addr.sin_port = udphdr->src;
141
142 /* Payload */
143 payload_len = ntohs ( udphdr->len );
144 if ( payload_len < sizeof ( *udphdr ) || payload_len > iob_len ( iob ) ) {
145 goto bad_packet;
146 }
147 payload_len -= sizeof ( *udphdr );
148 iob_pull ( iob, sizeof ( *udphdr ) );
149 if ( payload_len > len ) {
150 goto bad_packet;
151 }
152 memcpy ( buf, iob->data, payload_len );
153
154 free_iob ( iob );
155 return payload_len;
156
157bad_packet:
158 free_iob ( iob );
159 }
160 cpu_nap();
161 }
162}
#define NULL
NULL pointer (VOID *)
Definition Base.h:322
unsigned int uint32_t
Definition stdint.h:12
ring len
Length.
Definition dwmac.h:226
static uint8_t dest_eth[ETH_ALEN]
Definition gdbudp.c:54
static struct sockaddr_in dest_addr
Definition gdbudp.c:55
static void gdbudp_ensure_netdev_open(struct net_device *netdev)
Definition gdbudp.c:58
static struct sockaddr_in source_addr
Definition gdbudp.c:56
static void * arp_sender_pa(struct arphdr *arphdr)
ARP packet sender protocol address.
Definition if_arp.h:81
static void * arp_target_ha(struct arphdr *arphdr)
ARP packet target hardware address.
Definition if_arp.h:90
#define ARPOP_REQUEST
ARP request.
Definition if_arp.h:33
static void * arp_target_pa(struct arphdr *arphdr)
ARP packet target protocol address.
Definition if_arp.h:99
#define ARPHRD_ETHER
Ethernet 10Mbps.
Definition if_arp.h:17
#define ARPOP_REPLY
ARP reply.
Definition if_arp.h:34
static void * arp_sender_ha(struct arphdr *arphdr)
ARP packet sender hardware address.
Definition if_arp.h:72
#define ETH_ALEN
Definition if_ether.h:9
#define ETH_P_IP
Definition if_ether.h:19
#define ETH_P_ARP
Definition if_ether.h:20
#define IP_UDP
Definition in.h:15
#define htons(value)
Definition byteswap.h:136
#define ntohs(value)
Definition byteswap.h:137
void cpu_nap(void)
Sleep with interrupts enabled until next CPU interrupt.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
void free_iob(struct io_buffer *iobuf)
Free I/O buffer.
Definition iobuf.c:153
#define iob_push(iobuf, len)
Definition iobuf.h:89
static size_t iob_len(struct io_buffer *iobuf)
Calculate length of data in an I/O buffer.
Definition iobuf.h:160
#define iob_pull(iobuf, len)
Definition iobuf.h:107
struct io_buffer * netdev_rx_dequeue(struct net_device *netdev)
Remove packet from device's receive queue.
Definition netdevice.c:638
void netdev_poll(struct net_device *netdev)
Poll for completed and received packets on network device.
Definition netdevice.c:613
int netdev_tx(struct net_device *netdev, struct io_buffer *iobuf)
Transmit raw packet via network device.
Definition netdevice.c:335
void * memswap(void *first, void *second, size_t len)
Swap memory regions.
Definition string.c:154
An ARP header.
Definition if_arp.h:48
uint8_t ar_hln
Link-layer address length.
Definition if_arp.h:60
uint16_t ar_op
ARP opcode.
Definition if_arp.h:64
uint16_t ar_pro
Network-layer protocol.
Definition if_arp.h:58
uint8_t ar_pln
Network-layer address length.
Definition if_arp.h:62
uint16_t ar_hrd
Link-layer protocol.
Definition if_arp.h:53
An Ethernet link-layer header.
Definition if_ether.h:32
uint16_t h_protocol
Protocol ID.
Definition if_ether.h:38
uint8_t h_dest[ETH_ALEN]
Destination MAC address.
Definition if_ether.h:34
uint8_t h_source[ETH_ALEN]
Source MAC address.
Definition if_ether.h:36
IP address structure.
Definition in.h:42
uint32_t s_addr
Definition in.h:43
A persistent I/O buffer.
Definition iobuf.h:38
void * data
Start of data.
Definition iobuf.h:53
An IPv4 packet header.
Definition ip.h:36
uint8_t protocol
Definition ip.h:43
struct in_addr dest
Definition ip.h:46
struct in_addr src
Definition ip.h:45
UDP constants.
Definition udp.h:30
uint16_t dest
Destination port.
Definition udp.h:34
uint16_t src
Source port.
Definition udp.h:32
uint16_t len
Length.
Definition udp.h:36

References arphdr::ar_hln, arphdr::ar_hrd, arphdr::ar_op, arphdr::ar_pln, arphdr::ar_pro, arp_sender_ha(), arp_sender_pa(), arp_target_ha(), arp_target_pa(), ARPHRD_ETHER, ARPOP_REPLY, ARPOP_REQUEST, cpu_nap(), io_buffer::data, iphdr::dest, udp_header::dest, dest_addr, dest_eth, ETH_ALEN, ETH_P_ARP, ETH_P_IP, free_iob(), gdbudp_ensure_netdev_open(), ethhdr::h_dest, ethhdr::h_protocol, ethhdr::h_source, htons, iob_len(), iob_pull, iob_push, IP_UDP, len, udp_header::len, memcpy(), memswap(), netdev, netdev_poll(), netdev_rx_dequeue(), netdev_tx(), ntohs, NULL, iphdr::protocol, in_addr::s_addr, source_addr, iphdr::src, and udp_header::src.

◆ gdbudp_send()

void gdbudp_send ( const char * buf,
size_t len )
static

Definition at line 164 of file gdbudp.c.

164 {
165 struct io_buffer *iob;
166 struct ethhdr *ethhdr;
167 struct iphdr *iphdr;
168 struct udp_header *udphdr;
169
170 /* Check that we are connected */
171 if ( dest_addr.sin_port == 0 ) {
172 return;
173 }
174
176
177 iob = alloc_iob ( sizeof ( *ethhdr ) + sizeof ( *iphdr ) + sizeof ( *udphdr ) + len );
178 if ( !iob ) {
179 return;
180 }
181
182 /* Payload */
183 iob_reserve ( iob, sizeof ( *ethhdr ) + sizeof ( *iphdr ) + sizeof ( *udphdr ) );
184 memcpy ( iob_put ( iob, len ), buf, len );
185
186 /* UDP header */
187 udphdr = iob_push ( iob, sizeof ( *udphdr ) );
188 udphdr->src = source_addr.sin_port;
189 udphdr->dest = dest_addr.sin_port;
190 udphdr->len = htons ( iob_len ( iob ) );
191 udphdr->chksum = 0; /* optional and we are not using it */
192
193 /* IP header */
194 iphdr = iob_push ( iob, sizeof ( *iphdr ) );
195 memset ( iphdr, 0, sizeof ( *iphdr ) );
196 iphdr->verhdrlen = ( IP_VER | ( sizeof ( *iphdr ) / 4 ) );
198 iphdr->len = htons ( iob_len ( iob ) );
199 iphdr->ttl = IP_TTL;
201 iphdr->dest.s_addr = dest_addr.sin_addr.s_addr;
202 iphdr->src.s_addr = source_addr.sin_addr.s_addr;
203 iphdr->chksum = tcpip_chksum ( iphdr, sizeof ( *iphdr ) );
204
205 /* Ethernet header */
206 ethhdr = iob_push ( iob, sizeof ( *ethhdr ) );
208 memcpy ( ethhdr->h_source, netdev->ll_addr, ETH_ALEN );
210
211 netdev_tx ( netdev, iob );
212}
void * memset(void *dest, int character, size_t len) __nonnull
struct io_buffer * alloc_iob(size_t len)
Allocate I/O buffer.
Definition iobuf.c:131
#define iob_put(iobuf, len)
Definition iobuf.h:125
#define iob_reserve(iobuf, len)
Definition iobuf.h:72
#define IP_TTL
Definition ip.h:33
#define IP_TOS
Definition ip.h:32
#define IP_VER
Definition ip.h:23
uint8_t service
Definition ip.h:38
uint16_t len
Definition ip.h:39
uint8_t ttl
Definition ip.h:42
uint8_t verhdrlen
Definition ip.h:37
uint16_t chksum
Definition ip.h:44
uint16_t chksum
Checksum.
Definition udp.h:38
uint16_t tcpip_chksum(const void *data, size_t len)
Calculate TCP/IP checkum.
Definition tcpip.c:204

References alloc_iob(), iphdr::chksum, udp_header::chksum, iphdr::dest, udp_header::dest, dest_addr, dest_eth, ETH_ALEN, ETH_P_IP, gdbudp_ensure_netdev_open(), ethhdr::h_dest, ethhdr::h_protocol, ethhdr::h_source, htons, iob_len(), iob_push, iob_put, iob_reserve, IP_TOS, IP_TTL, IP_UDP, IP_VER, iphdr::len, len, udp_header::len, memcpy(), memset(), netdev, netdev_tx(), iphdr::protocol, in_addr::s_addr, iphdr::service, source_addr, iphdr::src, udp_header::src, tcpip_chksum(), iphdr::ttl, and iphdr::verhdrlen.

◆ gdbudp_configure()

struct gdb_transport * gdbudp_configure ( const char * name,
struct sockaddr_in * addr )

Definition at line 214 of file gdbudp.c.

214 {
215 struct settings *settings;
216
217 /* Release old network device */
218 netdev_put ( netdev );
219
220 netdev = find_netdev ( name );
221 if ( !netdev ) {
222 return NULL;
223 }
224
225 /* Hold network device */
226 netdev_get ( netdev );
227
228 /* Source UDP port */
229 source_addr.sin_port = ( addr && addr->sin_port ) ? addr->sin_port : htons ( DEFAULT_PORT );
230
231 /* Source IP address */
232 if ( addr && addr->sin_addr.s_addr ) {
233 source_addr.sin_addr.s_addr = addr->sin_addr.s_addr;
234 } else {
235 settings = netdev_settings ( netdev );
236 fetch_ipv4_setting ( settings, &ip_setting, &source_addr.sin_addr );
237 if ( source_addr.sin_addr.s_addr == 0 ) {
238 netdev_put ( netdev );
239 netdev = NULL;
240 return NULL;
241 }
242 }
243
244 return &udp_gdb_transport;
245}
const char * name
Definition ath9k_hw.c:1986
uint32_t addr
Buffer address.
Definition dwmac.h:9
struct net_device * find_netdev(const char *name)
Get network device by name.
Definition netdevice.c:989
static struct net_device * netdev_get(struct net_device *netdev)
Get reference to network device.
Definition netdevice.h:565
static void netdev_put(struct net_device *netdev)
Drop reference to network device.
Definition netdevice.h:576
A settings block.
Definition settings.h:133

References addr, DEFAULT_PORT, fetch_ipv4_setting(), find_netdev(), htons, ip_setting, name, netdev, netdev_get(), netdev_put(), netdev_settings(), NULL, and source_addr.

Referenced by gdbudp_init().

◆ gdbudp_init()

int gdbudp_init ( int argc,
char ** argv )
static

Definition at line 247 of file gdbudp.c.

247 {
248 if ( argc != 1 ) {
249 printf ( "udp: missing <interface> argument\n" );
250 return 1;
251 }
252
253 if ( !gdbudp_configure ( argv[0], NULL ) ) {
254 printf ( "%s: device does not exist or has no IP address\n", argv[0] );
255 return 1;
256 }
257 return 0;
258}
struct gdb_transport * gdbudp_configure(const char *name, struct sockaddr_in *addr)
Definition gdbudp.c:214
int printf(const char *fmt,...)
Write a formatted string to the console.
Definition vsprintf.c:465

References gdbudp_configure(), NULL, and printf().

Variable Documentation

◆ __gdb_transport

struct gdb_transport udp_gdb_transport __gdb_transport
Initial value:
= {
.name = "udp",
.init = gdbudp_init,
.send = gdbudp_send,
.recv = gdbudp_recv,
}
static size_t gdbudp_recv(char *buf, size_t len)
Definition gdbudp.c:66
static void gdbudp_send(const char *buf, size_t len)
Definition gdbudp.c:164
static int gdbudp_init(int argc, char **argv)
Definition gdbudp.c:247

Definition at line 51 of file gdbudp.c.

◆ netdev

struct net_device* netdev
static

Definition at line 53 of file gdbudp.c.

Referenced by __setting(), a3c90x_close(), a3c90x_hw_start(), a3c90x_irq(), a3c90x_open(), a3c90x_poll(), a3c90x_probe(), a3c90x_process_rx_packets(), a3c90x_process_tx_packets(), a3c90x_remove(), a3c90x_transmit(), af_packet_nic_close(), af_packet_nic_irq(), af_packet_nic_open(), af_packet_nic_poll(), af_packet_nic_probe(), af_packet_nic_remove(), af_packet_nic_transmit(), af_packet_update_properties(), alloc_etherdev(), alloc_ipoibdev(), alloc_netdev(), alloc_rndis(), aoe_open(), aoe_rx(), aoecmd_tx(), aoedev_ata_command(), aoedev_open(), apply_netdev_settings(), arp_rx(), arp_tx(), arp_tx_request(), atl1e_check_link(), atl1e_clean_rx_irq(), atl1e_close(), atl1e_down(), atl1e_init_netdev(), atl1e_irq(), atl1e_mdio_read(), atl1e_mdio_write(), atl1e_open(), atl1e_poll(), atl1e_probe(), atl1e_remove(), atl1e_up(), atl1e_xmit_frame(), atl_check_link(), atl_close(), atl_irq(), atl_open(), atl_poll(), atl_poll_rx(), atl_poll_tx(), atl_probe(), atl_remove(), atl_transmit(), autoboot(), autoboot_payload(), axge_check_link(), axge_close(), axge_in_complete(), axge_intr_complete(), axge_open(), axge_out_complete(), axge_poll(), axge_probe(), axge_remove(), axge_transmit(), b44_close(), b44_close(), b44_irq(), b44_irq(), b44_open(), b44_open(), b44_poll(), b44_poll(), b44_probe(), b44_remove(), b44_set_rx_mode(), b44_set_rx_mode(), b44_transmit(), b44_transmit(), bnxt_init_one(), bnxt_remove_one(), cachedhcp_apply(), cachedhcp_probe(), cachedhcp_recycle(), cgem_check_link(), cgem_close(), cgem_expired(), cgem_open(), cgem_poll(), cgem_poll_rx(), cgem_poll_tx(), cgem_probe(), cgem_remove(), cgem_transmit(), close_other_netdevs(), create_fakedhcpack(), create_fakedhcpdiscover(), create_fakepxebsack(), dhcp_create_packet(), dhcp_create_request(), dhcp_deliver(), dm96xx_close(), dm96xx_in_complete(), dm96xx_intr_complete(), dm96xx_link_nsr(), dm96xx_open(), dm96xx_out_complete(), dm96xx_poll(), dm96xx_probe(), dm96xx_remove(), dm96xx_transmit(), dwmac_check_link(), dwmac_close(), dwmac_open(), dwmac_poll(), dwmac_poll_rx(), dwmac_poll_tx(), dwmac_probe(), dwmac_remove(), dwmac_transmit(), eap_rx(), eap_rx_failure(), eap_rx_identity(), eap_rx_md5(), eap_rx_mschapv2(), eap_rx_mschapv2_request(), eap_rx_request(), eap_rx_success(), eap_tx_nak(), eap_tx_response(), eapol_eap_rx(), eapol_expired(), eapol_key_rx(), eapol_notify(), eapol_probe(), eapol_rx(), eapol_tx(), ecm_close(), ecm_fetch_mac(), ecm_in_complete(), ecm_intr_complete(), ecm_open(), ecm_out_complete(), ecm_poll(), ecm_probe(), ecm_remove(), ecm_transmit(), efab_close(), efab_irq(), efab_open(), efab_poll(), efab_probe(), efab_remove(), efab_transmit(), efi_autoexec_network(), efi_iscsi_path(), efi_netdev_path(), efi_path_net_probe(), efi_pxe_dhcp(), efi_pxe_fake(), efi_pxe_install(), efi_snp_demux(), efi_snp_hii_package_list(), efi_snp_load_file(), efi_snp_notify(), efi_snp_probe(), efi_snp_remove(), efi_snp_set_mode(), efi_snp_set_state(), efi_undi_fill_header(), efi_undi_get_init_info(), efi_undi_initialize(), efi_undi_receive(), efi_undi_station_address(), efx_hunt_close(), efx_hunt_ev_init(), efx_hunt_irq(), efx_hunt_open(), efx_hunt_poll(), efx_hunt_rx_init(), efx_hunt_transmit(), efx_hunt_tx_init(), efx_probe(), efx_remove(), ena_cancel_tx(), ena_close(), ena_get_device_attributes(), ena_open(), ena_poll(), ena_poll_rx(), ena_poll_tx(), ena_probe(), ena_refill_rx(), ena_remove(), ena_transmit(), eoib_close(), eoib_complete_recv(), eoib_create(), eoib_destroy(), eoib_discard(), eoib_duplicate(), eoib_heartbeat_rx(), eoib_link_state_changed(), eoib_open(), eoib_poll(), eoib_transmit(), eth_pull(), eth_pull(), eth_push(), eth_push(), eth_slow_lacp_dump(), eth_slow_lacp_rx(), eth_slow_marker_dump(), eth_slow_marker_rx(), eth_slow_rx(), exanic_check_link(), exanic_close(), exanic_expired(), exanic_open(), exanic_poll(), exanic_poll_rx(), exanic_poll_tx(), exanic_probe_port(), exanic_transmit(), fcoe_fip_rx(), fcoe_notify(), fcoe_probe(), fcoe_remove(), fcoe_rx(), fdt_mac(), FILE_SECBOOT(), find_netdev(), find_netdev_by_location(), find_netdev_by_scope_id(), flexboot_nodnic_eth_close(), flexboot_nodnic_eth_complete_recv(), flexboot_nodnic_eth_complete_send(), flexboot_nodnic_eth_irq(), flexboot_nodnic_eth_open(), flexboot_nodnic_eth_poll(), flexboot_nodnic_eth_transmit(), flexboot_nodnic_poll_eq(), flexboot_nodnic_register_netdev(), flexboot_nodnic_state_change_netdev(), flexboot_nodnic_unregister_netdev(), forcedeth_close(), forcedeth_irq(), forcedeth_link_status(), forcedeth_open(), forcedeth_poll(), forcedeth_probe(), forcedeth_remove(), forcedeth_transmit(), free_netdev(), free_rndis(), gdbudp_configure(), gdbudp_ensure_netdev_open(), gdbudp_recv(), gdbudp_send(), guestinfo_net_probe(), gve_cancel_tx(), gve_close(), gve_describe(), gve_open(), gve_poll(), gve_poll_rx(), gve_poll_tx(), gve_probe(), gve_refill_rx(), gve_remove(), gve_restart(), gve_startup(), gve_transmit(), hermon_eth_close(), hermon_eth_complete_recv(), hermon_eth_complete_send(), hermon_eth_open(), hermon_eth_poll(), hermon_eth_transmit(), hermon_probe(), hermon_register_netdev(), hermon_state_change_netdev(), hermon_unregister_netdev(), hunt_close(), hunt_ev_init(), hunt_open(), hunt_poll(), hunt_probe(), hunt_remove(), hunt_rx_filter_init(), hunt_rx_filter_insert(), hunt_rx_init(), hunt_set_mac(), hunt_tx_init(), ibft_fill_nic(), ibft_fill_target_nic_association(), ibft_install(), ibft_netdev_is_required(), ice_admin_event(), ice_admin_link(), ice_admin_mac_read(), ice_admin_mac_write(), ice_close(), ice_open(), ice_probe(), ice_remove(), icmpv4_rx(), icmpv6_rx(), icmpv6_rx_echo_reply(), icmpv6_rx_echo_request(), icplus_check_link(), icplus_close(), icplus_irq(), icplus_open(), icplus_poll(), icplus_poll_rx(), icplus_poll_tx(), icplus_probe(), icplus_remove(), icplus_transmit(), ifclose(), ifclose_payload(), ifcommon_exec(), ifconf(), ifconf_payload(), ifconf_progress(), ifec_check_ru_status(), ifec_free(), ifec_get_rx_desc(), ifec_init_eeprom(), ifec_mdio_read(), ifec_mdio_setup(), ifec_mdio_write(), ifec_net_close(), ifec_net_irq(), ifec_net_open(), ifec_net_poll(), ifec_net_transmit(), ifec_pci_probe(), ifec_pci_remove(), ifec_refill_rx_ring(), ifec_reprime_ru(), ifec_reset(), ifec_rx_process(), ifec_rx_setup(), ifec_scb_cmd(), ifec_scb_cmd_wait(), ifec_tx_process(), ifec_tx_setup(), ifec_tx_wake(), iflinkwait(), iflinkwait_payload(), iflinkwait_progress(), ifopen(), ifopen_payload(), ifpoller_wait(), ifstat(), ifstat_payload(), igbvf_close(), igbvf_irq(), igbvf_open(), igbvf_poll(), igbvf_probe(), igbvf_process_rx_packets(), igbvf_process_tx_packets(), igbvf_remove(), igbvf_reset(), igbvf_set_ethtool_ops(), igbvf_transmit(), intel_check_link(), intel_close(), intel_irq(), intel_open(), intel_poll(), intel_poll_rx(), intel_poll_tx(), intel_probe(), intel_remove(), intel_transmit(), intelx_check_link(), intelx_close(), intelx_irq(), intelx_open(), intelx_poll(), intelx_probe(), intelx_remove(), intelxl_admin_event(), intelxl_admin_link(), intelxl_admin_mac_read(), intelxl_admin_mac_write(), intelxl_close(), intelxl_free_ring(), intelxl_open(), intelxl_poll(), intelxl_poll_admin(), intelxl_poll_rx(), intelxl_poll_tx(), intelxl_probe(), intelxl_remove(), intelxl_transmit(), intelxlvf_admin_command(), intelxlvf_admin_configure(), intelxlvf_admin_event(), intelxlvf_admin_get_resources(), intelxlvf_admin_irq_map(), intelxlvf_admin_link(), intelxlvf_admin_promisc(), intelxlvf_admin_queues(), intelxlvf_admin_request_qps(), intelxlvf_admin_stats(), intelxlvf_admin_status(), intelxlvf_admin_version(), intelxlvf_close(), intelxlvf_open(), intelxlvf_probe(), intelxlvf_remove(), intelxvf_check_link(), intelxvf_close(), intelxvf_irq(), intelxvf_open(), intelxvf_poll(), intelxvf_probe(), intelxvf_remove(), iphone_check_link(), iphone_close(), iphone_expired(), iphone_in_complete(), iphone_open(), iphone_out_complete(), iphone_poll(), iphone_probe(), iphone_remove(), iphone_transmit(), ipoib_close(), ipoib_complete_recv(), ipoib_discard_remac(), ipoib_link_state_changed(), ipoib_open(), ipoib_poll(), ipoib_probe(), ipoib_remove(), ipoib_translate_rx(), ipoib_translate_rx_arp(), ipoib_translate_tx(), ipoib_translate_tx_arp(), ipoib_transmit(), ipv4_add_miniroute(), ipv4_add_miniroutes(), ipv4_add_static(), ipv4_arp_check(), ipv4_del_miniroute(), ipv4_gratuitous_arp(), ipv4_has_addr(), ipv4_has_any_addr(), ipv4_rx(), ipv4_settings(), ipv4_tx(), ipv6_add_miniroute(), ipv6_create_all_routes(), ipv6_create_routes(), ipv6_dump_miniroute(), ipv6_eui64(), ipv6_fetch(), ipv6_has_addr(), ipv6_link_local(), ipv6_miniroute(), ipv6_register_settings(), ipv6_rx(), ipv6_sock_aton(), ipv6_sock_ntoa(), ipv6_tx(), ipv6conf_demux(), ipv6conf_expired(), ipv6conf_rx_router_advertisement(), ipxe(), is_autoboot_busloc(), is_autoboot_ll_addr(), iwlist_payload(), iwstat_payload(), jme_alloc_and_feed_iob(), jme_check_link(), jme_close(), jme_irq(), jme_link_change(), jme_load_macaddr(), jme_mdio_read(), jme_mdio_write(), jme_open(), jme_poll(), jme_probe(), jme_process_receive(), jme_remove(), jme_set_custom_macaddr(), jme_transmit(), jme_tx_clean(), lan78xx_close(), lan78xx_fetch_mac(), lan78xx_open(), lan78xx_probe(), lan78xx_remove(), last_opened_netdev(), last_opened_snpdev(), legacy_close(), legacy_irq(), legacy_open(), legacy_poll(), legacy_probe(), legacy_remove(), legacy_transmit(), lldp_probe(), lldp_remove(), lldp_rx(), lotest_rx(), mii_check_link(), mnpnet_close(), mnpnet_open(), mnpnet_poll(), mnpnet_poll_rx(), mnpnet_poll_tx(), mnpnet_refill_rx(), mnpnet_start(), mnpnet_stop(), mnpnet_transmit(), mnptemp_create(), mnptemp_destroy(), myri10ge_interrupt_handler(), myri10ge_net_close(), myri10ge_net_irq(), myri10ge_net_open(), myri10ge_net_poll(), myri10ge_net_transmit(), myri10ge_pci_probe(), myri10ge_pci_remove(), myri10ge_pcidev(), myson_close(), myson_irq(), myson_open(), myson_poll(), myson_poll_rx(), myson_poll_tx(), myson_probe(), myson_refill_rx(), myson_remove(), myson_transmit(), natsemi_check_link(), natsemi_close(), natsemi_irq(), natsemi_open(), natsemi_poll(), natsemi_poll_rx(), natsemi_poll_tx(), natsemi_probe(), natsemi_refill_rx(), natsemi_remove(), natsemi_transmit(), ncm_close(), ncm_in_complete(), ncm_intr_complete(), ncm_open(), ncm_out_complete(), ncm_poll(), ncm_probe(), ncm_remove(), ncm_transmit(), ndp_fetch(), ndp_prefix_fetch_ip6(), ndp_register_settings(), ndp_rx_neighbour(), ndp_rx_neighbour_advertisement_ll_target(), ndp_rx_neighbour_solicitation_ll_source(), ndp_rx_option(), ndp_rx_options(), ndp_rx_router_advertisement(), ndp_rx_router_advertisement_ll_source(), ndp_rx_router_advertisement_prefix(), ndp_tx(), ndp_tx_ll_addr(), ndp_tx_request(), ndp_tx_router_solicitation(), neighbour_create(), neighbour_define(), neighbour_destroy(), neighbour_discover(), neighbour_discovered(), neighbour_expired(), neighbour_find(), neighbour_flush(), neighbour_tx(), neighbour_tx_queue(), neighbour_update(), net80211_alloc(), net80211_get(), net80211_ll_pull(), net80211_ll_pull(), net80211_ll_push(), net80211_netdev_close(), net80211_netdev_irq(), net80211_netdev_open(), net80211_netdev_poll(), net80211_netdev_transmit(), net_discard(), net_poll(), net_rx(), net_tx(), netboot(), netdev_addr(), netdev_close(), netdev_config_close(), netdev_configuration(), netdev_configuration_in_progress(), netdev_configuration_ok(), netdev_configurator_applies(), netdev_configure(), netdev_configure_all(), netdev_fetch(), netdev_fetch_busid(), netdev_fetch_busloc(), netdev_fetch_bustype(), netdev_fetch_chip(), netdev_fetch_hwaddr(), netdev_fetch_ifname(), netdev_fetch_linktype(), netdev_fetch_mac(), netdev_get(), netdev_has_configuration_rc(), netdev_has_ll_addr(), netdev_init(), netdev_insomniac(), netdev_irq(), netdev_irq_enabled(), netdev_irq_supported(), netdev_is_open(), netdev_link_block(), netdev_link_block_expired(), netdev_link_blocked(), netdev_link_down(), netdev_link_err(), netdev_link_ok(), netdev_link_unblock(), netdev_link_up(), netdev_notify(), netdev_nullify(), netdev_open(), netdev_poll(), netdev_priv(), netdev_priv_offset(), netdev_put(), netdev_redirect(), netdev_rx(), netdev_rx_dequeue(), netdev_rx_err(), netdev_rx_flush(), netdev_rx_freeze(), netdev_rx_frozen(), netdev_rx_unfreeze(), netdev_settings(), netdev_settings_init(), netdev_store(), netdev_store_mac(), netdev_tx(), netdev_tx_complete(), netdev_tx_complete_err(), netdev_tx_complete_next(), netdev_tx_complete_next_err(), netdev_tx_defer(), netdev_tx_err(), netdev_tx_flush(), netfront_close(), netfront_net_probe(), netfront_open(), netfront_poll(), netfront_poll_rx(), netfront_poll_tx(), netfront_probe(), netfront_refill_rx(), netfront_remove(), netfront_transmit(), netvsc_reset(), nii_close(), nii_get_init_info(), nii_get_station_address(), nii_open(), nii_poll(), nii_poll_link(), nii_poll_rx(), nii_poll_tx(), nii_set_station_address(), nii_start(), nii_stop(), nii_transmit(), nstat(), null_close(), null_irq(), null_open(), null_poll(), null_transmit(), nv_process_rx_packets(), nv_process_tx_packets(), parse_netdev(), pcnet32_close(), pcnet32_irq(), pcnet32_mdio_read(), pcnet32_mdio_write(), pcnet32_open(), pcnet32_poll(), pcnet32_probe(), pcnet32_process_rx_packets(), pcnet32_process_tx_packets(), pcnet32_remove(), pcnet32_transmit(), peerdisc_socket_tx(), phantom_close(), phantom_irq(), phantom_open(), phantom_poll(), phantom_poll_link_state(), phantom_probe(), phantom_refill_rx_ring(), phantom_remove(), phantom_transmit(), pnic_close(), pnic_irq(), pnic_open(), pnic_poll(), pnic_probe(), pnic_remove(), pnic_transmit(), pxe_activate(), pxe_exec(), pxe_menu_boot(), pxe_menu_boot(), pxe_notify(), pxe_set_netdev(), pxebs(), pxebs_exec(), pxenv_start_undi(), rarp_rx(), rdc_check_link(), rdc_close(), rdc_irq(), rdc_open(), rdc_poll(), rdc_poll_rx(), rdc_poll_tx(), rdc_probe(), rdc_remove(), rdc_transmit(), realtek_check_link(), realtek_close(), realtek_init_eeprom(), realtek_irq(), realtek_legacy_poll_rx(), realtek_open(), realtek_poll(), realtek_poll_rx(), realtek_poll_tx(), realtek_probe(), realtek_remove(), realtek_transmit(), register_netdev(), register_rndis(), rhine_check_link(), rhine_close(), rhine_irq(), rhine_open(), rhine_poll(), rhine_poll_rx(), rhine_poll_tx(), rhine_probe(), rhine_remove(), rhine_transmit(), rndis_close(), rndis_describe(), rndis_open(), rndis_poll(), rndis_rx(), rndis_rx_data(), rndis_rx_err(), rndis_rx_message(), rndis_rx_query_oid(), rndis_rx_status(), rndis_transmit(), rndis_tx_complete_err(), rndis_tx_defer(), route(), route_ipv4_print(), route_ipv6_print(), sis190_init_board(), skeleton_check_link(), skeleton_close(), skeleton_irq(), skeleton_open(), skeleton_poll(), skeleton_probe(), skeleton_remove(), skeleton_transmit(), slirp_add_poll(), slirp_close(), slirp_get_revents(), slirp_guest_error(), slirp_notify(), slirp_open(), slirp_poll(), slirp_probe(), slirp_register_poll_fd(), slirp_remove(), slirp_send_packet(), slirp_timer_free(), slirp_timer_mod(), slirp_timer_new(), slirp_transmit(), slirp_unregister_poll_fd(), smsc75xx_close(), smsc75xx_in_complete(), smsc75xx_open(), smsc75xx_poll(), smsc75xx_probe(), smsc75xx_remove(), smsc75xx_transmit(), smsc95xx_close(), smsc95xx_fetch_mac(), smsc95xx_in_complete(), smsc95xx_open(), smsc95xx_poll(), smsc95xx_probe(), smsc95xx_remove(), smsc95xx_transmit(), smsc95xx_vm3_fetch_mac(), smscusb_eeprom_fetch_mac(), smscusb_fdt_fetch_mac(), smscusb_init(), smscusb_intr_complete(), smscusb_mii_check_link(), smscusb_otp_fetch_mac(), smscusb_out_complete(), smscusb_set_address(), smscusb_set_filter(), snpnet_check_link(), snpnet_close(), snpnet_dump_mode(), snpnet_open(), snpnet_poll(), snpnet_poll_rx(), snpnet_poll_tx(), snpnet_rx_filters(), snpnet_start(), snpnet_stop(), snpnet_transmit(), start_dhcp(), start_dhcpv6(), start_ipv6conf(), start_pxebs(), startpxe_payload(), stp_rx(), tap_close(), tap_irq(), tap_open(), tap_poll(), tap_probe(), tap_remove(), tap_transmit(), tcp_rx(), tcpip_mtu(), tcpip_rx(), tcpip_tx(), testnet_close(), testnet_open(), testnet_poll(), testnet_transmit(), tg3_remove_one(), txnic_alloc(), txnic_complete_rqe(), txnic_complete_sqe(), txnic_free(), txnic_lmac_close(), txnic_lmac_open(), txnic_lmac_poll(), txnic_lmac_probe(), txnic_lmac_transmit(), txnic_lmac_update_link(), udp_rx(), udp_tx(), undinet_close(), undinet_irq(), undinet_irq_is_broken(), undinet_open(), undinet_poll(), undinet_probe(), undinet_remove(), undinet_transmit(), unregister_netdev(), unregister_rndis(), vdestroy_exec(), velocity_check_link(), velocity_close(), velocity_irq(), velocity_open(), velocity_poll(), velocity_probe(), velocity_remove(), velocity_transmit(), virtnet_close(), virtnet_enqueue_iob(), virtnet_free_virtqueues(), virtnet_irq(), virtnet_open(), virtnet_open_legacy(), virtnet_open_modern(), virtnet_poll(), virtnet_probe_legacy(), virtnet_probe_modern(), virtnet_process_rx_packets(), virtnet_process_tx_packets(), virtnet_refill_rx_virtqueue(), virtnet_remove(), virtnet_transmit(), vlan_close(), vlan_create(), vlan_destroy(), vlan_find(), vlan_irq(), vlan_netdev_rx(), vlan_netdev_rx_err(), vlan_netdev_rx_err(), vlan_notify(), vlan_open(), vlan_poll(), vlan_remove_first(), vlan_rx(), vlan_sync(), vlan_tag(), vlan_tci(), vlan_tci(), vlan_transmit(), vmxnet3_check_link(), vmxnet3_close(), vmxnet3_flush_rx(), vmxnet3_flush_tx(), vmxnet3_irq(), vmxnet3_open(), vmxnet3_poll(), vmxnet3_poll_events(), vmxnet3_poll_rx(), vmxnet3_poll_tx(), vmxnet3_probe(), vmxnet3_refill_rx(), vmxnet3_remove(), vmxnet3_transmit(), vxge_irq(), vxge_xmit_compl(), xsigo_net_notify(), xsmp_tx_xve_params(), xve_close(), xve_open(), and xve_update_mtu().

◆ dest_eth

uint8_t dest_eth[ETH_ALEN]
static

Definition at line 54 of file gdbudp.c.

Referenced by gdbudp_recv(), and gdbudp_send().

◆ dest_addr

struct sockaddr_in dest_addr
static

Definition at line 55 of file gdbudp.c.

Referenced by gdbudp_recv(), gdbudp_send(), and linux_sendto().

◆ source_addr

struct sockaddr_in source_addr
static

Definition at line 56 of file gdbudp.c.

Referenced by gdbudp_configure(), gdbudp_recv(), and gdbudp_send().