unsigned short manual_port_unused = 0;
if (!manual_hdr->is_reply) {
/* process */
+ int packet_length = manual_pkt.len;
kdp_packet((unsigned char *)&manual_pkt.data,
- (int *)&manual_pkt.len,
+ &packet_length,
&manual_port_unused);
+ manual_pkt.len = packet_length;
}
manual_pkt.input = 0;
}
}
void
-kdp_get_dump_info(uint32_t *flags, char *filename, char *destipstr,
- char *routeripstr, uint32_t *port)
+kdp_get_dump_info(kdp_dumpinfo_reply_t *rp)
{
- if (destipstr) {
+ if (rp->destip) {
if (panicd_specified)
- strlcpy(destipstr, panicd_ip_str,
+ strlcpy(rp->destip, panicd_ip_str,
sizeof(panicd_ip_str));
else
- destipstr[0] = '\0';
+ rp->destip[0] = '\0';
}
- if (routeripstr) {
+ if (rp->routerip) {
if (router_specified)
- strlcpy(routeripstr, router_ip_str,
+ strlcpy(rp->routerip, router_ip_str,
sizeof(router_ip_str));
else
- routeripstr[0] = '\0';
+ rp->routerip[0] = '\0';
}
- if (filename) {
+ if (rp->name) {
if (corename_specified)
- strlcpy(filename, corename_str,
+ strlcpy(rp->name, corename_str,
sizeof(corename_str));
else
- filename[0] = '\0';
+ rp->name[0] = '\0';
}
- if (port)
- *port = panicd_port;
-
- if (flags) {
- *flags = 0;
- if (!panicd_specified)
- *flags |= KDP_DUMPINFO_DISABLE;
- else if (kdp_flag & PANIC_LOG_DUMP)
- *flags |= KDP_DUMPINFO_PANICLOG;
- else
- *flags |= KDP_DUMPINFO_CORE;
+ rp->port = panicd_port;
- if (noresume_on_disconnect)
- *flags |= KDP_DUMPINFO_NORESUME;
- }
+ rp->type = 0;
+ if (!panicd_specified)
+ rp->type |= KDP_DUMPINFO_DISABLE;
+ else if (kdp_flag & PANIC_LOG_DUMP)
+ rp->type |= KDP_DUMPINFO_PANICLOG;
+ else
+ rp->type |= KDP_DUMPINFO_CORE;
+
+ if (noresume_on_disconnect)
+ rp->type |= KDP_DUMPINFO_NORESUME;
}
struct kdp_in_addr ipaddr;
struct kdp_ether_addr macaddr;
+ boolean_t kdp_match_name_found = PE_parse_boot_argn("kdp_match_name", kdpname, sizeof(kdpname));
+ boolean_t kdp_not_serial = kdp_match_name_found ? (strncmp(kdpname, "serial", sizeof(kdpname))) : TRUE;
+
// serial must be explicitly requested
- if(!PE_parse_boot_argn("kdp_match_name", kdpname, sizeof(kdpname)) || strncmp(kdpname, "serial", sizeof(kdpname)) != 0)
+ if(!kdp_match_name_found || kdp_not_serial)
return;
#if WITH_CONSISTENT_DBG
- if (PE_consistent_debug_enabled() && debug_boot_arg) {
+ if (kdp_not_serial && PE_consistent_debug_enabled() && debug_boot_arg) {
current_debugger = HW_SHM_CUR_DB;
return;
} else {
- printf("Consistent debug disabled or debug boot arg not present, falling through to serial for debugger\n");
+ printf("Serial requested, consistent debug disabled or debug boot arg not present, configuring debugging over serial\n");
}
#endif /* WITH_CONSISTENT_DBG */