* sysdeps/posix/getaddrinfo.c: Implement handling of DCCP and

UDPlite.

	* nss/getent.c (ahosts_keys_int): Handle all known socket types.

	* inet/netinet/in.h (IPPIPPROTO_DCCP, IPPROTO_UDPLITE): Define.

	* sysdeps/unix/sysv/linux/bits/socket.h (SOCK_DCCP): Define.
This commit is contained in:
Ulrich Drepper 2008-05-14 17:33:37 +00:00
parent f05ac8f503
commit 372bfcac73
5 changed files with 60 additions and 19 deletions

View File

@ -1,3 +1,14 @@
2008-05-14 Ulrich Drepper <drepper@redhat.com>
* sysdeps/posix/getaddrinfo.c: Implement handling of DCCP and
UDPlite.
* nss/getent.c (ahosts_keys_int): Handle all known socket types.
* inet/netinet/in.h (IPPIPPROTO_DCCP, IPPROTO_UDPLITE): Define.
* sysdeps/unix/sysv/linux/bits/socket.h (SOCK_DCCP): Define.
2008-05-13 Ulrich Drepper <drepper@redhat.com>
* po/lt.po: New file. From Lituanian translation team.

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991-2001, 2003, 2004, 2006, 2007
/* Copyright (C) 1991-2001, 2003, 2004, 2006, 2007, 2008
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -53,6 +53,8 @@ enum
#define IPPROTO_IDP IPPROTO_IDP
IPPROTO_TP = 29, /* SO Transport Protocol Class 4. */
#define IPPROTO_TP IPPROTO_TP
IPPROTO_DCCP = 33, /* Datagram Congestion Control Protocol. */
#define IPPROTO_DCCP IPPROTO_DCCP
IPPROTO_IPV6 = 41, /* IPv6 header. */
#define IPPROTO_IPV6 IPPROTO_IPV6
IPPROTO_ROUTING = 43, /* IPv6 routing header. */
@ -83,6 +85,8 @@ enum
#define IPPROTO_COMP IPPROTO_COMP
IPPROTO_SCTP = 132, /* Stream Control Transmission Protocol. */
#define IPPROTO_SCTP IPPROTO_SCTP
IPPROTO_UDPLITE = 136, /* UDP-Lite protocol. */
#define IPPROTO_UDPLITE IPPROTO_UDPLITE
IPPROTO_RAW = 255, /* Raw IP packets. */
#define IPPROTO_RAW IPPROTO_RAW
IPPROTO_MAX

View File

@ -337,6 +337,22 @@ ahosts_keys_int (int af, int xflags, int number, char *key[])
sockstr = "DGRAM";
else if (runp->ai_socktype == SOCK_RAW)
sockstr = "RAW";
#ifdef SOCK_SEQPACKET
else if (runp->ai_socktype == SOCK_SEQPACKET)
sockstr = "SEQPACKET";
#endif
#ifdef SOCK_RDM
else if (runp->ai_socktype == SOCK_RDM)
sockstr = "RDM";
#endif
#ifdef SOCK_DCCP
else if (runp->ai_socktype == SOCK_DCCP)
sockstr = "DCCP";
#endif
#ifdef SOCK_PACKET
else if (runp->ai_socktype == SOCK_PACKET)
sockstr = "PACKET";
#endif
else
{
snprintf (sockbuf, sizeof (sockbuf), "%d",

View File

@ -97,8 +97,9 @@ struct gaih_typeproto
{
int socktype;
int protocol;
char name[4];
int protoflag;
uint8_t protoflag;
bool defaultflag;
char name[8];
};
/* Values for `protoflag'. */
@ -107,11 +108,17 @@ struct gaih_typeproto
static const struct gaih_typeproto gaih_inet_typeproto[] =
{
{ 0, 0, "", 0 },
{ SOCK_STREAM, IPPROTO_TCP, "tcp", 0 },
{ SOCK_DGRAM, IPPROTO_UDP, "udp", 0 },
{ SOCK_RAW, 0, "raw", GAI_PROTO_PROTOANY|GAI_PROTO_NOSERVICE },
{ 0, 0, "", 0 }
{ 0, 0, 0, false, "" },
{ SOCK_STREAM, IPPROTO_TCP, 0, true, "tcp" },
{ SOCK_DGRAM, IPPROTO_UDP, 0, true, "udp" },
#if defined SOCK_DCCP && defined IPPROTO_DCCP
{ SOCK_DCCP, IPPROTO_DCCP, 0, false, "dccp" },
#endif
#ifdef IPPROTO_UDPLITE
{ SOCK_DGRAM, IPPROTO_UDPLITE, 0, false, "udplite" },
#endif
{ SOCK_RAW, 0, GAI_PROTO_PROTOANY|GAI_PROTO_NOSERVICE, true, "raw" },
{ 0, 0, 0, false, "" }
};
struct gaih
@ -363,18 +370,19 @@ gaih_inet (const char *name, const struct gaih_service *service,
we know about. */
struct gaih_servtuple **lastp = &st;
for (++tp; tp->name[0]; ++tp)
{
struct gaih_servtuple *newp;
if (tp->defaultflag)
{
struct gaih_servtuple *newp;
newp = __alloca (sizeof (struct gaih_servtuple));
newp->next = NULL;
newp->socktype = tp->socktype;
newp->protocol = tp->protocol;
newp->port = port;
newp = __alloca (sizeof (struct gaih_servtuple));
newp->next = NULL;
newp->socktype = tp->socktype;
newp->protocol = tp->protocol;
newp->port = port;
*lastp = newp;
lastp = &newp->next;
}
*lastp = newp;
lastp = &newp->next;
}
}
}

View File

@ -1,5 +1,5 @@
/* System-specific socket constants and types. Linux version.
Copyright (C) 1991, 1992, 1994-2001, 2004, 2006, 2007
Copyright (C) 1991, 1992, 1994-2001, 2004, 2006, 2007, 2008
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -52,6 +52,8 @@ enum __socket_type
SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
datagrams of fixed maximum length. */
#define SOCK_SEQPACKET SOCK_SEQPACKET
SOCK_DCCP = 6,
#define SOCK_DCCP SOCK_DCCP /* Datagram Congestion Control Protocol. */
SOCK_PACKET = 10 /* Linux specific way of getting packets
at the dev level. For writing rarp and
other similar things on the user level. */