From: Heidi E. <hei...@us...> - 2005-04-13 14:41:39
|
Update of /cvsroot/sblim/cmpi-network In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9049 Modified Files: cmpiOSBase_EthernetPort.c OSBase_CommonNetwork.c OSBase_CommonNetwork.h Log Message: feature request# 1182259: MAC address is set as value for property PermanentAddress of class Linux_EthernetPort Index: OSBase_CommonNetwork.c =================================================================== RCS file: /cvsroot/sblim/cmpi-network/OSBase_CommonNetwork.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- OSBase_CommonNetwork.c 7 Mar 2005 09:46:00 -0000 1.7 +++ OSBase_CommonNetwork.c 13 Apr 2005 14:41:08 -0000 1.8 @@ -156,6 +156,7 @@ rc = 0; } } + else { freeresultbuf(hderr); } freeresultbuf(hdout); _OSBASE_TRACE(3,("--- enum_all_netPorts() exited")); @@ -214,6 +215,8 @@ char ** hdout = NULL; char ** hderr = NULL; char * cmd = NULL; + char * ptr = NULL; + char * end = NULL; int rc = 0; _OSBASE_TRACE(4,("--- _netPort_data() called")); @@ -230,14 +233,32 @@ /* EnabledStatus : Unknown = 0 ; Enabled = 2 ; Disabled = 3 */ (*sptr)->enabled = _get_port_status(id); + /* PermanentAddress */ + cmd = calloc(1,100); + strcpy(cmd, "/sbin/ifconfig "); + strcat(cmd, id); + rc = runcommand(cmd, NULL , &hdout , &hderr); + memset(cmd,0,100); + rc=0; + if(rc==0) { + if( (ptr=strstr(hdout[0],"HWaddr")) != NULL) { + ptr=strchr(ptr,' '); + end=strchr(ptr+1,' '); + (*sptr)->mac_addr = calloc(1,strlen(ptr)-strlen(end)); + strncpy((*sptr)->mac_addr,ptr+1,strlen(ptr)-strlen(end)-1); + } + } + freeresultbuf(hdout); + freeresultbuf(hderr); + /* Speed and MaxSpeed ... depends on used Link Technology */ /* Ethernet */ if( (*sptr)->linkTec == 2 ) { - cmd = calloc(1,(strlen(id)+19)); strcpy(cmd, "/sbin/mii-tool -v "); strcat(cmd, id); rc = runcommand(cmd, NULL, &hdout, &hderr); + memset(cmd,0,100); if( (rc == 0) && (hdout != NULL) ) { if( strstr(hdout[0], "100base") != NULL ) { (*sptr)->speed = 100*1024*1024; /* Bits per second */ @@ -254,7 +275,6 @@ } } } - if(cmd) free(cmd); freeresultbuf(hdout); freeresultbuf(hderr); rc=0; @@ -266,6 +286,7 @@ /* Other : Local Loopback */ /* else if( (*sptr)->linkTec == 1 ) { } */ + if(cmd) free(cmd); _OSBASE_TRACE(4,("--- _netPort_data() exited")); return rc; } @@ -287,6 +308,7 @@ void free_netPort( struct cim_netPort * sptr ) { if(sptr == NULL) return; if(sptr->name) free(sptr->name); + if(sptr->mac_addr) free(sptr->mac_addr); free(sptr); } Index: cmpiOSBase_EthernetPort.c =================================================================== RCS file: /cvsroot/sblim/cmpi-network/cmpiOSBase_EthernetPort.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- cmpiOSBase_EthernetPort.c 20 Sep 2004 12:16:06 -0000 1.8 +++ cmpiOSBase_EthernetPort.c 13 Apr 2005 14:41:08 -0000 1.9 @@ -159,6 +159,8 @@ CMSetProperty( ci, "Speed", (CMPIValue*)&(sptr->speed), CMPI_uint64); CMSetProperty( ci, "MaxSpeed", (CMPIValue*)&(sptr->maxSpeed), CMPI_uint64); + CMSetProperty( ci, "PermanentAddress", sptr->mac_addr, CMPI_chars); + /* 2.7 */ #ifndef CIM26COMPAT CMSetProperty( ci, "ElementName", sptr->name, CMPI_chars); Index: OSBase_CommonNetwork.h =================================================================== RCS file: /cvsroot/sblim/cmpi-network/OSBase_CommonNetwork.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- OSBase_CommonNetwork.h 15 Oct 2003 12:24:15 -0000 1.5 +++ OSBase_CommonNetwork.h 13 Apr 2005 14:41:08 -0000 1.6 @@ -38,6 +38,7 @@ struct cim_netPort { char * name; + char * mac_addr; unsigned short linkTec; unsigned short type; unsigned short enabled; |