<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://sourceware.org/bugzilla/bugzilla.dtd">

<bugzilla version="4.0.10"
          urlbase="http://sourceware.org/bugzilla/"
          
          maintainer="overseers@sourceware.org"
>

    <bug>
          <bug_id>14415</bug_id>
          
          <creation_ts>2012-07-28 09:38:00 +0000</creation_ts>
          <short_desc>AI_V4MAPPED is useless with AI_UNSPEC but they&apos;re used together as defaults when hints=NULL</short_desc>
          <delta_ts>2013-02-24 22:12:10 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>glibc</product>
          <component>network</component>
          <version>2.15</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>WAITING</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Šimerda">psimerda</reporter>
          <assigned_to name="Pavel Šimerda">psimerda</assigned_to>
          <cc>carlos</cc>
    
    <cc>tore</cc>
          <cf_gcchost></cf_gcchost>
          <cf_gcctarget></cf_gcctarget>
          <cf_gccbuild></cf_gccbuild>
          

      

      

      

          <long_desc isprivate="0">
            <commentid>56620</commentid>
            <who name="Pavel Šimerda">psimerda</who>
            <bug_when>2012-07-28 09:38:50 +0000</bug_when>
            <thetext>From &apos;man getaddrinfo&apos;:

  Specifying hints as NULL is equivalent to  setting  ai_socktype and
  ai_protocol to 0; ai_family to AF_UNSPEC; and ai_flags to
  (AI_V4MAPPED | AI_ADDRCONFIG).

  ...

  If hint.ai_flags specifies the AI_V4MAPPED flag, and hints.ai_family
  was specified as  AF_INET6, and no  matching IPv6 addresses could be
  found, then return IPv4-mapped IPv6 addresses in the list pointed to
  by res. If both AI_V4MAPPED and AI_ALL are specified in hints.ai_flags,
  then return both IPv6 and IPv4-mapped IPv6 addresses in the list pointed
  to by res. AI_ALL is ignored if AI_V4MAPPED is not also specified.

As I read it, AI_V4MAPPED is useless without AF_INET6. So either it is wrong,
or I miss something about AI_V4MAPPED that should be documented in the manpage.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>56723</commentid>
            <who name="Carlos O&apos;Donell">carlos_odonell</who>
            <bug_when>2012-08-03 04:03:51 +0000</bug_when>
            <thetext>My understanding is that because the default uses AF_UNSPEC that the caller accepts *any* address family thus AI_V4MAPPED is not useless because AF_UNSPEC can be treated as anything including AF_INET6.

Does that clarify why we would set AI_V4MAPPED in the default?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>56724</commentid>
            <who name="Carlos O&apos;Donell">carlos_odonell</who>
            <bug_when>2012-08-03 04:06:03 +0000</bug_when>
            <thetext>Please note that the man pages are maintained by man-pages project here:
http://www.kernel.org/doc/man-pages/

Would a clarification on the man page about the uses of AF_UNSPEC help?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>56728</commentid>
            <who name="Pavel Šimerda">psimerda</who>
            <bug_when>2012-08-03 16:12:06 +0000</bug_when>
            <thetext>&gt; My understanding is that because the default uses AF_UNSPEC that the caller
&gt; accepts *any* address family thus AI_V4MAPPED is not useless because AF_UNSPEC
&gt; can be treated as anything including AF_INET6.

This is not the case. My tests say that AF_UNSPEC with AI_V4MAPPED returns
regular IPv4 addresses, regular IPv6 addresses but *no* IPv4-mapped IPv6
addresses. So it actually behaves exactly like AF_UNSPEC without AI_V4MAPPED.

&gt; Does that clarify why we would set AI_V4MAPPED in the default?

Unfortunately not.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>57549</commentid>
              <attachid>6649</attachid>
            <who name="Pavel Šimerda">psimerda</who>
            <bug_when>2012-09-22 15:45:24 +0000</bug_when>
            <thetext>Created attachment 6649
patch to remove useless AI_V4MAPPED from default with AF_UNSPEC</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>59306</commentid>
              <attachid>6794</attachid>
            <who name="Pavel Šimerda">psimerda</who>
            <bug_when>2013-01-03 14:53:57 +0000</bug_when>
            <thetext>Created attachment 6794
