aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m32r
ModeNameSize
-rw-r--r--Kconfig9508logstatsplainblame
-rw-r--r--Kconfig.debug1147logstatsplainblame
-rw-r--r--Makefile1344logstatsplainblame
d---------boot108logstatsplain
-rw-r--r--defconfig13937logstatsplainblame
d---------kernel1382logstatsplain
d---------lib339logstatsplain
d---------m32104ut46logstatsplain
d---------m32700ut252logstatsplain
d---------mappi251logstatsplain
d---------mappi288logstatsplain
d---------mappi380logstatsplain
d---------mm404logstatsplain
d---------oaks32r88logstatsplain
d---------oprofile105logstatsplain
d---------opsput83logstatsplain
static int is_ip(const char *name) { int rc; struct sockaddr_in sin_server; struct sockaddr_in6 sin_server6; rc = cifs_inet_pton(AF_INET, name, &sin_server.sin_addr.s_addr); if (rc <= 0) { /* not ipv4 address, try ipv6 */ rc = cifs_inet_pton(AF_INET6, name, &sin_server6.sin6_addr.in6_u); if (rc > 0) return 1; } else { return 1; } /* we failed translating address */ return 0; } /* Resolves server name to ip address. * input: * unc - server UNC * output: * *ip_addr - pointer to server ip, caller responcible for freeing it. * return 0 on success */ int dns_resolve_server_name_to_ip(const char *unc, char **ip_addr) { int rc = -EAGAIN; struct key *rkey = ERR_PTR(-EAGAIN); char *name; char *data = NULL; int len; if (!ip_addr || !unc) return -EINVAL; /* search for server name delimiter */ len = strlen(unc); if (len < 3) { cFYI(1, ("%s: unc is too short: %s", __func__, unc)); return -EINVAL; } len -= 2; name = memchr(unc+2, '\\', len); if (!name) { cFYI(1, ("%s: probably server name is whole unc: %s", __func__, unc)); } else { len = (name - unc) - 2/* leading // */; } name = kmalloc(len+1, GFP_KERNEL); if (!name) { rc = -ENOMEM; return rc; } memcpy(name, unc+2, len); name[len] = 0; if (is_ip(name)) { cFYI(1, ("%s: it is IP, skipping dns upcall: %s", __func__, name)); data = name; goto skip_upcall; } rkey = request_key(&key_type_dns_resolver, name, ""); if (!IS_ERR(rkey)) { data = rkey->payload.data; } else { cERROR(1, ("%s: unable to resolve: %s", __func__, name)); goto out; } skip_upcall: if (data) { len = strlen(data); *ip_addr = kmalloc(len+1, GFP_KERNEL); if (*ip_addr) { memcpy(*ip_addr, data, len); (*ip_addr)[len] = '\0'; if (!IS_ERR(rkey)) cFYI(1, ("%s: resolved: %s to %s", __func__, name, *ip_addr )); rc = 0; } else { rc = -ENOMEM; } if (!IS_ERR(rkey)) key_put(rkey); } out: kfree(name); return rc; }