diff options
Diffstat (limited to 'meta-networking/recipes-daemons/autofs/autofs-5.0.7/autofs-5.0.7-use-numeric-protocol-ids-instead-of-protoent-structs.patch')
-rw-r--r-- | meta-networking/recipes-daemons/autofs/autofs-5.0.7/autofs-5.0.7-use-numeric-protocol-ids-instead-of-protoent-structs.patch | 471 |
1 files changed, 0 insertions, 471 deletions
diff --git a/meta-networking/recipes-daemons/autofs/autofs-5.0.7/autofs-5.0.7-use-numeric-protocol-ids-instead-of-protoent-structs.patch b/meta-networking/recipes-daemons/autofs/autofs-5.0.7/autofs-5.0.7-use-numeric-protocol-ids-instead-of-protoent-structs.patch deleted file mode 100644 index 113b0a06ef..0000000000 --- a/meta-networking/recipes-daemons/autofs/autofs-5.0.7/autofs-5.0.7-use-numeric-protocol-ids-instead-of-protoent-structs.patch +++ /dev/null @@ -1,471 +0,0 @@ -autofs-5.0.7 - use numeric protocol ids instead of protoent structs - -From: Leonardo Chiquitto <leonardo.lists@gmail.com> - -The function getprotobyname() is not reentrant, so we can't call -it simultaneously from multiple threads. Instead of switching to -the reentrant version which adds more complexity to the code, -lets use numeric protocol IDs instead of protoent structures. ---- - - CHANGELOG | 1 + - include/rpc_subs.h | 4 +-- - lib/rpc_subs.c | 80 ++++++++++++++++++-------------------------------- - modules/replicated.c | 42 +++++++++++--------------- - 4 files changed, 50 insertions(+), 77 deletions(-) - - -diff --git a/CHANGELOG b/CHANGELOG -index 4cf5621..ba1d65b 100644 ---- a/CHANGELOG -+++ b/CHANGELOG -@@ -23,6 +23,7 @@ - - fix use get_proximity() without libtirpc. - - don't use dirent d_type to filter out files in scandir() - - don't schedule new alarms after readmap. -+- use numeric protocol ids instead of protoent structs. - - 25/07/2012 autofs-5.0.7 - ======================= -diff --git a/include/rpc_subs.h b/include/rpc_subs.h -index ca474d9..b6d59f9 100644 ---- a/include/rpc_subs.h -+++ b/include/rpc_subs.h -@@ -54,7 +54,7 @@ struct conn_info { - unsigned short port; - unsigned long program; - unsigned long version; -- struct protoent *proto; -+ int proto; - unsigned int send_sz; - unsigned int recv_sz; - struct timeval timeout; -@@ -66,7 +66,7 @@ int rpc_udp_getclient(struct conn_info *, unsigned int, unsigned int); - void rpc_destroy_udp_client(struct conn_info *); - int rpc_tcp_getclient(struct conn_info *, unsigned int, unsigned int); - void rpc_destroy_tcp_client(struct conn_info *); --int rpc_portmap_getclient(struct conn_info *, const char *, struct sockaddr *, size_t, const char *, unsigned int); -+int rpc_portmap_getclient(struct conn_info *, const char *, struct sockaddr *, size_t, int, unsigned int); - int rpc_portmap_getport(struct conn_info *, struct pmap *, unsigned short *); - int rpc_ping_proto(struct conn_info *); - int rpc_ping(const char *, long, long, unsigned int); -diff --git a/lib/rpc_subs.c b/lib/rpc_subs.c -index d33a3c4..ad1d557 100644 ---- a/lib/rpc_subs.c -+++ b/lib/rpc_subs.c -@@ -170,7 +170,7 @@ static int rpc_do_create_client(struct sockaddr *addr, struct conn_info *info, i - - *client = NULL; - -- proto = info->proto->p_proto; -+ proto = info->proto; - if (proto == IPPROTO_UDP) - type = SOCK_DGRAM; - else -@@ -201,7 +201,7 @@ static int rpc_do_create_client(struct sockaddr *addr, struct conn_info *info, i - in4_raddr = (struct sockaddr_in *) addr; - in4_raddr->sin_port = htons(info->port); - -- switch (info->proto->p_proto) { -+ switch (info->proto) { - case IPPROTO_UDP: - clnt = clntudp_bufcreate(in4_raddr, - info->program, info->version, -@@ -241,7 +241,7 @@ static int rpc_do_create_client(struct sockaddr *addr, struct conn_info *info, i - - *client = NULL; - -- proto = info->proto->p_proto; -+ proto = info->proto; - if (proto == IPPROTO_UDP) - type = SOCK_DGRAM; - else -@@ -292,11 +292,11 @@ static int rpc_do_create_client(struct sockaddr *addr, struct conn_info *info, i - nb_addr.maxlen = nb_addr.len = slen; - nb_addr.buf = addr; - -- if (info->proto->p_proto == IPPROTO_UDP) -+ if (info->proto == IPPROTO_UDP) - clnt = clnt_dg_create(*fd, &nb_addr, - info->program, info->version, - info->send_sz, info->recv_sz); -- else if (info->proto->p_proto == IPPROTO_TCP) { -+ else if (info->proto == IPPROTO_TCP) { - ret = connect_nb(*fd, addr, slen, &info->timeout); - if (ret < 0) - return ret; -@@ -355,7 +355,7 @@ static int create_client(struct conn_info *info, CLIENT **client) - memset(&hints, 0, sizeof(hints)); - hints.ai_flags = AI_ADDRCONFIG; - hints.ai_family = AF_UNSPEC; -- if (info->proto->p_proto == IPPROTO_UDP) -+ if (info->proto == IPPROTO_UDP) - hints.ai_socktype = SOCK_DGRAM; - else - hints.ai_socktype = SOCK_STREAM; -@@ -370,7 +370,7 @@ static int create_client(struct conn_info *info, CLIENT **client) - - haddr = ai; - while (haddr) { -- if (haddr->ai_protocol != info->proto->p_proto) { -+ if (haddr->ai_protocol != info->proto) { - haddr = haddr->ai_next; - continue; - } -@@ -417,16 +417,11 @@ out_close: - int rpc_udp_getclient(struct conn_info *info, - unsigned int program, unsigned int version) - { -- struct protoent *pe_proto; - CLIENT *client; - int ret; - - if (!info->client) { -- pe_proto = getprotobyname("udp"); -- if (!pe_proto) -- return -ENOENT; -- -- info->proto = pe_proto; -+ info->proto = IPPROTO_UDP; - info->timeout.tv_sec = RPC_TOUT_UDP; - info->timeout.tv_usec = 0; - info->send_sz = UDPMSGSIZE; -@@ -458,16 +453,11 @@ void rpc_destroy_udp_client(struct conn_info *info) - int rpc_tcp_getclient(struct conn_info *info, - unsigned int program, unsigned int version) - { -- struct protoent *pe_proto; - CLIENT *client; - int ret; - - if (!info->client) { -- pe_proto = getprotobyname("tcp"); -- if (!pe_proto) -- return -ENOENT; -- -- info->proto = pe_proto; -+ info->proto = IPPROTO_TCP; - info->timeout.tv_sec = RPC_TOUT_TCP; - info->timeout.tv_usec = 0; - info->send_sz = 0; -@@ -513,23 +503,18 @@ void rpc_destroy_tcp_client(struct conn_info *info) - - int rpc_portmap_getclient(struct conn_info *info, - const char *host, struct sockaddr *addr, size_t addr_len, -- const char *proto, unsigned int option) -+ int proto, unsigned int option) - { -- struct protoent *pe_proto; - CLIENT *client; - int ret; - -- pe_proto = getprotobyname(proto); -- if (!pe_proto) -- return -ENOENT; -- - info->host = host; - info->addr = addr; - info->addr_len = addr_len; - info->program = PMAPPROG; - info->port = PMAPPORT; - info->version = PMAPVERS; -- info->proto = pe_proto; -+ info->proto = proto; - info->send_sz = RPCSMALLMSGSIZE; - info->recv_sz = RPCSMALLMSGSIZE; - info->timeout.tv_sec = PMAP_TOUT_UDP; -@@ -537,7 +522,7 @@ int rpc_portmap_getclient(struct conn_info *info, - info->close_option = option; - info->client = NULL; - -- if (pe_proto->p_proto == IPPROTO_TCP) -+ if (info->proto == IPPROTO_TCP) - info->timeout.tv_sec = PMAP_TOUT_TCP; - - ret = create_client(info, &client); -@@ -555,7 +540,7 @@ int rpc_portmap_getport(struct conn_info *info, - struct conn_info pmap_info; - CLIENT *client; - enum clnt_stat status; -- int proto = info->proto->p_proto; -+ int proto = info->proto; - int ret; - - memset(&pmap_info, 0, sizeof(struct conn_info)); -@@ -633,13 +618,13 @@ int rpc_ping_proto(struct conn_info *info) - { - CLIENT *client; - enum clnt_stat status; -- int proto = info->proto->p_proto; -+ int proto = info->proto; - int ret; - - if (info->client) - client = info->client; - else { -- if (info->proto->p_proto == IPPROTO_UDP) { -+ if (info->proto == IPPROTO_UDP) { - info->send_sz = UDPMSGSIZE; - info->recv_sz = UDPMSGSIZE; - } -@@ -688,7 +673,7 @@ int rpc_ping_proto(struct conn_info *info) - - static unsigned int __rpc_ping(const char *host, - unsigned long version, -- char *proto, -+ int proto, - long seconds, long micros, - unsigned int option) - { -@@ -696,6 +681,7 @@ static unsigned int __rpc_ping(const char *host, - struct conn_info info; - struct pmap parms; - -+ info.proto = proto; - info.host = host; - info.addr = NULL; - info.addr_len = 0; -@@ -710,13 +696,9 @@ static unsigned int __rpc_ping(const char *host, - - status = RPC_PING_FAIL; - -- info.proto = getprotobyname(proto); -- if (!info.proto) -- return status; -- - parms.pm_prog = NFS_PROGRAM; - parms.pm_vers = version; -- parms.pm_prot = info.proto->p_proto; -+ parms.pm_prot = info.proto; - parms.pm_port = 0; - - status = rpc_portmap_getport(&info, &parms, &info.port); -@@ -734,19 +716,19 @@ int rpc_ping(const char *host, long seconds, long micros, unsigned int option) - unsigned long vers2 = NFS2_VERSION; - unsigned int status; - -- status = __rpc_ping(host, vers2, "udp", seconds, micros, option); -+ status = __rpc_ping(host, vers2, IPPROTO_UDP, seconds, micros, option); - if (status > 0) - return RPC_PING_V2 | RPC_PING_UDP; - -- status = __rpc_ping(host, vers3, "udp", seconds, micros, option); -+ status = __rpc_ping(host, vers3, IPPROTO_UDP, seconds, micros, option); - if (status > 0) - return RPC_PING_V3 | RPC_PING_UDP; - -- status = __rpc_ping(host, vers2, "tcp", seconds, micros, option); -+ status = __rpc_ping(host, vers2, IPPROTO_TCP, seconds, micros, option); - if (status > 0) - return RPC_PING_V2 | RPC_PING_TCP; - -- status = __rpc_ping(host, vers3, "tcp", seconds, micros, option); -+ status = __rpc_ping(host, vers3, IPPROTO_TCP, seconds, micros, option); - if (status > 0) - return RPC_PING_V3 | RPC_PING_TCP; - -@@ -769,7 +751,7 @@ int rpc_time(const char *host, - double taken; - struct timeval start, end; - struct timezone tz; -- char *proto = (ping_proto & RPC_PING_UDP) ? "udp" : "tcp"; -+ int proto = (ping_proto & RPC_PING_UDP) ? IPPROTO_UDP : IPPROTO_TCP; - unsigned long vers = ping_vers; - - gettimeofday(&start, &tz); -@@ -791,12 +773,12 @@ static int rpc_get_exports_proto(struct conn_info *info, exports *exp) - { - CLIENT *client; - enum clnt_stat status; -- int proto = info->proto->p_proto; -+ int proto = info->proto; - unsigned int option = info->close_option; - int vers_entry; - int ret; - -- if (info->proto->p_proto == IPPROTO_UDP) { -+ if (info->proto == IPPROTO_UDP) { - info->send_sz = UDPMSGSIZE; - info->recv_sz = UDPMSGSIZE; - } -@@ -903,11 +885,9 @@ exports rpc_get_exports(const char *host, long seconds, long micros, unsigned in - parms.pm_port = 0; - - /* Try UDP first */ -- info.proto = getprotobyname("udp"); -- if (!info.proto) -- goto try_tcp; -+ info.proto = IPPROTO_UDP; - -- parms.pm_prot = info.proto->p_proto; -+ parms.pm_prot = info.proto; - - status = rpc_portmap_getport(&info, &parms, &info.port); - if (status < 0) -@@ -920,11 +900,9 @@ exports rpc_get_exports(const char *host, long seconds, long micros, unsigned in - return exportlist; - - try_tcp: -- info.proto = getprotobyname("tcp"); -- if (!info.proto) -- return NULL; -+ info.proto = IPPROTO_TCP; - -- parms.pm_prot = info.proto->p_proto; -+ parms.pm_prot = info.proto; - - status = rpc_portmap_getport(&info, &parms, &info.port); - if (status < 0) -diff --git a/modules/replicated.c b/modules/replicated.c -index 6b96320..dbd5513 100644 ---- a/modules/replicated.c -+++ b/modules/replicated.c -@@ -419,7 +419,7 @@ void free_host_list(struct host **list) - - static unsigned int get_nfs_info(unsigned logopt, struct host *host, - struct conn_info *pm_info, struct conn_info *rpc_info, -- const char *proto, unsigned int version, int port) -+ int proto, unsigned int version, int port) - { - unsigned int random_selection = host->options & MOUNT_FLAG_RANDOM_SELECT; - unsigned int use_weight_only = host->options & MOUNT_FLAG_USE_WEIGHT_ONLY; -@@ -433,22 +433,18 @@ static unsigned int get_nfs_info(unsigned logopt, struct host *host, - int status, count = 0; - - if (host->addr) -- debug(logopt, "called with host %s(%s) proto %s version 0x%x", -+ debug(logopt, "called with host %s(%s) proto %d version 0x%x", - host->name, get_addr_string(host->addr, buf, len), - proto, version); - else - debug(logopt, -- "called for host %s proto %s version 0x%x", -+ "called for host %s proto %d version 0x%x", - host->name, proto, version); - -- rpc_info->proto = getprotobyname(proto); -- if (!rpc_info->proto) -- return 0; -- -+ rpc_info->proto = proto; - memset(&parms, 0, sizeof(struct pmap)); -- - parms.pm_prog = NFS_PROGRAM; -- parms.pm_prot = rpc_info->proto->p_proto; -+ parms.pm_prot = proto; - - if (!(version & NFS4_REQUESTED)) - goto v3_ver; -@@ -479,7 +475,7 @@ static unsigned int get_nfs_info(unsigned logopt, struct host *host, - } - } - -- if (rpc_info->proto->p_proto == IPPROTO_UDP) -+ if (rpc_info->proto == IPPROTO_UDP) - status = rpc_udp_getclient(rpc_info, NFS_PROGRAM, NFS4_VERSION); - else - status = rpc_tcp_getclient(rpc_info, NFS_PROGRAM, NFS4_VERSION); -@@ -540,7 +536,7 @@ v3_ver: - goto v2_ver; - } - -- if (rpc_info->proto->p_proto == IPPROTO_UDP) -+ if (rpc_info->proto == IPPROTO_UDP) - status = rpc_udp_getclient(rpc_info, NFS_PROGRAM, NFS3_VERSION); - else - status = rpc_tcp_getclient(rpc_info, NFS_PROGRAM, NFS3_VERSION); -@@ -587,7 +583,7 @@ v2_ver: - goto done_ver; - } - -- if (rpc_info->proto->p_proto == IPPROTO_UDP) -+ if (rpc_info->proto == IPPROTO_UDP) - status = rpc_udp_getclient(rpc_info, NFS_PROGRAM, NFS2_VERSION); - else - status = rpc_tcp_getclient(rpc_info, NFS_PROGRAM, NFS2_VERSION); -@@ -618,7 +614,7 @@ v2_ver: - } - - done_ver: -- if (rpc_info->proto->p_proto == IPPROTO_UDP) { -+ if (rpc_info->proto == IPPROTO_UDP) { - rpc_destroy_udp_client(rpc_info); - rpc_destroy_udp_client(pm_info); - } else { -@@ -675,7 +671,7 @@ static int get_vers_and_cost(unsigned logopt, struct host *host, - - if (version & TCP_REQUESTED) { - supported = get_nfs_info(logopt, host, -- &pm_info, &rpc_info, "tcp", vers, port); -+ &pm_info, &rpc_info, IPPROTO_TCP, vers, port); - if (IS_ERR(supported)) { - if (ERR(supported) == EHOSTUNREACH || - ERR(supported) == ETIMEDOUT) -@@ -688,7 +684,7 @@ static int get_vers_and_cost(unsigned logopt, struct host *host, - - if (version & UDP_REQUESTED) { - supported = get_nfs_info(logopt, host, -- &pm_info, &rpc_info, "udp", vers, port); -+ &pm_info, &rpc_info, IPPROTO_UDP, vers, port); - if (IS_ERR(supported)) { - if (!ret && ERR(supported) == ETIMEDOUT) - return ret; -@@ -709,7 +705,7 @@ static int get_supported_ver_and_cost(unsigned logopt, struct host *host, - socklen_t len = INET6_ADDRSTRLEN; - char buf[len + 1]; - struct conn_info pm_info, rpc_info; -- const char *proto; -+ int proto; - unsigned int vers; - struct timeval start, end; - struct timezone tz; -@@ -748,10 +744,10 @@ static int get_supported_ver_and_cost(unsigned logopt, struct host *host, - * So, we do the conversion here. - */ - if (version & UDP_SELECTED_MASK) { -- proto = "udp"; -+ proto = IPPROTO_UDP; - version >>= 8; - } else -- proto = "tcp"; -+ proto = IPPROTO_TCP; - - switch (version) { - case NFS2_SUPPORTED: -@@ -768,9 +764,7 @@ static int get_supported_ver_and_cost(unsigned logopt, struct host *host, - return 0; - } - -- rpc_info.proto = getprotobyname(proto); -- if (!rpc_info.proto) -- return 0; -+ rpc_info.proto = proto; - - if (port > 0) - rpc_info.port = port; -@@ -786,14 +780,14 @@ static int get_supported_ver_and_cost(unsigned logopt, struct host *host, - - memset(&parms, 0, sizeof(struct pmap)); - parms.pm_prog = NFS_PROGRAM; -- parms.pm_prot = rpc_info.proto->p_proto; -+ parms.pm_prot = rpc_info.proto; - parms.pm_vers = vers; - ret = rpc_portmap_getport(&pm_info, &parms, &rpc_info.port); - if (ret < 0) - goto done; - } - -- if (rpc_info.proto->p_proto == IPPROTO_UDP) -+ if (rpc_info.proto == IPPROTO_UDP) - status = rpc_udp_getclient(&rpc_info, NFS_PROGRAM, vers); - else - status = rpc_tcp_getclient(&rpc_info, NFS_PROGRAM, vers); -@@ -815,7 +809,7 @@ static int get_supported_ver_and_cost(unsigned logopt, struct host *host, - } - } - done: -- if (rpc_info.proto->p_proto == IPPROTO_UDP) { -+ if (rpc_info.proto == IPPROTO_UDP) { - rpc_destroy_udp_client(&rpc_info); - rpc_destroy_udp_client(&pm_info); - } else { |