get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.1/patches/2230366/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2230366,
    "url": "http://patchwork.ozlabs.org/api/1.1/patches/2230366/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/glibc/patch/20260429170104.2378474-1-pemensik@redhat.com/",
    "project": {
        "id": 41,
        "url": "http://patchwork.ozlabs.org/api/1.1/projects/41/?format=api",
        "name": "GNU C Library",
        "link_name": "glibc",
        "list_id": "libc-alpha.sourceware.org",
        "list_email": "libc-alpha@sourceware.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20260429170104.2378474-1-pemensik@redhat.com>",
    "date": "2026-04-29T17:00:48",
    "name": "[v7,1/2] resolv: implement ipv4+ipv6 flags in resolv.conf (bug 30544)",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "00b9e0ad8b261a03f4d7efe15cda19317e905e98",
    "submitter": {
        "id": 86150,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/86150/?format=api",
        "name": "Petr Menšík",
        "email": "pemensik@redhat.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/glibc/patch/20260429170104.2378474-1-pemensik@redhat.com/mbox/",
    "series": [
        {
            "id": 502111,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/502111/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/glibc/list/?series=502111",
            "date": "2026-04-29T17:00:48",
            "name": "[v7,1/2] resolv: implement ipv4+ipv6 flags in resolv.conf (bug 30544)",
            "version": 7,
            "mbox": "http://patchwork.ozlabs.org/series/502111/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2230366/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2230366/checks/",
    "tags": {},
    "headers": {
        "Return-Path": "<libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "libc-alpha@sourceware.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@legolas.ozlabs.org",
            "libc-alpha@sourceware.org"
        ],
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=Vwq6gKzD;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org;\n receiver=patchwork.ozlabs.org)",
            "sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=Vwq6gKzD",
            "sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com",
            "sourceware.org; spf=pass smtp.mailfrom=redhat.com",
            "server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.129.124"
        ],
        "Received": [
            "from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g5Nrb36rGz1yHX\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 03:02:07 +1000 (AEST)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 79B7B4BB5898\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 29 Apr 2026 17:02:05 +0000 (GMT)",
            "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by sourceware.org (Postfix) with ESMTP id B28B14B99F6A\n for <libc-alpha@sourceware.org>; Wed, 29 Apr 2026 17:01:43 +0000 (GMT)",
            "from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-633-9Du4TpWRMmW3rq8E7aqLFQ-1; Wed,\n 29 Apr 2026 13:01:41 -0400",
            "from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 9751A18005B6\n for <libc-alpha@sourceware.org>; Wed, 29 Apr 2026 17:01:40 +0000 (UTC)",
            "from pemensik-tp1g4 (pemensik-tp1g4.brq.redhat.com [10.43.2.231])\n by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with\n ESMTPS\n id C1CEF1800345; Wed, 29 Apr 2026 17:01:39 +0000 (UTC)"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org 79B7B4BB5898",
            "OpenDKIM Filter v2.11.0 sourceware.org B28B14B99F6A"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org B28B14B99F6A",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org B28B14B99F6A",
        "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777482103; cv=none;\n b=k+1Ndy+DpKfExD2dyPGI2icfssiToGEYNHgfkTgGdoTueCRVDqarS4TsAniOl/V9JGQTNoe2nZBUz8MRlzJwJJzKbG3+j1/Yi9+mH5lMHsw8w/EeVs+BDhs+esttb2v2jJ009aqdvFqzyfA0IvLm8UykSSpN+PPAt729WKhNPrQ=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777482103; c=relaxed/simple;\n bh=EoKe8t1cSvH1kddFayS8oIzWU/V8tAUlMlYpKmc1a60=;\n h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version;\n b=RfewVTib++sJ/2lTiLP21ZgyYArI8l+ZKkamF3yy376EujE6wXGRUQT79MdElgQXbbeDqOuxVRk1Tql2UpDXHfhQZgvXs3ZE4djhrWKCkKaPivURRth4IQ9ZIrghHoLvRxx3jm6aNvqxDusuIG5gPHwOsvenXSbE6+UAUSBlDyE=",
        "ARC-Authentication-Results": "i=1; server2.sourceware.org",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1777482103;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=8rfA1XjOizkFQW0Lk0leTkdM0UiDBeeyI2gR5MgAasA=;\n b=Vwq6gKzDzmK6ZU59MW41wzLH1ynM9ZMitaP3gZ7+L4Ac+e/7EAUGRm/dYUoDVMlbWwceNF\n 3N15l4rP/99+QIkj5+j2+Pwa3+67uH+bAaegsuv+gdXFIAbEljgpRin4JWjk/gMZYgQaxK\n ThT5bEOZ/w0XWHAIikwpBj/L2sHQNTw=",
        "X-MC-Unique": "9Du4TpWRMmW3rq8E7aqLFQ-1",
        "X-Mimecast-MFC-AGG-ID": "9Du4TpWRMmW3rq8E7aqLFQ_1777482100",
        "From": "=?utf-8?b?UGV0ciBNZW7FocOtaw==?= <pemensik@redhat.com>",
        "To": "libc-alpha@sourceware.org",
        "Cc": "=?utf-8?b?UGV0ciBNZW7FocOtaw==?= <pemensik@redhat.com>",
        "Subject": "[PATCH v7 1/2] resolv: implement ipv4+ipv6 flags in resolv.conf (bug\n 30544)",
        "Date": "Wed, 29 Apr 2026 19:00:48 +0200",
        "Message-ID": "<20260429170104.2378474-1-pemensik@redhat.com>",
        "In-Reply-To": "<20251020160017.1574993-4-pemensik@redhat.com>",
        "References": "<20251020160017.1574993-4-pemensik@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 3.4.1 on 10.30.177.93",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-MFC-PROC-ID": "fep4sIyILL48sJuZSOjkGBto_vFlrcHkT6_8RctSbzQ_1777482100",
        "X-Mimecast-Originator": "redhat.com",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "libc-alpha@sourceware.org",
        "X-Mailman-Version": "2.1.30",
        "Precedence": "list",
        "List-Id": "Libc-alpha mailing list <libc-alpha.sourceware.org>",
        "List-Unsubscribe": "<https://sourceware.org/mailman/options/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=unsubscribe>",
        "List-Archive": "<https://sourceware.org/pipermail/libc-alpha/>",
        "List-Post": "<mailto:libc-alpha@sourceware.org>",
        "List-Help": "<mailto:libc-alpha-request@sourceware.org?subject=help>",
        "List-Subscribe": "<https://sourceware.org/mailman/listinfo/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=subscribe>",
        "Errors-To": "libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org"
    },
    "content": "Add separate flags to mark support of address family. Its intention is\nto react dynamically to changing network conditions. If the host has\nIPv4 connectivity only, it would set ipv4 option. If it has also IPv6\nconnectivity, it would set ipv6 option. If it connects IPv6-only\nnetwork, then it set ipv6 only.\n\nFor backward compatibility it will keep old behaviour when both ipv4 and\nipv6 flags are missing. In this case it behaves the same way as if both\nwere present.\n\nThis is quite useful when default AF_UNSPEC is used in hints, but the\nhost is on network with just single AF used.\n\nUnlike no-aaaa option it would change just AF_UNSPEC behaviour, ie.\ngetent ahosts example.com. getent ahostsv4 and getent ahostsv6 would\nremain unmodified.\n\nSigned-off-by: Petr Menšík <pemensik@redhat.com>\n---\n resolv/nss_dns/dns-host.c             | 50 +++++++++++++++++----------\n resolv/res_debug.c                    |  2 ++\n resolv/res_init.c                     |  2 ++\n resolv/resolv.h                       |  2 ++\n resolv/tst-resolv-res_init-skeleton.c |  2 ++\n 5 files changed, 40 insertions(+), 18 deletions(-)",
    "diff": "diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c\nindex 728dae615d..16e45ce48d 100644\n--- a/resolv/nss_dns/dns-host.c\n+++ b/resolv/nss_dns/dns-host.c\n@@ -379,6 +379,7 @@ _nss_dns_gethostbyname4_r (const char *name, struct gaih_addrtuple **pat,\n {\n   enum nss_status status = check_name (name, herrnop);\n   char tmp[NS_MAXDNAME];\n+\n   if (status != NSS_STATUS_SUCCESS)\n     return status;\n   struct resolv_context *ctx = __resolv_context_get ();\n@@ -412,26 +413,39 @@ _nss_dns_gethostbyname4_r (const char *name, struct gaih_addrtuple **pat,\n \n   int olderr = errno;\n   int n;\n+  unsigned long res_options = ctx->resp->options & (RES_NOAAAA|RES_IPV4|RES_IPV6);\n+  int qtype;\n \n-  if ((ctx->resp->options & RES_NOAAAA) == 0)\n+  switch (res_options)\n     {\n-      n = __res_context_search (ctx, name, C_IN, T_QUERY_A_AND_AAAA,\n-\t\t\t\tdns_packet_buffer, sizeof (dns_packet_buffer),\n-\t\t\t\t&alt_dns_packet_buffer, &ans2p, &nans2p,\n-\t\t\t\t&resplen2, &ans2p_malloced);\n-      if (n >= 0)\n-\tstatus = gaih_getanswer (alt_dns_packet_buffer, n, ans2p, resplen2,\n-\t\t\t\t &abuf, pat, errnop, herrnop, ttlp);\n-    }\n-  else\n-    {\n-      n = __res_context_search (ctx, name, C_IN, T_A,\n-\t\t\t\tdns_packet_buffer, sizeof (dns_packet_buffer),\n-\t\t\t\t&alt_dns_packet_buffer, NULL, NULL, NULL, NULL);\n-      if (n >= 0)\n-\tstatus = gaih_getanswer_noaaaa (alt_dns_packet_buffer, n,\n-\t\t\t\t\t&abuf, pat, errnop, herrnop, ttlp);\n-    }\n+      case RES_IPV4:\n+      case RES_IPV4|RES_NOAAAA:\n+      case RES_NOAAAA:\n+      case RES_IPV6|RES_NOAAAA: /*< this combination should never be used.  */\n+      case RES_IPV4|RES_IPV6|RES_NOAAAA: /*< this does not make sense.  */\n+      case RES_IPV6: /*< oh we want AAAA, but not A here. code is the same.  */\n+\tqtype = (res_options == RES_IPV6 ? T_AAAA : T_A);\n+\tn = __res_context_search (ctx, name, C_IN, qtype,\n+\t\t\t\t  dns_packet_buffer, sizeof (dns_packet_buffer),\n+\t\t\t\t  &alt_dns_packet_buffer, NULL, NULL, NULL, NULL);\n+\tif (n >= 0)\n+\t  status = gaih_getanswer_noaaaa (alt_dns_packet_buffer, n,\n+\t\t\t\t\t  &abuf, pat, errnop, herrnop, ttlp);\n+\tbreak;\n+\n+      case 0:\n+      case RES_IPV4|RES_IPV6:\n+      default:\n+\tn = __res_context_search (ctx, name, C_IN, T_QUERY_A_AND_AAAA,\n+\t\t\t\t  dns_packet_buffer, sizeof (dns_packet_buffer),\n+\t\t\t\t  &alt_dns_packet_buffer, &ans2p, &nans2p,\n+\t\t\t\t  &resplen2, &ans2p_malloced);\n+\tif (n >= 0)\n+\t  status = gaih_getanswer (alt_dns_packet_buffer, n, ans2p, resplen2,\n+\t\t\t\t  &abuf, pat, errnop, herrnop, ttlp);\n+\tbreak;\n+  }\n+\n   if (n < 0)\n     {\n       switch (errno)\ndiff --git a/resolv/res_debug.c b/resolv/res_debug.c\nindex 73af0c72fe..f73bccd7bd 100644\n--- a/resolv/res_debug.c\n+++ b/resolv/res_debug.c\n@@ -613,6 +613,8 @@ p_option(u_long option) {\n \tcase RES_NORELOAD:\treturn \"no-reload\";\n \tcase RES_TRUSTAD:\treturn \"trust-ad\";\n \tcase RES_NOAAAA:\treturn \"no-aaaa\";\n+\tcase RES_IPV4:\t\treturn \"ipv4\";\n+\tcase RES_IPV6:\t\treturn \"ipv6\";\n \t\t\t\t/* XXX nonreentrant */\n \tdefault:\t\tsprintf(nbuf, \"?0x%lx?\", (u_long)option);\n \t\t\t\treturn (nbuf);\ndiff --git a/resolv/res_init.c b/resolv/res_init.c\nindex 683ae9e9b2..d5f0311372 100644\n--- a/resolv/res_init.c\n+++ b/resolv/res_init.c\n@@ -696,6 +696,8 @@ res_setoptions (struct resolv_conf_parser *parser, const char *options)\n             { STRnLEN (\"trust-ad\"), RES_TRUSTAD },\n             { STRnLEN (\"no-aaaa\"), RES_NOAAAA },\n             { STRnLEN (\"strict-error\"), RES_STRICTERR },\n+            { STRnLEN (\"ipv4\"), RES_IPV4 },\n+            { STRnLEN (\"ipv6\"), RES_IPV6 },\n           };\n #define noptions (sizeof (options) / sizeof (options[0]))\n           bool negate_option = *cp == '-';\ndiff --git a/resolv/resolv.h b/resolv/resolv.h\nindex b8a0f66a5f..2459083fee 100644\n--- a/resolv/resolv.h\n+++ b/resolv/resolv.h\n@@ -134,6 +134,8 @@ struct res_sym {\n #define RES_TRUSTAD     0x04000000 /* Request AD bit, keep it in responses.  */\n #define RES_NOAAAA      0x08000000 /* Suppress AAAA queries.  */\n #define RES_STRICTERR   0x10000000 /* Report more DNS errors as errors.  */\n+#define RES_IPV4        0x20000000 /* Query A records on PF_UNSPEC hints.  */\n+#define RES_IPV6        0x40000000 /* Query AAAA records on PF_UNSPEC hints.  */\n \n #define RES_DEFAULT\t(RES_RECURSE|RES_DEFNAMES|RES_DNSRCH)\n \ndiff --git a/resolv/tst-resolv-res_init-skeleton.c b/resolv/tst-resolv-res_init-skeleton.c\nindex 1e4c59dac9..aec63656a9 100644\n--- a/resolv/tst-resolv-res_init-skeleton.c\n+++ b/resolv/tst-resolv-res_init-skeleton.c\n@@ -130,6 +130,8 @@ print_resp (FILE *fp, res_state resp)\n         print_option_flag (fp, &options, RES_TRUSTAD, \"trust-ad\");\n         print_option_flag (fp, &options, RES_NOAAAA, \"no-aaaa\");\n         print_option_flag (fp, &options, RES_STRICTERR, \"strict-error\");\n+        print_option_flag (fp, &options, RES_IPV4, \"ipv4\");\n+        print_option_flag (fp, &options, RES_IPV6, \"ipv6\");\n         fputc ('\\n', fp);\n         if (options != 0)\n           fprintf (fp, \"; error: unresolved option bits: 0x%x\\n\", options);\n",
    "prefixes": [
        "v7",
        "1/2"
    ]
}