mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-03 09:00:21 +00:00
Default to AF_LOCAL instead of AF_INET sockets for non-family-specific
operations. This allows the query operations to work in non-IPv4 jails, and will be necessary in a future of possible non-INET networking. Approved by: bz (mentor)
This commit is contained in:
parent
3cb73e3d8b
commit
a9948a71cf
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=189864
@ -54,9 +54,9 @@ list_cloners(void)
|
|||||||
int idx;
|
int idx;
|
||||||
int s;
|
int s;
|
||||||
|
|
||||||
s = socket(AF_INET, SOCK_DGRAM, 0);
|
s = socket(AF_LOCAL, SOCK_DGRAM, 0);
|
||||||
if (s == -1)
|
if (s == -1)
|
||||||
err(1, "socket(AF_INET,SOCK_DGRAM)");
|
err(1, "socket(AF_LOCAL,SOCK_DGRAM)");
|
||||||
|
|
||||||
memset(&ifcr, 0, sizeof(ifcr));
|
memset(&ifcr, 0, sizeof(ifcr));
|
||||||
|
|
||||||
|
@ -441,22 +441,23 @@ static const struct cmd setifdstaddr_cmd =
|
|||||||
DEF_CMD("ifdstaddr", 0, setifdstaddr);
|
DEF_CMD("ifdstaddr", 0, setifdstaddr);
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ifconfig(int argc, char *const *argv, int iscreate, const struct afswtch *afp)
|
ifconfig(int argc, char *const *argv, int iscreate, const struct afswtch *uafp)
|
||||||
{
|
{
|
||||||
const struct afswtch *nafp;
|
const struct afswtch *afp, *nafp;
|
||||||
const struct cmd *p;
|
const struct cmd *p;
|
||||||
struct callback *cb;
|
struct callback *cb;
|
||||||
int s;
|
int s;
|
||||||
|
|
||||||
strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name);
|
strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name);
|
||||||
|
afp = uafp != NULL ? uafp : af_getbyname("inet");
|
||||||
top:
|
top:
|
||||||
if (afp == NULL)
|
|
||||||
afp = af_getbyname("inet");
|
|
||||||
ifr.ifr_addr.sa_family =
|
ifr.ifr_addr.sa_family =
|
||||||
afp->af_af == AF_LINK || afp->af_af == AF_UNSPEC ?
|
afp->af_af == AF_LINK || afp->af_af == AF_UNSPEC ?
|
||||||
AF_INET : afp->af_af;
|
AF_LOCAL : afp->af_af;
|
||||||
|
|
||||||
if ((s = socket(ifr.ifr_addr.sa_family, SOCK_DGRAM, 0)) < 0)
|
if ((s = socket(ifr.ifr_addr.sa_family, SOCK_DGRAM, 0)) < 0 &&
|
||||||
|
(uafp != NULL || errno != EPROTONOSUPPORT ||
|
||||||
|
(s = socket(AF_LOCAL, SOCK_DGRAM, 0)) < 0))
|
||||||
err(1, "socket(family %u,SOCK_DGRAM", ifr.ifr_addr.sa_family);
|
err(1, "socket(family %u,SOCK_DGRAM", ifr.ifr_addr.sa_family);
|
||||||
|
|
||||||
while (argc > 0) {
|
while (argc > 0) {
|
||||||
@ -803,11 +804,12 @@ status(const struct afswtch *afp, const struct sockaddr_dl *sdl,
|
|||||||
|
|
||||||
if (afp == NULL) {
|
if (afp == NULL) {
|
||||||
allfamilies = 1;
|
allfamilies = 1;
|
||||||
afp = af_getbyname("inet");
|
ifr.ifr_addr.sa_family = AF_LOCAL;
|
||||||
} else
|
} else {
|
||||||
allfamilies = 0;
|
allfamilies = 0;
|
||||||
|
ifr.ifr_addr.sa_family =
|
||||||
ifr.ifr_addr.sa_family = afp->af_af == AF_LINK ? AF_INET : afp->af_af;
|
afp->af_af == AF_LINK ? AF_LOCAL : afp->af_af;
|
||||||
|
}
|
||||||
strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
|
strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
|
||||||
|
|
||||||
s = socket(ifr.ifr_addr.sa_family, SOCK_DGRAM, 0);
|
s = socket(ifr.ifr_addr.sa_family, SOCK_DGRAM, 0);
|
||||||
|
@ -131,9 +131,9 @@ printgroup(const char *groupname)
|
|||||||
int len, cnt = 0;
|
int len, cnt = 0;
|
||||||
int s;
|
int s;
|
||||||
|
|
||||||
s = socket(AF_INET, SOCK_DGRAM, 0);
|
s = socket(AF_LOCAL, SOCK_DGRAM, 0);
|
||||||
if (s == -1)
|
if (s == -1)
|
||||||
err(1, "socket(AF_INET,SOCK_DGRAM)");
|
err(1, "socket(AF_LOCAL,SOCK_DGRAM)");
|
||||||
bzero(&ifgr, sizeof(ifgr));
|
bzero(&ifgr, sizeof(ifgr));
|
||||||
strlcpy(ifgr.ifgr_name, groupname, sizeof(ifgr.ifgr_name));
|
strlcpy(ifgr.ifgr_name, groupname, sizeof(ifgr.ifgr_name));
|
||||||
if (ioctl(s, SIOCGIFGMEMB, (caddr_t)&ifgr) == -1) {
|
if (ioctl(s, SIOCGIFGMEMB, (caddr_t)&ifgr) == -1) {
|
||||||
|
Loading…
Reference in New Issue
Block a user