Do not defer setting of the aliasing address from

interface name if not operating in dynamic mode.

Reviewed by:	Ari Suutari <ari@suutari.iki.fi>
This commit is contained in:
Ruslan Ermilov 1999-09-28 08:01:46 +00:00
parent 810b4d751f
commit f2da55a243
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=51751

View File

@ -254,16 +254,21 @@ int main (int argc, char** argv)
Quit ("Unable to bind outgoing divert socket.");
}
/*
* Create routing socket if interface name specified.
* Create routing socket if interface name specified and in dynamic mode.
*/
if (ifName && dynamicMode) {
routeSock = -1;
if (ifName) {
if (dynamicMode) {
routeSock = socket (PF_ROUTE, SOCK_RAW, 0);
if (routeSock == -1)
Quit ("Unable to create routing info socket.");
routeSock = socket (PF_ROUTE, SOCK_RAW, 0);
if (routeSock == -1)
Quit ("Unable to create routing info socket.");
assignAliasAddr = 1;
}
else
SetAliasAddressFromIfName (ifName);
}
else
routeSock = -1;
/*
* Create socket for sending ICMP messages.
*/
@ -707,7 +712,6 @@ static void SetAliasAddressFromIfName (char* ifn)
{
struct ifconf cf;
struct ifreq buf[32];
char msg[80];
struct ifreq* ifPtr;
int extra;
int helperSock;
@ -720,22 +724,16 @@ static void SetAliasAddressFromIfName (char* ifn)
* Create a dummy socket to access interface information.
*/
helperSock = socket (AF_INET, SOCK_DGRAM, 0);
if (helperSock == -1) {
if (helperSock == -1)
Quit ("Failed to create helper socket.");
exit (1);
}
cf.ifc_len = sizeof (buf);
cf.ifc_req = buf;
/*
* Get interface data.
*/
if (ioctl (helperSock, SIOCGIFCONF, &cf) == -1) {
if (ioctl (helperSock, SIOCGIFCONF, &cf) == -1)
Quit ("Ioctl SIOCGIFCONF failed.");
exit (1);
}
ifIndex = 0;
ifPtr = buf;
@ -775,8 +773,7 @@ static void SetAliasAddressFromIfName (char* ifn)
if (!found) {
close (helperSock);
sprintf (msg, "Unknown interface name %s.\n", ifn);
Quit (msg);
errx (1, "Unknown interface name %s.\n", ifn);
}
/*
* Get MTU size.
@ -1209,7 +1206,6 @@ static void ParseOption (const char* option, const char* parms, int cmdLine)
free (ifName);
ifName = strdup (strValue);
assignAliasAddr = 1;
break;
case ConfigFile: