Indirizzo IP gateway con DHCP Server attivo
Home › Forum › Controllori SlimLine e Netsyst (LogicLab) › Indirizzo IP gateway con DHCP Server attivo
Taggato: #ethernet #OSID_ETH0 #dhcp
- Questo topic ha 4 risposte, 1 partecipante ed è stato aggiornato l'ultima volta 3 anni, 8 mesi fa da
Alberto Mengozzi.
-
AutorePost
-
Luglio 26, 2021 alle 10:20 am #60670
Alberto Mengozzi
PartecipanteSu di un sistema MPS056A320 (SL Cortex M7 Compact ETH) ho attivato via web page il DHCP attivo; nella finestra devono rimanere dei valori (casuali…) per ip,subnet,gateway altrimenti non viene concesso di salvare (da errore);
Durante l’esecuzione del programma purtroppo non viene letto il gateway reale (come riportato nella pagina dove vengono mostrati i settaggi della scheda o da Toolly) ma il gateway impostato (inutilmente) nella pagina di impostazione dei valori; la variabile che leggo nel runtime è la “OSID_ETH0_GATEWAY” che appunto non riporta il valore reale del gateway ma quello impostato (inutilmente) nella pagina di salvataggio dei dati.
Ho assoluta necessità per il funzionamento dell’applicazione che il gateway letto sia quello reale (in quanto può cambiare) e non uno impostato casualmente solo per evitare l’errore nella pagina web di salvataggio dei dati di eth0.
Grazie fin da ora per la cortese risposta
Luglio 26, 2021 alle 10:25 am #60676Sergio Bertana
Amministratore del forumEffettivamente come dici nella pagina web occorre sempre definire dei valori per i campi IP, Mask, Gateway anche se hai selezionato l’acquisizione da server DHCP.
In merito al valore ritornato dalla funzione SysOSIDValue con il valore di OSID, OSID_ETH0_GATEWAY, effettivamente viene ritornato il valore definito da pagina web e non quello acquisito dal server DHCP. Esistono altri OSID che al momento sono gestiti solo da pagina web per le informazioni che ti occorrono. Rilasceremo in prossime versioni del firmware questi nuovi OSID.
Come workaround per il tuo problema ti consiglio di dare una occhiata al FB CLIClient, come vedi dall’esempio è possibile realizzare un semplice programma che si connette in telnet a localhost ed inviando il comando IFConfig acquisisce tutte le informazioni che ti occorrono.
[Admin]> ifconfig ------------------------------------------------------------------------[eth0]-- Actual settings: Description:........ On board ethernet controller Status:............. Ready (DHCP) Linked:............. 1 Up:................. 1 MAC address:........ 70-B3-D5-4C-97-29 IP address:......... 192.168.1.24 Subnet mask:........ 255.255.254.0 Gateway:............ 192.168.0.1 MTU:................ 1500 DNS Prim. IP addr.:. 192.168.0.3 DNS Sec. IP addr.:.. 8.8.8.8 DHCP server:........ 192.168.0.3 DHCP lease time:.... 172800 seconds DHCP expire time:... 172774 seconds Config settings: MAC address:........ 70-B3-D5-4C-97-29 IP address:......... 1.1.1.1 Subnet mask:........ 255.255.255.0 Gateway:............ 1.1.1.1 MTU:................ 1500 DNS Prim. IP addr.:. 8.8.8.8 DNS Sec. IP addr.:.. 8.8.4.4 DHCP:............... 1 DHCP on DNS:........ 1
Tutti i valori della sezione Actual settings sono quelli assegnati dal server DHCP.
Luglio 28, 2021 alle 10:46 am #60677Alberto Mengozzi
PartecipanteLo SlimLine si deve connettere a un cellulare Android o Iphone con abilitato l’hotspot, il quale assegna l’indirizzo allo SlimLine ma poi il cellulare va chiamato (con l’indirizzo del gateway che speravo di potere leggere da quella variabile) con una chiamata HTTPRq() quindi devo sapere come si chiama prima di poterlo chiamare…
Non ho capito assolutamente come quell’esempio faccia al caso mio; la procedura non può prevedere l’intervento dell’operatore. Ho assoluta necessità di scoprire il gateway dopo la connessione all’hotspot.
Luglio 28, 2021 alle 2:45 pm #60686Sergio Bertana
Amministratore del forumSe guardi attentamente l’esempio riportato nel manuale riferito al FB CLIClient, vedrai che il programma si connette all’localhost porta 23.
TCPClient.PeerAdd:=ADR('127.0.0.1'); //Peer address TCPClient.PeerPort:=23; //Peer port
Quindi lo SlimLine emula una connessione Telnet (Proprio come faresti con Toolly) a se stesso e dopo essersi autenticato invia il comando IFConfig. Il comando ritorna tutte le informazioni di connessione e la prima occorrenza del campo Gateway, riporta proprio l’indirizzo IP assegnato dal server DHCP. Ecco il codice che esegue l’invio del comando e acquisisce l’indirizzo.
// --------------------------------------------------------------------- // SEND COMMAND // --------------------------------------------------------------------- // Send the RMalloc statistics request command, every answer row ends // with so they are wait. 10: CLI.CStr:=ADR('IFConfig$r'); CLI.PStr:=ADR('[Admin]>'); CLI.EAStr:=NULL; CLI.CSend:=TRUE; IF NOT(CLI.EOL) THEN RETURN; END_IF; CLI.CSend:=FALSE; //Command send // Reads the gateway IP. IF NOT(SysVsscanf(SysStrFind(CLI.ABPtr, ADR('Gateway:............ '), FIND_GET_END), ADR('%s'), STRING_TYPE, ADR(Gateway))) THEN ErrorNr:=50; END_IF; CaseNr:=0; //Program case
Includo il progetto WhoIsTheGateway per il download.
Agosto 2, 2021 alle 11:03 am #60727Alberto Mengozzi
PartecipanteGrazie del suggerimento, funziona correttamente;
In attesa che aggiorniate le definizioni di sistema l’ho combinato con l’utilizzo del FB SysPing in quanto fino a che il DHCP non assegna l’indirizzo effettivo lo SlimLine utilizza come gateway quello salvato in memoria e il router in uso è più lento ad avviarsi dello SlimLine.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.