iPXE
Enumerations | Functions | Variables
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)
 
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 46 of file gdbudp.c.

46  {
47  DEFAULT_PORT = 43770, /* UDP listen port */
48 };

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL  )

◆ gdbudp_ensure_netdev_open()

static void gdbudp_ensure_netdev_open ( struct net_device netdev)
static

Definition at line 57 of file gdbudp.c.

57  {
58  /* The device may have been closed between breakpoints */
59  assert ( netdev );
60  netdev_open ( netdev );
61 
62  /* Strictly speaking, we may need to close the device when leaving the interrupt handler */
63 }
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
static struct net_device * netdev
Definition: gdbudp.c:52
int netdev_open(struct net_device *netdev)
Open network device.
Definition: netdevice.c:861

References assert(), netdev, and netdev_open().

Referenced by gdbudp_recv(), and gdbudp_send().

◆ gdbudp_recv()

static size_t gdbudp_recv ( char *  buf,
size_t  len 
)
static

Definition at line 65 of file gdbudp.c.

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

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, udp_header::dest, iphdr::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, net_device::ll_addr, memcpy(), memswap(), netdev, netdev_poll(), netdev_rx_dequeue(), netdev_tx(), ntohs, NULL, iphdr::protocol, in_addr::s_addr, sockaddr_in::sin_addr, sockaddr_in::sin_port, source_addr, udp_header::src, and iphdr::src.

◆ gdbudp_send()

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

Definition at line 163 of file gdbudp.c.

163  {
164  struct io_buffer *iob;
165  struct ethhdr *ethhdr;
166  struct iphdr *iphdr;
167  struct udp_header *udphdr;
168 
169  /* Check that we are connected */
170  if ( dest_addr.sin_port == 0 ) {
171  return;
172  }
173 
175 
176  iob = alloc_iob ( sizeof ( *ethhdr ) + sizeof ( *iphdr ) + sizeof ( *udphdr ) + len );
177  if ( !iob ) {
178  return;
179  }
180 
181  /* Payload */
182  iob_reserve ( iob, sizeof ( *ethhdr ) + sizeof ( *iphdr ) + sizeof ( *udphdr ) );
183  memcpy ( iob_put ( iob, len ), buf, len );
184 
185  /* UDP header */
186  udphdr = iob_push ( iob, sizeof ( *udphdr ) );
187  udphdr->src = source_addr.sin_port;
188  udphdr->dest = dest_addr.sin_port;
189  udphdr->len = htons ( iob_len ( iob ) );
190  udphdr->chksum = 0; /* optional and we are not using it */
191 
192  /* IP header */
193  iphdr = iob_push ( iob, sizeof ( *iphdr ) );
194  memset ( iphdr, 0, sizeof ( *iphdr ) );
195  iphdr->verhdrlen = ( IP_VER | ( sizeof ( *iphdr ) / 4 ) );
196  iphdr->service = IP_TOS;
197  iphdr->len = htons ( iob_len ( iob ) );
198  iphdr->ttl = IP_TTL;
199  iphdr->protocol = IP_UDP;
202  iphdr->chksum = tcpip_chksum ( iphdr, sizeof ( *iphdr ) );
203 
204  /* Ethernet header */
205  ethhdr = iob_push ( iob, sizeof ( *ethhdr ) );
209 
210  netdev_tx ( netdev, iob );
211 }
uint16_t h_protocol
Protocol ID.
Definition: if_ether.h:37
#define iob_put(iobuf, len)
Definition: iobuf.h:120
uint16_t chksum
Checksum.
Definition: udp.h:37
#define IP_UDP
Definition: in.h:14
#define IP_VER
Definition: ip.h:22
struct in_addr src
Definition: ip.h:44
#define iob_push(iobuf, len)
Definition: iobuf.h:84
#define ETH_P_IP
Definition: if_ether.h:18
static uint8_t dest_eth[ETH_ALEN]
Definition: gdbudp.c:53
uint16_t chksum
Definition: ip.h:43
An IPv4 packet header.
Definition: ip.h:35
struct io_buffer * alloc_iob(size_t len)
Allocate I/O buffer.
Definition: iobuf.c:129
uint16_t src
Source port.
Definition: udp.h:31
#define IP_TTL
Definition: ip.h:32
uint16_t len
Length.
Definition: udp.h:35
uint8_t h_dest[ETH_ALEN]
Destination MAC address.
Definition: if_ether.h:33
void * memcpy(void *dest, const void *src, size_t len) __nonnull
static void gdbudp_ensure_netdev_open(struct net_device *netdev)
Definition: gdbudp.c:57
uint16_t len
Definition: ip.h:38
static struct net_device * netdev
Definition: gdbudp.c:52
uint8_t verhdrlen
Definition: ip.h:36
uint16_t sin_port
TCP/IP port (part of struct sockaddr_tcpip)
Definition: in.h:91
static size_t iob_len(struct io_buffer *iobuf)
Calculate length of data in an I/O buffer.
Definition: iobuf.h:155
int netdev_tx(struct net_device *netdev, struct io_buffer *iobuf)
Transmit raw packet via network device.
Definition: netdevice.c:334
uint8_t h_source[ETH_ALEN]
Source MAC address.
Definition: if_ether.h:35
struct in_addr dest
Definition: ip.h:45
#define ETH_ALEN
Definition: if_ether.h:8
uint16_t dest
Destination port.
Definition: udp.h:33
static struct sockaddr_in source_addr
Definition: gdbudp.c:55
uint32_t s_addr
Definition: in.h:40
struct in_addr sin_addr
IPv4 address.
Definition: in.h:98
uint8_t protocol
Definition: ip.h:42
#define iob_reserve(iobuf, len)
Definition: iobuf.h:67
#define IP_TOS
Definition: ip.h:31
uint32_t len
Length.
Definition: ena.h:14
uint8_t ll_addr[MAX_LL_ADDR_LEN]
Link-layer address.
Definition: netdevice.h:387
UDP constants.
Definition: udp.h:29
uint8_t ttl
Definition: ip.h:41
uint16_t tcpip_chksum(const void *data, size_t len)
Calculate TCP/IP checkum.
Definition: tcpip.c:203
uint8_t service
Definition: ip.h:37
An Ethernet link-layer header.
Definition: if_ether.h:31
#define htons(value)
Definition: byteswap.h:135
void * memset(void *dest, int character, size_t len) __nonnull
A persistent I/O buffer.
Definition: iobuf.h:33
static struct sockaddr_in dest_addr
Definition: gdbudp.c:54

