Vai al contenuto

Indirizzo IP gateway con DHCP Server attivo

Home Forum Controllori SlimLine e Netsyst (LogicLab) Indirizzo IP gateway con DHCP Server attivo

Stai visualizzando 5 post - dal 1 a 5 (di 5 totali)
  • Autore
    Post
  • #60670
    Alberto Mengozzi
    Partecipante

    Su 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

    #60676
    Sergio Bertana
    Amministratore del forum

    Effettivamente 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.

    #60677
    Alberto Mengozzi
    Partecipante

    Lo 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.

    #60686
    Sergio Bertana
    Amministratore del forum

    Se 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.

    #60727
    Alberto Mengozzi
    Partecipante

    Grazie 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.

Stai visualizzando 5 post - dal 1 a 5 (di 5 totali)
  • Devi essere connesso per rispondere a questo topic.