Austin/90 (includes corrections 4th June 2001)
Minutes of the 7th Plenary Meeting of the Austin Group
29 May - 1 June, 2001
Reading, UK, Hosted by The Open Group.
Attendees
Name | Affiliation | Role |
Andrew Josey | The Open Group | Chair |
Nick Stoughton | Usenix | WG15, Secretary |
Don Cragun | Sun Microsystem | IEEE |
Bouazza Bacchar | Compaq | The Open Group |
Andrew Gollan | Sun Microsystems | |
Joanna Farley | Sun Microsystems | |
Ulrich Drepper | Red Hat | |
Jon Hitchcock | Uniplex | |
Frank Prindle | DoD - Teleconference, Tuesday, Wednesday, Thursday | |
Mark Brown | IBM - Teleconference, Tuesday, Wednesday, Thursday | |
Joe Gwinn | Raytheon - Teleconference, Wednesday, Thursday | |
Cathy Hughes | The Open Group | Editor |
Andrew Josey called the seventh meeting (a.k.a. Austin/M8, since this counting includes a teleconference) of the Austin Group to order at 9:05 am Tuesday May 29th at The Open Group's office in Reading, Berkshire.
Meeting Goals
The goal of this meeting is to review the draft six Common Specifications. The bulk of the meeting will be spent doing issue resolution based on Aardvark comments submitted during the review period. Many of the comments have been predisposed by the editors. These will not be discussed unless there is some disagreement with the proposal.
Added new Business Item to discuss and further document what is in scope to change.
Minutes were published as Austin/71. No comments received. Minutes approved.
All action items from the previous meeting have been closed, except for 2001-03-02, which is in progress.
SD1 updated
SD2 updated
No updates.
see attendance list above.
In IEEE ballot, we have achieved 90%% affirmative.
In ISO ballot, we have submitted a second FCD.
There is one further draft expected. D7 in June. This will be revisited later in the week.
Note to Readers:Please consult the aardvark reports for the final dispositions, they are the master documents and in if a conflict occurs they overrule the text in the minutes below.
XBD Aardvark (+ XBD reviewers notes)
Remove from pre-disposed list: 73
This list shows only the ERNs discussed at the meeting. Others were pre-disposed.
XBD ERN 2: OPEN -- Don Cragun has discussed this with Joe Gwinn, who
has softened his position, and will submit further comments today, and
dial-in to discuss tomorrow (Wednedsay).
Wednesday - teleconference. What about profiles that want to change
limits? How about calling these Application Requirments, rather than
profile options. Can we have conflicting profile requirements re
maxima/minima? Profiles might be able to raise lower limits, but not lower
upper limits (this could lead to conflicting requirements). Base constants
must not change ... e.g. POSIX_AIO_MAX is 1 and will always be 1, AIO_MAX
may be raised by a profile.
Profiles are permitted to add additional requirements to the numerical limits.
Profiles shall not change (either raise or lower) the fixed values in limits.h.
A profile shall not specify a maximum upper limit (though they
can specify a minimum maximum).
A profile shall not specify a minimum lower limit (though they
can specify a maximum minimum).
The limits are specified in limits.h, stdint.h and float.h ... use this throughout.
Andrew has detailed changes...mailed to the list for further feedback and
discussion.
Thursday. More discussion on changing limits in profiles. The basic rule
seems to be if the limit is defined in the base standard as an absolute
value, it cannot be altered by a profile. Those limits defined as having a
maximum or minimum value, can be changed, but a minimum cannot be made
smaller, and a maximum cannot be made larger.
A limit with a minimum or maximum acceptable value cannot be made into a fixed value.
With these changes, Joe agrees to withdraw his objections.
XBD ERN 5: The behavior described is permitted, but not required. It is likely to turn a number of conforming shells into non-conforming, therefore is likely to reduce consensus. REJECT.
XBD ERN 7: Accept
XBD ERN 8: AAM, not XSI shaded (nothing in XBD defns is shaded).
XBD ERN 10: Accept
XBD ERN 12: Accept
XBD ERN 17: Reject; this text is derived from POSIX.2, there is no assumption made about encoding here. There is a difference between a "character set" and a "coded character set". Additionally, there is no req that any of these chars (except those included in the portable char set) be included at all, and no requirement that they be distinct.
XBD ERN 18: Accept
XBD ERN 22: Open ... not clear why this column is here, what is the difference
from the lines above (4850 - 4864)?
Revisited, Friday. Default position is AAM (Andrew has markup),
but ask Gary Miller for input.
XBD ERN 24: Accept
XBD ERN 25: Such an addition is invention. While it might be considered useful, it would reduce consensus to add it at this point.
XBD ERN 26: Reject -- this is not helpful, since in practice it is very rarely specified in this fashion (usually differences in case, e.g. De_DE does not follow this practice). It is better left to the implementation documentation. Likely to reduce consensus, even as non-normative.
XBD ERN 27: AAM -- use this for rationale: Since the TZ environment variable is usually inherited by all applications started by a user after the value of the TZ environment variable is changed and since many applications run using the C or POSIX locale, using characters that are not in the portable character set in the \fIstd\fP and \fIdst\fP fields could cause unexpected results.
XBD ERN 28: Accept
XBD ERN 29: Accept
XBD ERN 33: AAM - change 6555 as suggested, and on 6552 change "the process group ID of the foreground process group" --> "the foreground process gorup ID".
XBD ERN 36: AAM - the last column should read, going down, "-c[arg]",
"-carg or -c", "-carg and -c", and "N/A".
The System SHALL support row should read "-a arg and -aarg". "-barg and -b
arg". The last row should be entitled "Non-conforming application may use"
and move table to rationale.
Change list item on p197 l7074 to
"Notwithstanding the preceding requirements on conforming applications, a
conforming system shall permit an application to specify
options and option-arguments either as separate arguments or as a single
argument, whether or not a XBD ERN 39: AAM, ENETRESET
XBD ERN 42: AAM, get rid of the pglob-> (leaving the gl_pathv).
XBD ERN 43: AAM, this "fscanf" is unnescessary ... delete it. Also ass
refs to wide char funcs (Andrew has words)
XBD ERN 44: AAM - change tense, to make it refer to the C89 standard in
the past.
XBD ERN 47: Accept
XBD ERN 50: AAM, though * is introduced earlier meaning no guaranteed
value, and we could just lose the quotes, it is also the ONLY place where
we use *, so move the text from 8666 to here.
XBD ERN 54: AAM - also change "would be" to TASA.
XBD ERN 63: AAM - replace "The type parameter ... to type." (line 11103-11106)
with :
"The parameter type shall be a type
name specified such that the type of a pointer to an object that has the specified type can
be obtained simply by postfixing a * to type. If there is no actual next argument, or if
type is not compatible with the type of the actual next argument (as promoted according
to the default argument promotions), the behavior is undefined, except for the following
cases:
- one type is a signed integer type, the other type is the corresponding unsigned integer
type, and the value is representable in both types;
- one type is pointer to void and the other is a pointer to a character type."
Then keep previous 11106-11107 sentence (as new para).
XBD ERN 64: AAM. Use stated option 1.
XBD ERN 65: Dup 66
XBD ERN 66: Accept
XBD ERN 68: AAM - add this comment to the rand_r() page. Further
wordsmithed -- Andrew has markup.
XBD ERN 73: (withdrawn from pre-disposed). There are two flags ....
change "member" to "members". AAM.
XBD ERN 79: AAM, just use the field names, st_ino and st_dev.
XBD ERN 81: Reject ... several of the S_IFMT bits are mandatory (e.g.
S_IFREG), but the only one required by name in the non-XSI sections of this
standard is S_IFSOCK. In fact, the only place this *was* used was for
isfdtype(), which has now been removed, so S_IFSOCK should be XSI shaded.
XBD ERN 82: AAM - use second alternate
XBD ERN 86: Accept
XBD ERN 87: AAM - No and yes respectively.
XBD ERN 90: AAM - OLCUC
XBD ERN 91: Accept
XBD ERN 93: Accept
XBD ERN 94: Accept
XBD ERN 95: Accept
XBD ERN 98: Accept
XBD ERN 99: Accept
XBD ERN 100: Accept
XBD ERN 103: Accept
XBD ERN 104: Dup 103
XCU ERN 001: AAM - make BOTH changes proposed.
XCU ERN 002: Open --- think this is OK, but would like to check with
Donn Terry.
XCU ERN 003: AAM -- unlink can remove a link to a directory, causing
this behavior. Andrew to add additional rationale to help clarify this
(from POSIX.2).
XCU ERN 004: Wording is unchanged from POSIX.2, and interp has been
filed. We agree that this is unclear, but this is not the time or place to
fix it. Reject (hope that a TC will fix this later!).
XCU ERN 005: AAM, also change in line 260.
XCU ERN 006: Dup 5
XCU ERN 011: Accept -- although the Bourne shell is clearly out of scope,
the grammar does indeed permit do as the third word ...
XCU ERN 012: Reject ... please see the rationale on 3521. However, note
that time can be a built-in and behave this way (see also the rationale on
p3115 and description on 3113).
XCU ERN 013: Reject; the text reserves labels for future use, quoting is
unspecified at present, and should remain that way.
XCU ERN 014: Reject -- see 15
XCU ERN 015: AAM, though we disagree with the rationale, we do agree
that no change is required.
XCU ERN 016: Accept
XCU ERN 017: Accept
XCU ERN 019: Reject - only used by the cd builtin, and has
no global effect, the group (after nearly an hour of argument) was unable
to achieve concensus.
NOTE - Andrew discovered some missing alignment with .2b for builtin command "pwd".
XCU ERN 020: Reject - although there is existing practice for this, it
is out of scope since it is not in any of the base standards.
XCU ERN 021: AAM - change "parameter" to "null" in col 3 line 1589.
Assign null -> assign word in col 4.
XCU ERN 022: Reject - quotes do not nest in this way ... the example
does not show nested quotes and does not behave as described.
XCU ERN 023: AAM - remove the second bullet (1681) and make the list
into a continuous sentence.
XCU ERN 024: AAM -- dup 23.
XCU ERN 026: Accept
XCU ERN 027: Reject -- see 26
XCU ERN 028: Reject -- see 26
XCU ERN 029: Accept
XCU ERN 030: AAM -- "Attempts to close a file descriptor that is not
open shall not constitute an error."
XCU ERN 031: Reject -- this is an interp request, and we are not the
interp committee.
XCU ERN 032: Reject -- editors decision, and the editors are happy.
XCU ERN 033: Accept
XCU ERN 035: AAM - Andrew has words
XCU ERN 036: Reject -- out of scope to change the grammar like this.
XCU ERN 038: Accept
XCU ERN 039: Accept
XCU ERN 040: Reject - this is out of scope, representing a change not
based on the base docs. An interp would be required.
XCU ERN 041: Accept
XCU ERN 042: An interp is needed ... this seems to be a serious hole.
The group considered that the following would appear to be a better
solution:
XCU ERN 043: dup 42 (there was an error in the grammar supplied in 42)
XCU ERN 044: Reject -- out of scope.
XCU ERN 045: Reject - the standard is clear
XCU ERN 046: Reject -- this is unnescessary
XCU ERN 048: Reject -- Andrew has rationale
XCU ERN 049: Reject -- out of scope
XCU ERN 051: Accept
XCU ERN 052: Reject - an interp is needed
XCU ERN 053: AAM - change "unless" on l 3358 to "unless stated otherwise
in the description of the option or unless" -- this is interp #167.
XCU ERN 057: Accept
XCU ERN 058: AAM -- add "Implementations may permit names with the SIG
prefix or in lowercase as an extension" (Andrew has correct words).
XCU ERN 059: AAM - Interp filed: use "eval action" with action in italic
XCU ERN 060: Reject - out of scope, interp needed
XCU ERN 061: Accept
XCU ERN 062: (assume that this aardvark refers to line 4841 on page
2330) refer to base with recommendation - remove references to the checksum being in the first
line, remove the parenthetical element. Andrew has proposed markup.
ACTION TOG IR to convey the decision for XCU ERN 062 to the Base WG for confirmation.
XCU ERN 064: Reject -- file an interp
XCU ERN 066: Reject -- this is just an example, there is already a
comment suggesting use of crontab as better, there are lots of other issues
here, just leave it alone!
XCU ERN 067: Accept
XCU ERN 068: Accept
XCU ERN 075: Reject, the pre-processor is conceptually a part of the
compiler part.
XCU ERN 076: Reject. This is standard editorial style.
XCU ERN 077: Accept
XCU ERN 078: The standard is silent, and thus this is unspecified. No
action required. Reject.
XCU ERN 079: Accept
XCU ERN 082: Reject -- standard is silent (implementations could do this
as an extension).
XCU ERN 083: OPEN, this is useful (and correct) rationale
ACTION - Jon Hitchcock to submit revised words for XCU ERN 083. CLOSED.
XCU ERN 085: Reject -- out of scope, invention.
XCU ERN 086: Reject out of scope, not in base docs --
ACTION TOG IR to convey XCUN ERN 086 to the BWG for their consideration.
XCU ERN 088: AAM, take option 1
XCU ERN 089: Accept
XCU ERN 090: AAM - fix XRAT (p3318) to agree with the normative text
(unspecified). Cathy has words.
XCU ERN 091: Reject - invention, out of scope.
XCU ERN 092: Reject - the general concepts of filename resolution cover
this.
XCU ERN 093: AAM - this does not improve the clarity of the sentence,
nor change any requirement. Downgraded to a comment, since the wording was
not changed between D5 and D6.
However, the Donn Terry comment that caused the change from D5 to D6 was
triggered because the FORTAN and C cases differed, and FORTRAN uses
"unspecified" while C is "undefined". Make them both "unspecified".
XCU ERN 095: They don't have to be the same, just not in conflict...
out of scope, reject.
XCU ERN 097: AAM, Andrew has words
XCU ERN 098: defer to Keith Bostic (expect no change to be made).
XCU ERN 099: See lines 17028-17039. No change required. Reject.
XCU ERN 100: Reject -- out of scope invention.
XCU ERN 101: AAM, the mask value shall be ANDed with the value of the
input file before the comparison with the value field of the line is made.
XCU ERN 102: Accept
XCU ERN 104: Reject - invention, out of scope
XCU ERN 107: Reject - invention, out of scope
XCU ERN 108: AAM - add to description "When a file contains less than
number lines, it shall be copied to standard output in its entirety. This
shall not be an error."
XCU ERN 109: Reject - invention, out of scope
XCU ERN 112: The review group did not see the need to make this
unspecified, since translating filemodes with bits unknown to ls is
covered, unknown uid or gid is covered, etc. So, while the output may not
be predicatble, it will always be according the specification here. The
application will not crash, nor will applications that depend on the
output of ls in this case. Reject.
XCU ERN 113: Defer to OGTGBase. Rject unless they have a recommendation
(out of scope)
ACTION TOG IR to convey XCU ERN 113 to OgTgBase for their consideration.
XCU ERN 115: Reject - this would reduce concensus.
XCU ERN 116: AAM - add an extra '7' to the octal limit on 27532.
XCU ERN 117: AAM - for each dir operand the rmdir utility shall perform
operations equivalent to the rmdir() function defined in the System
Interface volume with the dir operand as its only argument.
XCU ERN 118: Accept
XCU ERN 119: Reject - an interpretation request is needed for this.
XCU ERN 121: Accept
XCU ERN 123: Reject - out of scope
XCU ERN 126: AAM - name ambiguous characters
XSH ERN 001: Accept
XSH ERN 003: AAM - most of this is covered elsewhere, but remove
{OPEN_MAX} in this position only (not in the rest of the list).
XSH ERN 004: Accept
XSH ERN 005: Dup 6
XSH ERN 006: Accept
XSH ERN 007: Accept
XSH ERN 008: Accept
XSH ERN 009: Dup 8
XSH ERN 010: Accept
XSH ERN 011: Reject - an interp is required to answer these questions.
XSH ERN 014: This is a serious omission from 1003.1g. The function
sokatmark() was invented there to hide some hideous ioctl() calls, and
represent the only way to access an important part of the IP protocol. The
function should be added; the best place to do this is as a part of TC1,
since it is explictly out of our current scope. This is a very serious
problem. Reject - out of scope.
XSH ERN 015: Accept
XSH ERN 017: Accept
XSH ERN 018: Reject, this is covered by pathname resilution general
concept.
XSH ERN 019: Reject - out of scope, and interp is needed.
XSH ERN 022: Reject - the wording is intentionally vague.
ACTION TOG IR to refer XSH ERN 022 to BWG for their consideration
XSH ERN 025: AAM - add additional rationale on p760, after line 9855
Applications that do not require to access their arguments may use the
form
XSH ERN 026: Open --
ACTION TOG IR to request a resolution from the BWG to ensure that XSH ERN 026 is in scope, with the recommendation that this ERN is accepted.
XSH ERN 027: Reject, this is correct English grammar
XSH ERN 028: Reject, out of scope, an interp is required. This might be
right, but base standards have it this way.
XSH ERN 029: AAM - use second alternate, and change "and" to "or" to
ensure not changing the meaning.
XSH ERN 031: Accept
XSH ERN 033: Reject, the para is not considered harmful, and there is
still confusionn about what restrict means, even in the ISO C committees!
XSH ERN 034: AAM -
In format strings containing the % form of conversion specification, each conversion
spec uses the first unused argument in the argument list.
XSH ERN 037: Reject - this is straight from C99 standard.
XSH ERN 038: Accept
XSH ERN 039: Accept
XSH ERN 040: AAM -
line 13297 insert word "be".
Page 871, after line 13542, add additional example
XSH ERN 041: Reject, the wording is direct from ISO C ... needs an
interp there.
XSH ERN 042: AAM ... add a "see also fprintf()" to the example page for
strfmon, and leave this example alone.
XSH ERN 043: Accept
XSH ERN 047: AAM - Andrew has markup.
XSH ERN 048: Reject - an interp is required to fix this.
XSH ERN 049: AAM - add to app usage: Application developers should consult the
implementation's documentation to determine the supported codesets and
their naming scheme.
XSH ERN 050: Accept (note page 2026 should be 2016)
XSH ERN 051: The \n is NOT needed (localtime() procides a newline). %ju
is needed. AAM.
XSH ERN 056: Reject - this notation shows that only trace.h is needed
for the functions below.
XSH ERN 059: Reject - see mail list discussion for rationale.
XSH ERN 060: AAM, use second alternate.
XSH ERN 061: AAM, yes
XSH ERN 063: Reject - this was deliberately left non-specific. Why is a
backup scheme more important than other applications?
XSH ERN 069: Accept -- this aligns with ISO C
XSH ERN 070: Accept
XSH ERN 075: AAM - also lots of , as thousands sep need to change to
spaces ... cathy has list.
XSH ERN 076: Open - send this to Fred Tydeman; default position is no
change.
XSH ERN 077: Accept
XSH ERN 079: AAM - Andrew has markup [use fputs(msg, stdout), not
printf(msg); insert comment to example]
XSH ERN 081: Accept ... the editors will try to fix this bug in the
tools.
XSH ERN 082: Accept
XSH ERN 083: Accept
XRAT ERN 02: Accept
XRAT ERN 03: Accept
XRAT ERN 04: AAM (make the change suggested)
XRAT ERN 05: Accept
XRAT ERN 06: Accept
XRAT ERN 07: AAM - change stat to stat(), unlink to unlink()
XRAT ERN 12: Accept
XRAT ERN 13: Accept
XRAT ERN 15: Accept
XRAT ERN 18: OPEN - defer to Frank Prindle
ACTION Frank Prindle to propose suitable words here CLOSED -- use posix_trace_event()
XRAT ERN 21: AAM - Andrew has accurate markup
This section addresses only the issue of semantics; it is not
intended to specify syntax. For example, ISO C requires that
'0L' be recognized as an integer constant equal to zero, but
utilities like awk and sh are not required to recognize
'0L' (though they are allowed to, as an extension).
ISO C requires that a C compiler must issue a diagnostic for
constants that are too large to represent. Standard utilities
are not required to issue these diagnostics; for example, the
command
XRAT ERN 24: Accept
XRAT ERN 28: We believe the changes made as a result of the
sub-profiling discussions have closed this (see austin-group-l seq 3354)
AAM.
XRAT ERN 30: Accept (check with Frank Prindle)
Revisited (Friday). Default position is to accept
if_clause : If compound_list Then compound_list else_part Fi
;
else_part : Elif compound_list Then compund_list else_part
| Else compound_list
| /* empty */
Revisited, Friday. Jon made a hand-written submission to Andrew.
"This behavior is now the default. It is not consistent with the definition
of dot." This replaces sentence on line 8881. AAM
Also, delete from first sentence from first comma to end.
main(void)
as specified in the C standard. However, the implementation will always provide
the two arguments argc and argv, even if they are not used.
Printing wide characters
Suppose that L'@' expands to 3 bytes:
wchar_t wz [3] = L"@@"; // zero-terminated
wchar_t wn [3] = L"@@@"; // unterminated
fprintf (stdout, "%ls", wz); // Outputs 6 bytes
fprintf (stdout, "%ls", wn); // Undefined because no terminator
fprintf (stdout, "%4ls", wz); // Outputs 3 bytes
fprintf (stdout, "%4ls", wn); // Outputs 3 bytes, no terminator needed
fprintf (stdout, "%9ls", wz); // Outputs 6 bytes
fprintf (stdout, "%9ls", wn); // Outputs 9 bytes, no terminator needed
fprintf (stdout, "%10ls", wz); // Outputs 6 bytes
fprintf (stdout, "%10ls", wn); // Undefined because no terminator
...
In the last line of the example, after processing three characters
nine bytes have been output. The fourth character must now be
examined to determine whether it converts to one byte or more. If it
converted to more than one byte, the output would be
only 9 bytes. Since there is no fourth character in the array,
the behaviour is undefined.
Revisited, Thursday. Frank gave reponse. Now is AAM.
The behavior on overflow is undefined for ISO C arithmetic.
Therefore, the standard utilities can use "bignum"
representation for integers so that there is no fixed maximum unless
otherwise stated in the utility description.
Similarly, standard utilities can use infinite-precision
representations for floating point arithmetic, so long as these
representations exceed the ISO C requirements.
diff -C 2147483648 file1 file2
has undefined behavior, and the diff utility is not required
to issue a diagnostic
even if the number 2147483648 cannot be represented.
Draft 7 should be issued June 15 Looking at a ten day recirculation and no new comments or objections. Submit to IEEE Standards Board July 29. We should not need another face-to-face meeting for another five years (well, maybe four years ...)
The following Aardvark awards were presented by Andrew Josey:
awarded to Donn S. Terry for high quantity bug reporting
award to Don W. Cragun for high quality bug reporting
Nominations are sought for
The sockatmark function from 1003.1g is not included ... and is urgently needed. Does the scope allow us to include this or do we have to put it in a technical corrigendum? The scope does include a statement allowing changes to be made to make the document self-consistent, and there is currently a dangling normative reference to this function. We could get away with adding it using this as a change -- Andrew is mailing Roger Martin to see if he agrees. We have the text from 1003.1g, and it is ready to go in. We need to get as many people as possible looking at this.
Looking at this function in the room:
there are possible problems caused because the function does not specify
whether it blocks or not. There are other methods for testing for a
mark ... such as using a signal handler with SIGURG1, or via select.
However, these only tell you that there is out of band data around, they do
not indicate that you are actually at the mark.
ACTION - Andrew Gollan to develop some Application Usage text and examples for sockatmark()
Revisited, Friday. Andrew Gollan reports that he has checked and not
implementations he is aware of will actually block in sockatmark().
Additionally, we can find no examples of code that actually use the
underlying SOCKATMARK ioctl functionality. This function would complete the
picture for the TCP/IP protocol stack, but is not widely used.
ACTION Andrew Gollan to write rationale for 2.10.12 socket out of band data state, and the concerns around it.
Andrew Josey has asked the entire ballot group for their opinion on adding
this function.
ACTION Andrew Josey to submit UK ISO ballot comment on sockatmark to cover ISO process if we decide to add it
In the subprofiling considerations there are some references to legacy funcctions. Remove references to
ftime() from XSI_SINGLE_PROCESS getwd() from XSI_FILE_SYSTEM mktemp() from XSI_FILE_SYSTEM utimes() from XSI_FILE_SYSTEM wcswcs() from XSI_WIDE_CHAR
The following functions are missing from the table in 2.4.3 (the set of functions that shall either be reentrant or non-interruptable by signals and shall be async-signal-safe)
accept(), | bind(), | connect(), | getpeername(), | getsockname(), | getsockopt(), |
listen(), | recv(), | recvfrom(), | recvmsg(), | send(), | sendto(), |
setsockopt(), | shutdown(), | socket(), | socketpair(), | poll(), | pselect(), |
select(), | sendmsg(). |
There are a few problems in limits.h arising from the 8-bit byte decision. In particular, CHAR_MIN is a value, not a min acceptable, and CHAR_MAX similarly.
Comments from Jack McCann received:
Andrew, Here are the outstanding issues from apifolks/ipng. Dave Thaler identified a number of issues with 2553bis, of which the following items are applicable to austin: >3) The description of IPV6_MULTICAST_IF should say (as is done for > IPV6_JOIN_GROUP) what happens if the app specifies 0. > (I believe this should tell the kernel to choose one.) I think Dave is right, here is the draft 6 text in xsh section 2.10.20.4 lines 2822-2824: IPV6_MULTICAST_IF The index of the interface to be used for outgoing multicast packets. It can be set via setsockopt() and read via getsockopt(). We could add another sentence copied from IPV6_JOIN_GROUP: If the interface index is specified as zero, the system selects the interface. >4) IPV6_LEAVE_GROUP is similarly terse. If the app passes 0 as the > interface to IPV6_JOIN_GROUP, the current wording implies that > it has to magically figure out which interface the kernel chose > and specify that interface in the leave. The wording should > be updated to say that the value of the interface field should match=20 > whatever the app used in that field in its IPV6_JOIN_GROUP call. Again, Dave makes a valid point, here is draft 6 text in xsh section 2.10.20.4 lines 2812-2816: IPV6_LEAVE_GROUP When set via setsockopt(), it removes the application from the multicast group on an interface (identified by its index) and addressed by a given multicast address. An attempt to read this option using getsockopt() shall result in an [EOPNOTSUPP] error. The value of this option is an ipv6_mreq structure. We could harmlessly (by saying "should") add another sentence as Dave suggests: The application should specify the same interface as was used in IPV6_JOIN_GROUP. As I glance through this section, I notice that the data types and default values of the following options are unspecified in austin (note section 2.10.16 defines arg type and default for socket level options). Here are the values from draft-ietf-ipngwg-rfc2553bis-03.txt: arg type boolean? default IPV6_MULTICAST_HOPS int no 1 IPV6_MULTICAST_IF unsigned int no 0 IPV6_MULTICAST_LOOP unsigned int yes 1 IPV6_UNICAST_HOPS int no none >8) In section 6.4: >> [...] Note that IN6_IS_ADDR_LINKLOCAL >> and IN6_IS_ADDR_SITELOCAL return true only for the two local-use IPv6 >> unicast addresses. [...] > >I believe "types of" should be inserted after "two".=20 >There's certainly more than two local-use unicast addresses... >Furthermore, it would help to illustrate the point by explicitly >stating what the result of the test >IN6_IS_ADDR_LINKLOCAL( ::1 ) >is, especially in light of the fact that the scoped-arch document >says ::1 is link-scoped (i.e. it should return false, and it's >worth noting this, similar to the current note about multicast >addresses). This applies to draft 6 xbd page 280 lines 10043-10045, which could be replaced with something like: IN6_IS_ADDR_LINKLOCAL and IN6_IS_ADDR_SITELOCAL return true only for the two types of local-use (link-local and site-local, respectively) IPv6 unicast addresses. They do not return true for multicast addresses of either link-local or site-local scope. Note that IN6_IS_ADDR_LINKLOCAL does not return true for the IPv6 loopback address (::1). In addition to Dave's comments, there was the topic of EAI_NODATA brought up by jinmei@kame.net. The [brief] history of EAI_NODATA is it was in RFC2553, but removed by XNET in XNS 5.2 based on the following change request by Craig Metz: > Rationale: EAI_ADDRFAMILY, EAI_NODATA, and EAI_NONAME can't always be > distinguished, and they mean basically the same thing. Parameters were passed > in querying for something, and no result was found that matched against the > query. Given that the query failed, I don't think that the further > determination of how much or little was found is useful, and I don't think > that you can necessarily make this distinction reliably. The information > needed to make this distinction isn't available for all protocols one > might use to actually perform a query. > > I believe that EAI_ADDRFAMILY and EAI_NODATA should be removed, and both > failure cases be part of EAI_NONAME. The counterargument, presented by Jinmei, is that for DNS lookups, there are useful cases when we separate EAI_NODATA and EAI_NONAME. If there was consensus on this, it was consensus by silence (I don't think anyone else spoke up in support of this change), but neither was there objection... I'll note that we (Tru64 UNIX) no longer use EAI_NODATA, but I find references to it in BIND9... One last comment, my own, on 2.10.20.2 Compatibility with IPv4. If you look at the usage of the term "may" in that section, and then look at the strict definition of the term "may" on page 452 xsh lines 35-39, you realize that implementations are not required to support use of AF_INET6 sockets over IPv4, and that applications are discouraged from using AF_INET6 sockets over IPv4 because of the portability concerns that raises. I believe the definition of the term "can" on page 451 xsh lines 18-21 is more appropriate, i.e. "applications can" use AF_INET6 sockets over IPv4. Of course, that implies "implementations shall". I believe that was the intent of RFC2553, and that the consensus on the default value of the IPV6_V6ONLY supports this. However, this was not directly discussed on the IPng or apifolks mailing lists, and it feels late to be making this kind of change to austin, but I wanted to at least identify the issue. I wonder how many other folks thought that when RFC2553 said "applications may", it meant "implementations shall"... - Jack
We will Accept As Marked this -- at page 519 line 2824 Add:
"If the interface index is specified as zero, the
system selects the interface (for example, by looking up the address in a routing table and
using the resulting interface)."
We will not take the second action suggested (for IPV6_LEAVE_GROUP), since
this is obvious and soes not need stating.
At P519 L2821 add "The paramater type of this option is a pointer to int
(default value 1)"
At P519 L2824 add "The paramater type of this option is a pointer to unsigned int
(default value 0)."
... etc (Cathy has full markup)
On Page 280 delete lines 10043-10045.
On Page 518, change "may" -> "can" at lines 2782 and 2794. Also there is a
possible "may"->"shall" needed at line 2789, but this would need a base WG
resolution. Probably not worth doing.
ACTION TOG IR to ask OGTGBASE: Should we make it mandatory to allow a node with an IPv4 address to
communicate using that address via an AF_INET6 socket? I.e. should we
change "may" to "shall" in the following (from 2.10.20.2)
"If a node has an IPv4 address, then
the implementation may allow applications to communicate using that address via an
AF_INET6 socket."
The meeting adjourned at 1.03pm friday.