References alloc_iob(), udp_header::chksum, iphdr::chksum, udp_header::dest, iphdr::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, len, udp_header::len, iphdr::len, net_device::ll_addr, memcpy(), memset(), netdev, netdev_tx(), iphdr::protocol, in_addr::s_addr, iphdr::service, sockaddr_in::sin_addr, sockaddr_in::sin_port, source_addr, udp_header::src, iphdr::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 213 of file gdbudp.c.

213  {
214  struct settings *settings;
215 
216  /* Release old network device */
217  netdev_put ( netdev );
218 
219  netdev = find_netdev ( name );
220  if ( !netdev ) {
221  return NULL;
222  }
223 
224  /* Hold network device */
225  netdev_get ( netdev );
226 
227  /* Source UDP port */
228  source_addr.sin_port = ( addr && addr->sin_port ) ? addr->sin_port : htons ( DEFAULT_PORT );
229 
230  /* Source IP address */
231  if ( addr && addr->sin_addr.s_addr ) {
232  source_addr.sin_addr.s_addr = addr->sin_addr.s_addr;
233  } else {
235  fetch_ipv4_setting ( settings, &ip_setting, &source_addr.sin_addr );
236  if ( source_addr.sin_addr.s_addr == 0 ) {
237  netdev_put ( netdev );
238  netdev = NULL;
239  return NULL;
240  }
241  }
242 
243  return &udp_gdb_transport;
244 }
const char * name
Definition: ath9k_hw.c:1984
int fetch_ipv4_setting(struct settings *settings, const struct setting *setting, struct in_addr *inp)
Fetch value of IPv4 address setting.
Definition: settings.c:912
static struct settings * netdev_settings(struct net_device *netdev)
Get per-netdevice configuration settings block.
Definition: netdevice.h:583
static void netdev_put(struct net_device *netdev)
Drop reference to network device.
Definition: netdevice.h:572
static struct net_device * netdev
Definition: gdbudp.c:52
uint16_t sin_port
TCP/IP port (part of struct sockaddr_tcpip)
Definition: in.h:91
A settings block.
Definition: settings.h:132
u32 addr
Definition: sky2.h:8
static struct net_device * netdev_get(struct net_device *netdev)
Get reference to network device.
Definition: netdevice.h:561
static struct sockaddr_in source_addr
Definition: gdbudp.c:55
uint32_t s_addr
Definition: in.h:40
struct in_addr sin_addr
IPv4 address.
Definition: in.h:98
struct net_device * find_netdev(const char *name)
Get network device by name.
Definition: netdevice.c:988
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
#define htons(value)
Definition: byteswap.h:135

