houskeeping

git-svn-id: svn://svn.berlios.de/openocd/trunk@1255 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
oharboe 2008-12-17 13:39:40 +00:00
parent ff2cb7714f
commit bb56339761
3 changed files with 122 additions and 59 deletions

View File

@ -419,60 +419,6 @@ static int zylinjtag_Jim_Command_reboot(Jim_Interp *interp, int argc,
return JIM_OK;
}
static int zylinjtag_Jim_Command_mac(Jim_Interp *interp, int argc,
Jim_Obj * const *argv)
{
Jim_Obj *tclOutput = Jim_NewStringObj(interp, "", 0);
Jim_AppendString(httpstate.jim_interp, tclOutput, hwaddr, strlen(hwaddr));
Jim_SetResult(interp, tclOutput);
return JIM_OK;
}
static int zylinjtag_Jim_Command_ip(Jim_Interp *interp, int argc,
Jim_Obj * const *argv)
{
Jim_Obj *tclOutput = Jim_NewStringObj(interp, "", 0);
struct ifaddrs *ifa = NULL, *ifp = NULL;
if (getifaddrs(&ifp) < 0)
{
return JIM_ERR;
}
for (ifa = ifp; ifa; ifa = ifa->ifa_next)
{
char ip[200];
socklen_t salen;
if (ifa->ifa_addr->sa_family == AF_INET)
salen = sizeof(struct sockaddr_in);
else if (ifa->ifa_addr->sa_family == AF_INET6)
salen = sizeof(struct sockaddr_in6);
else
continue;
if (getnameinfo(ifa->ifa_addr, salen, ip, sizeof(ip), NULL, 0,
NI_NUMERICHOST) < 0)
{
continue;
}
Jim_AppendString(httpstate.jim_interp, tclOutput, ip, strlen(ip));
break;
}
freeifaddrs(ifp);
Jim_SetResult(interp, tclOutput);
return JIM_OK;
}
extern Jim_Interp *interp;
@ -506,10 +452,6 @@ static void zylinjtag_startNetwork()
zylinjtag_Jim_Command_reboot, NULL, NULL);
Jim_CreateCommand(httpstate.jim_interp, "threads",
zylinjtag_Jim_Command_threads, NULL, NULL);
Jim_CreateCommand(httpstate.jim_interp, "mac", zylinjtag_Jim_Command_mac,
NULL, NULL);
Jim_CreateCommand(httpstate.jim_interp, "ip", zylinjtag_Jim_Command_ip,
NULL, NULL);
Jim_CreateCommand(httpstate.jim_interp, "format_jffs2",
zylinjtag_Jim_Command_format_jffs2, NULL, NULL);

View File

@ -63,6 +63,8 @@
#include <string.h>
#include <ifaddrs.h>
#include <unistd.h>
#include <stdio.h>
@ -557,6 +559,120 @@ zylinjtag_Jim_Command_poke(Jim_Interp *interp,
return JIM_OK;
}
/* not so pretty code to fish out ip number*/
static int zylinjtag_Jim_Command_ip(Jim_Interp *interp, int argc,
Jim_Obj * const *argv)
{
Jim_Obj *tclOutput = Jim_NewStringObj(interp, "", 0);
struct ifaddrs *ifa = NULL, *ifp = NULL;
if (getifaddrs(&ifp) < 0)
{
return JIM_ERR;
}
for (ifa = ifp; ifa; ifa = ifa->ifa_next)
{
char ip[200];
socklen_t salen;
if (ifa->ifa_addr->sa_family == AF_INET)
salen = sizeof(struct sockaddr_in);
else if (ifa->ifa_addr->sa_family == AF_INET6)
salen = sizeof(struct sockaddr_in6);
else
continue;
if (getnameinfo(ifa->ifa_addr, salen, ip, sizeof(ip), NULL, 0,
NI_NUMERICHOST) < 0)
{
continue;
}
Jim_AppendString(interp, tclOutput, ip, strlen(ip));
break;
}
freeifaddrs(ifp);
Jim_SetResult(interp, tclOutput);
return JIM_OK;
}
/* not so pretty code to fish out eth0 mac address */
static int zylinjtag_Jim_Command_mac(Jim_Interp *interp, int argc,
Jim_Obj * const *argv)
{
struct ifreq *ifr, *ifend;
struct ifreq ifreq;
struct ifconf ifc;
struct ifreq ifs[5];
int SockFD;
SockFD = socket(AF_INET, SOCK_DGRAM, 0);
if (SockFD < 0)
{
return JIM_ERR;
}
ifc.ifc_len = sizeof(ifs);
ifc.ifc_req = ifs;
if (ioctl(SockFD, SIOCGIFCONF, &ifc) < 0)
{
close(SockFD);
return JIM_ERR;
}
ifend = ifs + (ifc.ifc_len / sizeof(struct ifreq));
for (ifr = ifc.ifc_req; ifr < ifend; ifr++)
{
//if (ifr->ifr_addr.sa_family == AF_INET)
{
if (strcmp("eth0", ifr->ifr_name)!=0)
continue;
strncpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name));
if (ioctl(SockFD, SIOCGIFHWADDR, &ifreq) < 0)
{
close(SockFD);
return JIM_ERR;
}
close(SockFD);
Jim_Obj *tclOutput = Jim_NewStringObj(interp, "", 0);
char buffer[256];
sprintf(buffer, "%02x-%02x-%02x-%02x-%02x-%02x",
ifreq.ifr_hwaddr.sa_data[0]&0xff,
ifreq.ifr_hwaddr.sa_data[1]&0xff,
ifreq.ifr_hwaddr.sa_data[2]&0xff,
ifreq.ifr_hwaddr.sa_data[3]&0xff,
ifreq.ifr_hwaddr.sa_data[4]&0xff,
ifreq.ifr_hwaddr.sa_data[5]&0xff);
Jim_AppendString(interp, tclOutput, buffer, strlen(buffer));
Jim_SetResult(interp, tclOutput);
return JIM_OK;
}
}
close(SockFD);
return JIM_ERR;
}
int ioutil_init(struct command_context_s *cmd_ctx)
{
register_command(cmd_ctx, NULL, "rm", handle_rm_command, COMMAND_ANY,
@ -583,6 +699,11 @@ int ioutil_init(struct command_context_s *cmd_ctx)
Jim_CreateCommand(interp, "poke", zylinjtag_Jim_Command_poke, NULL, NULL);
Jim_CreateCommand(interp, "ls", zylinjtag_Jim_Command_ls, NULL, NULL);
Jim_CreateCommand(interp, "mac", zylinjtag_Jim_Command_mac,
NULL, NULL);
Jim_CreateCommand(interp, "ip", zylinjtag_Jim_Command_ip,
NULL, NULL);
return ERROR_OK;
}

View File

@ -626,7 +626,7 @@ int telnet_register_commands(command_context_t *command_context)
COMMAND_EXEC, "exit telnet session");
register_command(command_context, NULL, "telnet_port", handle_telnet_port_command,
COMMAND_CONFIG, "port on which to listen for incoming telnet connections");
COMMAND_ANY, "port on which to listen for incoming telnet connections");
return ERROR_OK;
}