#915 Pass array of addresses to WakeUp()

To reuse this function to the REST API.
master
OpenGnSys Support Team 2019-05-21 21:09:54 +02:00
parent 7b6fcdbc62
commit 507c75c337
2 changed files with 17 additions and 10 deletions

View File

@ -1404,14 +1404,19 @@ bool respuestaConsola(int socket_c, TRAMA *ptrTrama, int res)
// ________________________________________________________________________________________________________ // ________________________________________________________________________________________________________
static bool Arrancar(TRAMA* ptrTrama, struct og_client *cli) static bool Arrancar(TRAMA* ptrTrama, struct og_client *cli)
{ {
char *ptrIP[MAXIMOS_CLIENTES],*ptrMacs[MAXIMOS_CLIENTES];
char *iph,*mac,*mar; char *iph,*mac,*mar;
bool res; bool res;
int lon;
iph = copiaParametro("iph",ptrTrama); // Toma dirección/es IP iph = copiaParametro("iph",ptrTrama); // Toma dirección/es IP
mac = copiaParametro("mac",ptrTrama); // Toma dirección/es MAC mac = copiaParametro("mac",ptrTrama); // Toma dirección/es MAC
mar = copiaParametro("mar",ptrTrama); // Método de arranque (Broadcast o Unicast) mar = copiaParametro("mar",ptrTrama); // Método de arranque (Broadcast o Unicast)
res=Levanta(iph,mac,mar); lon = splitCadena(ptrIP, iph, ';');
lon = splitCadena(ptrMacs, mac, ';');
res = Levanta(ptrIP, ptrMacs, lon, mar);
liberaMemoria(iph); liberaMemoria(iph);
liberaMemoria(mac); liberaMemoria(mac);
@ -1442,12 +1447,12 @@ static bool Arrancar(TRAMA* ptrTrama, struct og_client *cli)
// true: Si el proceso es correcto // true: Si el proceso es correcto
// false: En caso de ocurrir algún error // false: En caso de ocurrir algún error
// ________________________________________________________________________________________________________ // ________________________________________________________________________________________________________
bool Levanta(char *iph, char *mac, char *mar)
bool Levanta(char *ptrIP[], char *ptrMacs[], int lon, char *mar)
{ {
char *ptrIP[MAXIMOS_CLIENTES],*ptrMacs[MAXIMOS_CLIENTES];
unsigned int on = 1; unsigned int on = 1;
sockaddr_in local; sockaddr_in local;
int i, lon, res; int i, res;
int s; int s;
/* Creación de socket para envío de magig packet */ /* Creación de socket para envío de magig packet */
@ -1467,8 +1472,6 @@ bool Levanta(char *iph, char *mac, char *mar)
local.sin_port = htons(PUERTO_WAKEUP); local.sin_port = htons(PUERTO_WAKEUP);
local.sin_addr.s_addr = htonl(INADDR_ANY); local.sin_addr.s_addr = htonl(INADDR_ANY);
lon = splitCadena(ptrIP, iph, ';');
lon = splitCadena(ptrMacs, mac, ';');
for (i = 0; i < lon; i++) { for (i = 0; i < lon; i++) {
if (!WakeUp(s, ptrIP[i], ptrMacs[i], mar)) { if (!WakeUp(s, ptrIP[i], ptrMacs[i], mar)) {
syslog(LOG_ERR, "problem sending magic packet\n"); syslog(LOG_ERR, "problem sending magic packet\n");
@ -3329,11 +3332,12 @@ static bool recibeArchivo(TRAMA *ptrTrama, struct og_client *cli)
// ________________________________________________________________________________________________________ // ________________________________________________________________________________________________________
static bool envioProgramacion(TRAMA *ptrTrama, struct og_client *cli) static bool envioProgramacion(TRAMA *ptrTrama, struct og_client *cli)
{ {
char *ptrIP[MAXIMOS_CLIENTES],*ptrMacs[MAXIMOS_CLIENTES];
char sqlstr[LONSQL], msglog[LONSTD]; char sqlstr[LONSQL], msglog[LONSTD];
char *idp,iph[LONIP],mac[LONMAC]; char *idp,iph[LONIP],mac[LONMAC];
Database db; Database db;
Table tbl; Table tbl;
int idx,idcomando; int idx,idcomando,lon;
if (!db.Open(usuario, pasguor, datasource, catalog)) { if (!db.Open(usuario, pasguor, datasource, catalog)) {
db.GetErrorErrStr(msglog); db.GetErrorErrStr(msglog);
@ -3387,11 +3391,14 @@ static bool envioProgramacion(TRAMA *ptrTrama, struct og_client *cli)
return false; return false;
} }
lon = splitCadena(ptrIP, iph, ';');
lon = splitCadena(ptrMacs, mac, ';');
// Se manda por broadcast y por unicast // Se manda por broadcast y por unicast
if (!Levanta(iph, mac, (char*)"1")) if (!Levanta(ptrIP, ptrMacs, lon, (char*)"1"))
return false; return false;
if (!Levanta(iph, mac, (char*)"2")) if (!Levanta(ptrIP, ptrMacs, lon, (char*)"2"))
return false; return false;
} }

View File

@ -46,7 +46,7 @@ bool recorreProcedimientos(Database ,char* ,FILE*,char*);
bool buscaComandos(char *,TRAMA *,int *); bool buscaComandos(char *,TRAMA *,int *);
bool respuestaConsola(int socket, TRAMA *,int); bool respuestaConsola(int socket, TRAMA *,int);
bool enviaComando(TRAMA *ptrTrama,const char*); bool enviaComando(TRAMA *ptrTrama,const char*);
bool Levanta(char*,char*,char*); bool Levanta(char**, char**, int, char*);
bool WakeUp(int,char*,char*,char*); bool WakeUp(int,char*,char*,char*);
void PasaHexBin(char *,char *); void PasaHexBin(char *,char *);
bool actualizaCreacionImagen(Database,Table,char*,char*,char*,char*,char*,char*); bool actualizaCreacionImagen(Database,Table,char*,char*,char*,char*,char*,char*);