References addr, DEFAULT_PORT, fetch_ipv4_setting(), find_netdev(), htons, name, netdev, netdev_get(), netdev_put(), netdev_settings(), NULL, in_addr::s_addr, sockaddr_in::sin_addr, sockaddr_in::sin_port, and source_addr.

Referenced by gdbudp_init().

◆ gdbudp_init()

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

Definition at line 246 of file gdbudp.c.

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

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 void gdbudp_send(const char *buf, size_t len)
Definition: gdbudp.c:163
static int gdbudp_init(int argc, char **argv)
Definition: gdbudp.c:246
static size_t gdbudp_recv(char *buf, size_t len)
Definition: gdbudp.c:65

Definition at line 50 of file gdbudp.c.

◆ netdev

struct net_device* netdev
static

Definition at line 52 of file gdbudp.c.

Referenced by 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(), add_ipv4_miniroute(), alloc_etherdev(), alloc_ipoibdev(), alloc_netdev(), alloc_rndis(), aoe_open(), 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(), 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_irq(), b44_open(), b44_poll(), b44_probe(), b44_remove(), b44_set_rx_mode(), b44_transmit(), bnxt_init_one(), bnxt_remove_one(), cachedhcp_apply(), cachedhcp_probe(), close_other_netdevs(), create_fakedhcpack(), create_fakedhcpdiscover(), create_fakepxebsack(), del_ipv4_miniroute(), 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(), 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_iscsi_path(), efi_netdev_path(), efi_pxe_dhcp(), 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_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_link_state_changed(), eoib_open(), eoib_poll(), eoib_transmit(), 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_rx(), fdt_mac(), 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(), 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(), icmpv6_rx(), 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_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_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_arp_check(), 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_irq(), legacy_poll(), legacy_probe(), legacy_remove(), legacy_transmit(), lldp_probe(), lldp_rx(), lotest_rx(), mii_check_link(), 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_update(), net80211_alloc(), net80211_get(), 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_mac(), netdev_get(), netdev_has_configuration_rc(), netdev_has_ll_addr(), netdev_init(), 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(), 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_irq(), pnic_poll(), pnic_probe(), pnic_remove(), pnic_transmit(), pxe_activate(), pxe_exec(), pxe_menu_boot(), pxe_notify(), pxe_set_netdev(), pxebs(), pxebs_exec(), pxenv_start_undi(), 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(), 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_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(), tcpip_mtu(), tcpip_rx(), tcpip_tx(), 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_tx(), undinet_close(), undinet_irq(), 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_notify(), vlan_open(), vlan_poll(), vlan_remove_first(), vlan_rx(), vlan_sync(), vlan_tag(), 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 53 of file gdbudp.c.

Referenced by gdbudp_recv(), and gdbudp_send().

◆ dest_addr

struct sockaddr_in dest_addr
static

Definition at line 54 of file gdbudp.c.

Referenced by gdbudp_recv(), and gdbudp_send().

◆ source_addr

struct sockaddr_in source_addr
static

Definition at line 55 of file gdbudp.c.

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