newtComponent networkform;
newtComponent addressentry;
newtComponent netmaskentry;
+newtComponent gatewayentry;
newtComponent statictyperadio;
newtComponent dhcptyperadio;
newtComponent pppoetyperadio;
{
char *addressresult;
char *netmaskresult;
+ char *gatewayresult;
char *dhcphostnameresult;
char *dhcpforcemturesult;
struct newtExitStruct es;
newtComponent header;
newtComponent addresslabel;
newtComponent netmasklabel;
+ newtComponent gatewaylabel;
newtComponent dhcphostnamelabel;
newtComponent dhcpforcemtulabel;
newtComponent ok, cancel;
char temp[STRING_SIZE];
char addressfield[STRING_SIZE];
char netmaskfield[STRING_SIZE];
+ char gatewayfield[STRING_SIZE];
char typefield[STRING_SIZE];
char dhcphostnamefield[STRING_SIZE];
char dhcpforcemtufield[STRING_SIZE];
int startstatictype = 0;
int startdhcptype = 0;
int startpppoetype = 0;
-
+ unsigned char buffer[sizeof(struct in_addr)];
+
/* Build some key strings. */
sprintf(addressfield, "%s_ADDRESS", colour);
sprintf(netmaskfield, "%s_NETMASK", colour);
+ sprintf(gatewayfield, "DEFAULT_GATEWAY");
sprintf(typefield, "%s_TYPE", colour);
sprintf(dhcphostnamefield, "%s_DHCP_HOSTNAME", colour);
sprintf(dhcpforcemtufield, "%s_DHCP_FORCE_MTU", colour);
sprintf(message, _("Interface - %s"), colour);
- newtCenteredWindow(44, (typeflag ? 18 : 12), message);
+ newtCenteredWindow(44, (typeflag ? 19 : 12), message);
networkform = newtForm(NULL, NULL, 0);
newtFormAddComponent(networkform, netmasklabel);
newtFormAddComponent(networkform, netmaskentry);
+ if (typeflag)
+ {
+ /* Gateway */
+ gatewaylabel = newtTextbox(2, (typeflag ? 11 : 4) + 2, 18, 1, 0);
+ newtTextboxSetText(gatewaylabel, _("Gateway:"));
+ strcpy(temp, "");
+ findkey(kv, gatewayfield, temp);
+ gatewayentry = newtEntry(20, (typeflag ? 11 : 4) + 2, temp, 20, &gatewayresult, 0);
+ newtEntrySetFilter(gatewayentry, ip_input_filter, NULL);
+ if (typeflag == 1 && startstatictype == 0)
+ newtEntrySetFlags(gatewayentry, NEWT_FLAG_DISABLED, NEWT_FLAGS_SET);
+ newtFormAddComponent(networkform, gatewaylabel);
+ newtFormAddComponent(networkform, gatewayentry);
+ }
+
/* Buttons. */
- ok = newtButton(8, (typeflag ? 14 : 7), _("OK"));
- cancel = newtButton(26, (typeflag ? 14 : 7), _("Cancel"));
+ ok = newtButton(8, (typeflag ? 15 : 7), _("OK"));
+ cancel = newtButton(26, (typeflag ? 15 : 7), _("Cancel"));
newtFormAddComponents(networkform, ok, cancel, NULL);
strcat(message, "\n");
error = 1;
}
- if (inet_addr(netmaskresult) == INADDR_NONE)
+ if (inet_pton(AF_INET, netmaskresult, &buffer) == 0)
{
strcat(message, _("Network mask"));
strcat(message, "\n");
error = 1;
}
+ if (typeflag && (inet_addr(gatewayresult) == INADDR_NONE))
+ {
+ strcat(message, _("Gateway"));
+ strcat(message, "\n");
+ error = 1;
+ }
+
}
if (strcmp(type, "DHCP") == 0)
{
{
replacekeyvalue(kv, addressfield, "0.0.0.0");
replacekeyvalue(kv, netmaskfield, "0.0.0.0");
+ replacekeyvalue(kv, gatewayfield, "0.0.0.0");
}
else
{
replacekeyvalue(kv, addressfield, addressresult);
replacekeyvalue(kv, netmaskfield, netmaskresult);
+ replacekeyvalue(kv, gatewayfield, gatewayresult);
}
- replacekeyvalue(kv, typefield, type);
+ replacekeyvalue(kv, typefield, type);
}
else
{
return 0;
}
-/* 0.9.9: calculates broadcast too. */
int setnetaddress(struct keyvalue *kv, char *colour)
{
char addressfield[STRING_SIZE];
char netaddressfield[STRING_SIZE];
char netmaskfield[STRING_SIZE];
- char broadcastfield[STRING_SIZE];
char address[STRING_SIZE];
char netmask[STRING_SIZE];
unsigned long int intaddress;
unsigned long int intnetaddress;
unsigned long int intnetmask;
- unsigned long int intbroadcast;
struct in_addr temp;
char *netaddress;
- char *broadcast;
-
+
/* Build some key strings. */
sprintf(addressfield, "%s_ADDRESS", colour);
sprintf(netaddressfield, "%s_NETADDRESS", colour);
sprintf(netmaskfield, "%s_NETMASK", colour);
- sprintf(broadcastfield, "%s_BROADCAST", colour);
strcpy(address, ""); findkey(kv, addressfield, address);
strcpy(netmask, ""); findkey(kv, netmaskfield, netmask);
replacekeyvalue(kv, netaddressfield, netaddress);
- intbroadcast = intnetaddress | ~intnetmask;
- temp.s_addr = intbroadcast;
- broadcast = inet_ntoa(temp);
-
- replacekeyvalue(kv, broadcastfield, broadcast);
-
return 1;
}
{
newtEntrySetFlags(addressentry, NEWT_FLAG_DISABLED, NEWT_FLAGS_SET);
newtEntrySetFlags(netmaskentry, NEWT_FLAG_DISABLED, NEWT_FLAGS_SET);
+ newtEntrySetFlags(gatewayentry, NEWT_FLAG_DISABLED, NEWT_FLAGS_SET);
}
else
{
newtEntrySetFlags(addressentry, NEWT_FLAG_DISABLED, NEWT_FLAGS_RESET);
newtEntrySetFlags(netmaskentry, NEWT_FLAG_DISABLED, NEWT_FLAGS_RESET);
+ newtEntrySetFlags(gatewayentry, NEWT_FLAG_DISABLED, NEWT_FLAGS_RESET);
}
if (strcmp(type, "DHCP") == 0)
{
char temp[STRING_SIZE];
sprintf(temp,"ip link show dev %s | grep -q UP", card);
- if (mysystem(temp)) return 0; else return 1;
+ if (mysystem(NULL, temp)) return 0; else return 1;
}
int rename_device(char *old_name, char *new_name) {
return 0;
}
sprintf(temp,"/sbin/ip link set dev %s name %s",old_name ,new_name );
- mysystem(temp);
+ mysystem(NULL, temp);
return 1;
}
char temp[STRING_SIZE];
sprintf(temp,"ip link set %s down", nic);
- mysystem(temp);
+ mysystem(NULL, temp);
}
int nic_startup(char *nic) {
char temp[STRING_SIZE];
sprintf(temp,"ip link set %s up", nic);
- mysystem(temp);
+ mysystem(NULL, temp);
}
}
}
-int create_udev(void)
-{
- #define UDEV_NET_CONF "/etc/udev/rules.d/30-persistent-network.rules"
- FILE *fp;
- int i;
-
- if ( (fp = fopen(UDEV_NET_CONF, "w")) == NULL ) {
- fprintf(stderr,"Couldn't open" UDEV_NET_CONF);
- return 1;
- }
-
- for (i = 0 ; i < 4 ; i++)
- {
- if (strcmp(knics[i].macaddr, "")) {
- fprintf(fp,"\n# %s\nACTION==\"add\", SUBSYSTEM==\"net\", ATTR{type}==\"1\", ATTR{address}==\"%s\", NAME=\"%s0\"\n", knics[i].description, knics[i].macaddr, lcolourcard[i]);
- }
- }
- fclose(fp);
- return 0;
-}
-
int write_configs_netudev(int card , int colour)
{
char commandstring[STRING_SIZE];
if (!(scanned_nics_read_done))
{
- mysystem("/usr/bin/probenic.sh");
+ mysystem(NULL, "/usr/bin/probenic.sh");
if( (fp = fopen(SCANNED_NICS, "r")) == NULL )
{
fprintf(stderr,"Couldn't open "SCANNED_NICS);
int nicmenu(int colour)
{
int rc, choise = 0, count = 0, kcount = 0, mcount = 0, i, j, nic_in_use;
- int found_NIC_as_Card[4];
+ int found_NIC_as_Card[MAX_NICS];
char message[STRING_SIZE];
char temp[STRING_SIZE];
char cMenuInhalt[STRING_SIZE];
- char MenuInhalt[20][180];
- char *pMenuInhalt[20];
+ char MenuInhalt[MAX_NICS][STRING_SIZE];
+ char *pMenuInhalt[MAX_NICS];
while (strcmp(nics[count].macaddr, "")) count++; // 2 find how many nics in system
- for ( i=0 ; i<4;i++) if (strcmp(knics[i].macaddr, "")) kcount++; // loop to find all knowing nics
+ for (i=0; i<MAX_NICS; i++) if (strcmp(knics[i].macaddr, "")) kcount++; // loop to find all knowing nics
// If new nics are found...
if (count > kcount) {
sprintf(message, _("Please choose a networkcard for the following interface - %s."), ucolourcard[colour]);
rc=2;
while ( rc == 2 ) {
- rc = newtWinMenu(_("Extended Network Menu"), message, 50, 5, 5, 6, pMenuInhalt, &choise,
+ rc = newtWinMenu(_("Extended Network Menu"), message, 50, 5, 5, mcount, pMenuInhalt, &choise,
_("Select"), _("Identify"), _("Cancel"), NULL);
if ( rc == 2 ) {
sprintf(temp, "/sbin/ip link set %s up", nics[found_NIC_as_Card[choise]].nic);
- mysystem(temp);
+ mysystem(NULL, temp);
sprintf(temp, "/usr/sbin/ethtool -p %s 10", nics[found_NIC_as_Card[choise]].nic);
- if (runcommandwithstatus(temp, _("Device Identification"), _("The lights on the selected port should flash now for 10 seconds...")) != 0) {
+ if (runcommandwithstatus(temp, _("Device Identification"), _("The lights on the selected port should flash now for 10 seconds..."), NULL) != 0) {
errorbox(_("Identification is not supported by this interface."));
sprintf(temp, "/sbin/ip link set %s down", nics[found_NIC_as_Card[choise]].nic);
- mysystem(temp);
+ mysystem(NULL, temp);
}
}
}
if (strlen(values[0]))
{
sprintf(commandstring, "/sbin/modprobe %s", values[0]);
- if (runcommandwithstatus(commandstring, _("Loading module..."), _("Loading module...")) == 0)
+ if (runcommandwithstatus(commandstring, _("Loading module..."), _("Loading module..."), NULL) == 0)
{
if ((driverend = strchr(values[0], ' ')))
{