Gary Winiger wrote:
>> I am sending the updated spec with respect to Gary's issue.
>>     
>
>       I'm still confused on how changing the size of structures
>       is mitigated in a patch release.  What am I misunderstanding?
>   

The IPFILTER_VERSION (see ipnat(7i)) is used to keep track of user 
application's version thus the old binaries can still work after this 
change. The kernel code would handle the ioctl input/output based on the 
version number to make it a compatible change. Those are all 
implementation changes and there's no change required for user 
applications using the interfaces, either using the old binaries or 
recompiling with the new header files.

>       Further I don't see any expression of the interface stability
>       in the updated spec.  Did I miss that also?
>   

There is no new interface exported in this case. The one-pager comment 
states that stability levels are required for new exported interface. 
Correct me if I was wrong. The stabilities (External Stable) of 
ipnat(7i) and the header files are defined in:

[3] PSARC 2005/233 IPFilter API for NAT entry duplicate detection


Yifan

> Gary..
>   
>>>     I'm not sure what "External Stable" is, so I'll take it as the
>>>     former Stable which is the current Committed.  And I'll ask again:
>>>     "How is the incompatible change mitagated for the requested Patch
>>>     release binding?"
>>>       
>
>   
>> ioctls
>> ------
>> For ioctl SIOCGNATL, the structure "natlookup_t" has been changed to be able 
>> to
>> contain IPv6 addresses. A new member "nl_v" is added to specify whether it is
>> looking for an IPv4 or an IPv6 NAT session. For compatibilities, IPv4 NAT 
>> session
>> lookup doesn't need to assign "nl_v". See ipnat(7i).
>>
>> For ioctl SIOCSTPUT, A new member "nat_v" is added to the structure "nat_t" 
>> to
>> specify whether it is inserting an IPv4 or an IPv6 NAT session. For 
>> compatibilities,
>> inserting an IPv4 NAT session doesn't need to assign "nat_v". See ipnat(7i).
>>     
>
>   
>> @@ -67,9
>>        * Structure used with SIOCGNATL.
>>        */
>>       typedef struct natlookup {
>> -          struct    in-addr nl_inip;
>> -          struct    in_addr nl_outip;
>> -          struct    in_addr nl_realip;
>> +          i6addr_t  nl_inipaddr;
>> +          i6addr_t  nl_outipaddr;
>> +          i6addr_t  nl_realipaddr;
>> +          int       nl_v;
>>            int       nl_flags;
>>            u_short   nl_inport;
>>            u_short   nl_outport;
>> @@ -76,6 +77,13 @@
>>            u_short   nl_realport;
>>       } natlookup_t
>>
>> +#define nl_inip      nl_inipaddr.in4
>> +#define nl_outip     nl_outipaddr.in4
>> +#define nl_realip    nl_realipaddr.in4
>> +#define nl_inip6     nl_inipaddr.in6
>> +#define nl_outip6    nl_outipaddr.in6
>> +#define nl_realip6   nl_realipaddr.in6
>> +
>>       /*
>>        * Accepted values for nl_flags
>>        */
>> @@ -169,6 +177,7 @@
>>            int             nat_hv[2];
>>            char            nat_ifnames[2][LIFNAMSIZ];
>>            int             nat_rev;
>> +          int             nat_v;
>>       } nat_t;
>>
>>       #define nat_inip        nat_inip6.in4
>>     


Reply via email to