Ok I m working on it. arredy. c u soon.
Loris Degioanni wrote:
> The bug seems to be in the way WinPcap parses the registry under Win9x.
> The problem is:
> - the way Win9x stores information about the adapters in the registry is
> weird, complex and not well documented
> - I and the rest of the winpcap team do no more support Win9x actively. We
> have limited resources and we prefer to allocate them on the WinNTx version.
>
> The consequence is that I will not be able to address this bug in the short
> period, unless I receive a patch that solves it.
>
> Loris
>
>
>>Hey I did not notice, its you!!! cuz I read your Italian presentation
>>nearly every hour or call to the functions. Hey thanks again, saved lots
>>of hair. I was about to reinvent the cycly when i came accross your lib.
>>great. thanks again.( will try to convert the thanks to .....)
>>
>>The problem was not there. the problem in GetNetInfoEx. i mimic the
>>calls and found the same wrong result.
>>
>>
>>The following are the result of dry run:
>>
>>Lets look for "SISNIC"
>>
>>First call for the key SYSTEM\\CurrentControlSet\\Services\\class\\net
>>
>>IIndex=0 != "SISNIC"
>>
>>[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net\\0000]
>>....
>>
>>
> [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net\\0000\NDIS]
>
>>"MajorNdisVersion"=hex:04
>>"MinorNdisVersion"=hex:00
>>"LogDriverName"="*PNP0510"
>>
>>
>>IIndex=1 != "SISNIC"
>>
>>[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net\\0001]
>>....
>>
>>
>>
> [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net\\0001\NDIS]
>
>>"MajorNdisVersion"=hex:03
>>"MinorNdisVersion"=hex:0a
>>"LogDriverName"="NIC1394"
>>
>>IIndex=2 != "SISNIC"
>>
>>[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net\\0002]
>>....
>>
>>IIndex=2 != "SISNIC"
>>
>>
>>
> [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net\\0002\NDIS]
>
>>"LogDriverName"="PPPMAC"
>>"MajorNdisVersion"=hex:03
>>"MinorNdisVersion"=hex:0a
>>
>>[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net\\0003]
>>....
>>
>>IIndex=3 != "SISNIC"
>>
>>
>>
> [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net\\0003\NDIS]
>
>>"LogDriverName"="pptp"
>>"MajorNdisVersion"="03"
>>"MinorNdisVersion"="0A"
>>
>>
>>
> [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net\\0004\NDIS]
>
>>"LogDriverName"="SISNIC"
>>"MajorNdisVersion"=hex:03
>>"MinorNdisVersion"=hex:0a
>>
>>IIndex=4 Heyyyyyy this one so the index is 4
>>
>>
>>now let look at [HKEY_LOCAL_MACHINE\Enum\Network\MSTCP]
>>
>>[HKEY_LOCAL_MACHINE\Enum\Network\MSTCP\0000]
>>"Class"="NetTrans"
>>"Driver"="NetTrans\\0001"
>>"MasterCopy"="Enum\\Network\\MSTCP\\0000"
>>"DeviceDesc"="TCP/IP"
>>"CompatibleIDs"="MSTCP"
>>"Mfg"="Microsoft"
>>"ClassGUID"="{4d36e975-e325-11ce-bfc1-08002be10318}"
>>"ConfigFlags"=hex:10,00,00,00
>>"Capabilities"=hex:14,00,00,00
>>
>>[HKEY_LOCAL_MACHINE\Enum\Network\MSTCP\0000\Bindings]
>>"VREDIR\\0000"=""
>>
>>[HKEY_LOCAL_MACHINE\Enum\Network\MSTCP\0001]
>>"Class"="NetTrans"
>>"Driver"="NetTrans\\0002"
>>"MasterCopy"="Enum\\Network\\MSTCP\\0001"
>>"DeviceDesc"="TCP/IP"
>>"CompatibleIDs"="MSTCP"
>>"Mfg"="Microsoft"
>>"ClassGUID"="{4d36e975-e325-11ce-bfc1-08002be10318}"
>>"ConfigFlags"=hex:10,00,00,00
>>"Capabilities"=hex:14,00,00,00
>>
>>[HKEY_LOCAL_MACHINE\Enum\Network\MSTCP\0001\Bindings]
>>"VREDIR\\0001"=""
>>
>>[HKEY_LOCAL_MACHINE\Enum\Network\MSTCP\0002]
>>"Class"="NetTrans"
>>"ClassGUID"="{4d36e975-e325-11ce-bfc1-08002be10318}"
>>"Driver"="NetTrans\\0004"
>>"MasterCopy"="Enum\\Network\\MSTCP\\0002"
>>"DeviceDesc"="TCP/IP"
>>"CompatibleIDs"="MSTCP"
>>"Mfg"="Microsoft"
>>"ConfigFlags"=hex:10,00,00,00
>>"Capabilities"=hex:14,00,00,00
>>
>>[HKEY_LOCAL_MACHINE\Enum\Network\MSTCP\0002\Bindings]
>>"VREDIR\\0002"=""
>>
>>oops IINDEX 4 not up there so GetNetInfoEx returns FALSE
>>
>>so i made the changes for now for my ongoing project ( hey wanna know
>>for waat?)
>>
>>
>>this is the change I made for now in my WINME+autoupdate feature ( dont
>>know what Microsoft updates automatically , did not check the
>>logs)enabled box.
>>//begining of w30a3->jhn
>>WORD wVersionRequested;
>>WSADATA wsaData;
>>struct hostent* h;
>>char szBuff[80];
>>LPIN_ADDR p;
>>
>> if(gethostname(szBuff, 79))
>>{ wVersionRequested = MAKEWORD( 1, 1);
>> if(WSAStartup( wVersionRequested, &wsaData )!=0) return FALSE;
>>}
>>
>>h=gethostbyname(szBuff);
>>
>> p=(LPIN_ADDR)h->h_addr_list[0];
>>strncpy(String,inet_ntoa(*p),16);//ipv4 only
>>
>>StringPos = 0;
>>BufLen = sizeof String;
>>
>>for(naddrs = 0;naddrs < *NEntries;naddrs++){
>>TmpAddr = (struct sockaddr_in *) &(buffer[naddrs].IPAddress);
>>
>>if((TmpAddr->sin_addr.S_un.S_addr = inet_addrU(String + StringPos))!= -1){
>>TmpAddr->sin_family = AF_INET;
>>
>>TmpBroad = (struct sockaddr_in *) &(buffer[naddrs].Broadcast);
>>TmpBroad->sin_family = AF_INET;
>>// Don't know where to find the broadcast adrr under Win9x, default to
>>255.255.255.255
>>TmpBroad->sin_addr.S_un.S_addr = 0x00ffffff & p->S_un.S_addr;
>>TmpBroad->sin_addr.S_un.S_addr |=0xff000000;
>>
>>while(*(String + StringPos) != '\0' && *(String + StringPos) !=
>>',')StringPos++;
>>StringPos++;
>>
>>if(*(String + StringPos) == 0 || StringPos >= BufLen)
>>break;
>>}
>>else break;
>>}
>>
>>BufLen = sizeof String;
>>// Open the key with the addresses
>>// scan the key to obtain the masks
>>strcpy(String,"255.255.255.0");
>>StringPos = 0;
>>for(nmasks = 0;nmasks <* NEntries;nmasks++){
>>TmpAddr = (struct sockaddr_in *) &(buffer[nmasks].SubnetMask);
>>
>>if((TmpAddr->sin_addr.S_un.S_addr = inet_addrU(String + StringPos))!= -1){
>>TmpAddr->sin_family = AF_INET;
>>
>>while(*(String + StringPos) != '\0' && *(String + StringPos) !=
>>',')StringPos++;
>>StringPos++;
>>
>>if(*(String + StringPos) == 0 || StringPos >= BufLen)
>>break;
>>}
>>else break;
>>}
>>
>>*NEntries = 1;
>>
>> return TRUE;
>>
>>//end of w30a3->jhn
>>
>>
>>// Reach the class\net registry key
>>
>>
> status=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Services\
> \class\\net",0,KEY_READ,&InterfaceKey);
>
>> if (status != ERROR_SUCCESS) return FALSE;
>>
>> ..............
>>
>>
>>Now ok. its not solution of course. its just enables running properly in
>>win me, for me.
>>
>>I was talking about the SNMP and INETMIB1.DLL. its in the windows core
>>
> sdk.
>
>>
>>Aftab Jahan Subedar
>>Software Engineer/Overseas Business Development Manager
>>Suvastu Software Ltd.
>>Suvastu Tower
>>69/1 Pathapath Green Road
>>Dhaka 1205
>>Bangladesh
>>sms:++447765341890
>>
>>
>>
>>Loris Degioanni wrote:
>>
>>
>>>Hi,
>>>
>>>
>>>
>>>
>>>>hi all,
>>>>
>>>>cuz the add_or_find_if could not open does not mean failure.
>>>>
>>>>izzit better this way in the follwoing function ?
>>>>
>>>>
>>>>
>>>>static int
>>>>pcap_add_if_win32(pcap_if_t **devlist, char *name, const char *desc,
>>>> char *errbuf)
>>>>{
>>>>pcap_if_t *curdev;
>>>>npf_if_addr if_addrs[16];
>>>>LONG if_addr_size;
>>>>int res = 0;
>>>>struct sockaddr_in *addr, *netmask;
>>>>
>>>>if_addr_size = 16;
>>>>
>>>>/*
>>>>* Add an entry for this interfacwe, with no addresses.
>>>>*/
>>>>/*
>>>>if (add_or_find_if(&curdev, devlist, (char *)name, 0, (char *)desc,
>>>> errbuf) == -1) {
>>>>
>>>>wcap30a3 -> jhn
>>>>*/
>>>>curdev=NULL;
>>>>if (add_or_find_if(&curdev, devlist, (char *)name, 0, (char *)desc,
>>>> errbuf) == -1 ) {
>>>>/*
>>>>* Failure.
>>>>*/
>>>>/*
>>>>return (-1);
>>>>wcap30a3 -> jhn
>>>>*/
>>>>if(curdev==NULL)
>>>> return (0); //did not add but error!! see add_or_find_if
>>>>else
>>>>return (-1);
>>>>}
>>>>
>>>>
>>>Yes, you are rigth, but consider that all the interfaces received by
>>>pcap_add_if_win32() can be opened. The reason is that the list of
>>>
> adapters
>
>>>is obtained in pcap_findalldevs() by means of the
>>>
> PacketGetAdapterNames()
>
>>>packet.dll function. This function returns only the adapters that it's
>>>actually able to open.
>>>Therefore, the check that you propose should not be necessary, because
>>>
> the
>
>>>call to pcap_open_live() inside add_or_find_if() will always succeed.
>>>
>>>However, does this patch solve your problem?
>>>
>>>
>>>
>>>>Izzit asso something wrong with PacketGetNetInfoEx/should use mib?
>>>>manually checked the registry , it does not map, or enum does not
>>>>contain desired index. ( removed the NICs and reinstalled-> Nada)
>>>>
>>>>
>>>What do you mean by 'mib'?
>>>
>>>Loris
>>>
>>>
>>>
>>>>Aftab Jahan Subedar
>>>>Software Engineer/Overseas Business Development Manager
>>>>Suvastu Software
>>>>Suvastu Tower
>>>>69/1 Pathapath Green Road
>>>>Dhaka 1205
>>>>Bangladesh
>>>>
>>>>
>>>>
>>>>
>>>>==================================================================
>>>>This is the WinPcap users list. It is archived at
>>>>http://www.mail-archive.com/[email protected]/
>>>>
>>>>To unsubscribe use
>>>>mailto: [EMAIL PROTECTED]?body=unsubscribe
>>>>==================================================================
>>>>
>>>>
>>>>
>>>
>>>
>>>==================================================================
>>> This is the WinPcap users list. It is archived at
>>> http://www.mail-archive.com/[email protected]/
>>>
>>> To unsubscribe use
>>> mailto: [EMAIL PROTECTED]?body=unsubscribe
>>>==================================================================
>>>
>>>
>>>
>>>
>>
>>
>>
>>==================================================================
>> This is the WinPcap users list. It is archived at
>> http://www.mail-archive.com/[email protected]/
>>
>> To unsubscribe use
>> mailto: [EMAIL PROTECTED]?body=unsubscribe
>>==================================================================
>>
>
>
>
>
> ==================================================================
> This is the WinPcap users list. It is archived at
> http://www.mail-archive.com/[email protected]/
>
> To unsubscribe use
> mailto: [EMAIL PROTECTED]?body=unsubscribe
> ==================================================================
>
>
>
==================================================================
This is the WinPcap users list. It is archived at
http://www.mail-archive.com/[email protected]/
To unsubscribe use
mailto: [EMAIL PROTECTED]?body=unsubscribe
==================================================================