Opened 4 years ago

Closed 3 years ago

#59 closed Bug / Defect (wontfix)

Tap version condition error on Win32

Reported by: agrandville Owned by:
Priority: major Milestone:
Component: Generic / unclassified Version: 2.1.2 / 2.1.3
Severity: Not set (if unsure, select this one) Keywords:
Cc:

Description

line 4014 of the tun.c file I found this condition:

if (!(info[0] == TAP_WIN32_MIN_MAJOR && info[1] >= TAP_WIN32_MIN_MINOR))
      msg (M_FATAL, "ERROR:  This version of " PACKAGE_NAME " requires a TAP-Win32 driver that is at least version %d.%d -- If you recently upgraded your " PACKAGE_NAME " distribution, a reboot is probably required at this point to get Windows to see the new driver.",TAP_WIN32_MIN_MAJOR,TAP_WIN32_MIN_MINOR);

Does it matter if info[0] is greater than TAP_WIN32_MIN_MAJOR ?

Change History (4)

comment:1 in reply to: ↑ description ; follow-up: Changed 4 years ago by cron2

Replying to agrandville:

Does it matter if info[0] is greater than TAP_WIN32_MIN_MAJOR ?

If info[0] is greater, it means that a TAP driver version has been found that is more recent than anything this code knows about - and the assumption is that all newer versions of the TAP driver will only add functionality, but never make incompatible changes. Older versions are known to miss functionality, but (to my knowledge) no version with an major version below TAP_WIN32_WIN_MAJOR has ever been released.

So this code is fine.

comment:2 in reply to: ↑ 1 Changed 4 years ago by agrandville

Replying to cron2:

I agree with you about the backward compatibility of the differents TAP implementations and I think the correct condition must be :

if (!(info[0] > TAP_WIN32_MIN_MAJOR || (info[0] == TAP_WIN32_MIN_MAJOR && info[1]>= TAP_WIN32_MIN_MINOR)))

comment:3 Changed 3 years ago by cron2

Actually, thinking more about this, dazo and I think the check is meant to fail if the major version changes - since this would be a "major change" to the tap driver, and we don't yet know why this would be done, and whether it will be compatible...

comment:4 Changed 3 years ago by dazo

  • Resolution set to wontfix
  • Status changed from new to closed

I concur to cron2's summary. If the major version changes, it might be due to the need of doing incompatible changes against earlier version for a new feature to be implemented. This is the only way we have now to state that something changes the compatibility. If a feature change preserves the compatibility, only the minor version number should change.

Thus I'm closing this ticket.

Note: See TracTickets for help on using tickets.