Announcement

Collapse
No announcement yet.

Nameserver auslesen in C

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Nameserver auslesen in C

    Guten Morgen,
    ich versuche momentan alle Nameserver eines Interfaces auszulesen. Das ganz natürlich nur in C und NICHT in C++.
    Da ich schon Stundenlang danach suche wollte ich einfach mal hier fragen.
    Vielleicht hat das schonmal jemand gemacht und kann mir direkt helfen

    Gruß, postal

  • #2
    Hier die Lösung:

    Code:
    void get_nameserver(computer_t *computer) {
        FIXED_INFO *pFixedInfo = NULL;
        ULONG ulOutBufLen = 0;
        IP_ADDR_STRING *pIPAddr = NULL;
    
        pFixedInfo = malloc(sizeof (FIXED_INFO));
        ulOutBufLen = sizeof (FIXED_INFO);
        if(GetNetworkParams(pFixedInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
            free(pFixedInfo);
            pFixedInfo = malloc(ulOutBufLen);
        }
    	
    	int nameserverCount = 0;
        if(GetNetworkParams(pFixedInfo, &ulOutBufLen) == NO_ERROR) {
    		computer->network->nameservers = realloc(computer->network->nameservers, nameserverCount + 2);
    		computer->network->nameservers[nameserverCount] = strdup(pFixedInfo->DnsServerList.IpAddress.String);
    		computer->network->nameservers[++nameserverCount] = NULL;
    
            pIPAddr = pFixedInfo->DnsServerList.Next;
            while (pIPAddr) {
    			computer->network->nameservers = realloc(computer->network->nameservers, nameserverCount + 2);
    			computer->network->nameservers[nameserverCount] = strdup(pIPAddr->IpAddress.String);
    			computer->network->nameservers[++nameserverCount] = NULL;
                pIPAddr = pIPAddr->Next;
            }
    	}
    	free(pFixedInfo);
    }
    ggf. natürlich anpassen


    Gruß, postal

    Comment

    Working...
    X