getaddrinfo: use zero ai_flags by default

    According to POSIX1-2008, AI_V4MAPPED flag shall be ignored unless ai_family
    equals AF_INET6. In the default hints, ai_family is AF_UNSPEC. Therefore
    AI_V4MAPPED is redundant.
    
    AI_ADDRCONFIG can potentially be beneficial to applications that use
    getaddrinfo() results to immediately call connect(), sendto() and
    similar functions to avoid querying redundant DNS records according
    to the current address configuration.
    
    Those applications will also need to specify ai_socktype and/or
    ai_protocol and therefore will not use hints=NULL. As AI_DEFAULT is not
    a part of the public API, such applications will not be able to use the
    default flags at all.
    
    Please note that POSIX1-2008 doesn&apos;t define any default flags at all.
    
    Resolves: #14415, #14965</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
              isurl="0"
          >
            <attachid>6649</attachid>
            <date>2012-09-22 15:45:00 +0000</date>
            <delta_ts>2012-09-22 15:45:24 +0000</delta_ts>
            <desc>patch to remove useless AI_V4MAPPED from default with AF_UNSPEC</desc>
            <filename>glibc-remove-default-v4mapped.patch</filename>
            <type>text/plain</type>
            <size>763</size>
            <attacher>psimerda</attacher>
            
              <data encoding="base64">Y29tbWl0IDhjMzhiMTg5MTlhODcyN2Q1NDQzODM5NTEyOWZkNmZlMjIwOWEzYTcKQXV0aG9yOiBQ
YXZlbCDFoGltZXJkYSA8cHNpbWVyZGFAcmVkaGF0LmNvbT4KRGF0ZTogICBTYXQgU2VwIDIyIDE0
OjMyOjMzIDIwMTIgKzAyMDAKCiAgICByZW1vdmUgQUlfVjRNQVBQRUQgZnJvbSBkZWZhdWx0IGdl
dGFkZHJpbmZvKCkgaGludHMKICAgIAogICAgQWNjb3JkaW5nIHRvIHRoZSBtYW51YWwgcGFnZSwg
QUlfVjRNQVBQRUQgb25seSBtYWtlcyBzZW5zZSB3aXRoIEFGX0lORVQ2IGFuZAogICAgdGhlIGRl
ZmF1bHQgZmFtaWx5IGlzIEFGX1VOU1BFQy4gVGhlcmVmb3JlIGl0J3MgdXNlbGVzcyBhbmQgY29u
ZnVzaW5nLgoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0ZGIuaCBiL2luY2x1ZGUvbmV0ZGIuaApp
bmRleCAzZjJhZTA2Li4yYjU2MmIyIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldGRiLmgKKysrIGIv
aW5jbHVkZS9uZXRkYi5oCkBAIC0xOTAsNyArMTkwLDcgQEAgbGliY19oaWRkZW5fcHJvdG8gKHJ1
c2VycGFzcykKIC8qIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbiBoYXMgYmVlbiByZW1vdmVkIGZy
b20gdGhlIHB1YmxpYyBoZWFkZXIKICAgIHNpbmNlIHdlIGRvbid0IHdhbnQgcGVvcGxlIHRvIHVz
ZSB0aGVtLiAgKi8KIAotI2RlZmluZSBBSV9ERUZBVUxUICAgIChBSV9WNE1BUFBFRCB8IEFJX0FE
RFJDT05GSUcpCisjZGVmaW5lIEFJX0RFRkFVTFQgICAgQUlfQUREUkNPTkZJRwogCiAjaW5jbHVk
ZSA8aW5ldC9uZXRncm91cC5oPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
              isurl="0"
          >
            <attachid>6794</attachid>
            <date>2013-01-03 14:53:00 +0000</date>
            <delta_ts>2013-01-03 14:53:57 +0000</delta_ts>
            <desc>getaddrinfo: use zero ai_flags by default</desc>
            <filename>getaddrinfo-zero-ai-flags.patch</filename>
            <type>text/plain</type>
            <size>1837</size>
            <attacher>psimerda</attacher>
            
              <data encoding="base64">Y29tbWl0IGRjZjQ3ZGFmMmI4YTRhZGViNDMzNDI5YjE3YjJlM2U3ZTQ0OWRmZWEKQXV0aG9yOiBQ
YXZlbCDFoGltZXJkYSA8cGF2bGl4QHBhdmxpeC5uZXQ+CkRhdGU6ICAgVGh1IERlYyAyMCAyMToz
Mjo0MyAyMDEyICswMTAwCgogICAgZ2V0YWRkcmluZm86IHVzZSB6ZXJvIGFpX2ZsYWdzIGJ5IGRl
ZmF1bHQKICAgIAogICAgQWNjb3JkaW5nIHRvIFBPU0lYMS0yMDA4LCBBSV9WNE1BUFBFRCBmbGFn
IHNoYWxsIGJlIGlnbm9yZWQgdW5sZXNzIGFpX2ZhbWlseQogICAgZXF1YWxzIEFGX0lORVQ2LiBJ
biB0aGUgZGVmYXVsdCBoaW50cywgYWlfZmFtaWx5IGlzIEFGX1VOU1BFQy4gVGhlcmVmb3JlCiAg
ICBBSV9WNE1BUFBFRCBpcyByZWR1bmRhbnQuCiAgICAKICAgIEFJX0FERFJDT05GSUcgY2FuIHBv
dGVudGlhbGx5IGJlIGJlbmVmaWNpYWwgdG8gYXBwbGljYXRpb25zIHRoYXQgdXNlCiAgICBnZXRh
ZGRyaW5mbygpIHJlc3VsdHMgdG8gaW1tZWRpYXRlbHkgY2FsbCBjb25uZWN0KCksIHNlbmR0bygp
IGFuZAogICAgc2ltaWxhciBmdW5jdGlvbnMgdG8gYXZvaWQgcXVlcnlpbmcgcmVkdW5kYW50IERO
UyByZWNvcmRzIGFjY29yZGluZwogICAgdG8gdGhlIGN1cnJlbnQgYWRkcmVzcyBjb25maWd1cmF0
aW9uLgogICAgCiAgICBUaG9zZSBhcHBsaWNhdGlvbnMgd2lsbCBhbHNvIG5lZWQgdG8gc3BlY2lm
eSBhaV9zb2NrdHlwZSBhbmQvb3IKICAgIGFpX3Byb3RvY29sIGFuZCB0aGVyZWZvcmUgd2lsbCBu
b3QgdXNlIGhpbnRzPU5VTEwuIEFzIEFJX0RFRkFVTFQgaXMgbm90CiAgICBhIHBhcnQgb2YgdGhl
IHB1YmxpYyBBUEksIHN1Y2ggYXBwbGljYXRpb25zIHdpbGwgbm90IGJlIGFibGUgdG8gdXNlIHRo
ZQogICAgZGVmYXVsdCBmbGFncyBhdCBhbGwuCiAgICAKICAgIFBsZWFzZSBub3RlIHRoYXQgUE9T
SVgxLTIwMDggZG9lc24ndCBkZWZpbmUgYW55IGRlZmF1bHQgZmxhZ3MgYXQgYWxsLgogICAgCiAg
ICBSZXNvbHZlczogIzE0NDE1LCAjMTQ5NjUKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldGRiLmgg
Yi9pbmNsdWRlL25ldGRiLmgKaW5kZXggM2YyYWUwNi4uN2E2MmEwMiAxMDA2NDQKLS0tIGEvaW5j
bHVkZS9uZXRkYi5oCisrKyBiL2luY2x1ZGUvbmV0ZGIuaApAQCAtMTg3LDExICsxODcsNiBAQCBl
eHRlcm4gaW50IHJ1c2VycGFzcyAoY29uc3QgY2hhciAqaG9zdCwgY29uc3QgY2hhciAqKmFuYW1l
LAogbGliY19oaWRkZW5fcHJvdG8gKHJ1c2VycGFzcykKIAogCi0vKiBUaGUgZm9sbG93aW5nIGRl
ZmluaXRpb24gaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBwdWJsaWMgaGVhZGVyCi0gICBzaW5j
ZSB3ZSBkb24ndCB3YW50IHBlb3BsZSB0byB1c2UgdGhlbS4gICovCi0KLSNkZWZpbmUgQUlfREVG
QVVMVCAgICAoQUlfVjRNQVBQRUQgfCBBSV9BRERSQ09ORklHKQotCiAjaW5jbHVkZSA8aW5ldC9u
ZXRncm91cC5oPgogCiBzdHJ1Y3QgcGFyc2VyX2RhdGE7CmRpZmYgLS1naXQgYS9zeXNkZXBzL3Bv
c2l4L2dldGFkZHJpbmZvLmMgYi9zeXNkZXBzL3Bvc2l4L2dldGFkZHJpbmZvLmMKaW5kZXggMzdk
ZTMzNS4uZDBhMGU3NyAxMDA2NDQKLS0tIGEvc3lzZGVwcy9wb3NpeC9nZXRhZGRyaW5mby5jCisr
KyBiL3N5c2RlcHMvcG9zaXgvZ2V0YWRkcmluZm8uYwpAQCAtMTMzLDcgKzEzMyw3IEBAIHN0cnVj
dCBnYWloCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYWRkcmluZm8gZGVmYXVsdF9oaW50cyA9CiAg
IHsKLSAgICAuYWlfZmxhZ3MgPSBBSV9ERUZBVUxULAorICAgIC5haV9mbGFncyA9IDAsCiAgICAg
LmFpX2ZhbWlseSA9IFBGX1VOU1BFQywKICAgICAuYWlfc29ja3R5cGUgPSAwLAogICAgIC5haV9w
cm90b2NvbCA9IDAsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>