private void IP_FIB_AddButton_Click(object sender, RoutedEventArgs e) { var routerName = IP_FIB_RouterName.Text; var destAddress = IP_FIB_DestAddress.Text; var outPort = IP_FIB_OutPort.Text; if (routerName.Length == 0 || destAddress.Length == 0 || outPort.Length == 0) { return; } var isProperRule = CheckIfIsProperIP_FIB_Entry(destAddress, outPort); if (!isProperRule || !Manager.RouterNameToIP_FIB_Table.ContainsKey(routerName)) { AddLog("You are trying to add an incorrect rule!", LogType.Error); return; } var foundRow = IP_FIB_Rows.Find(x => x.RouterName.Equals(routerName) && x.DestAddress.Equals(IPAddress.Parse(destAddress))); if (foundRow != null) { AddLog("Output port for such destination address already exists!", LogType.Error); return; } var rule = new IpFibTableRow(destAddress + " " + outPort); rule.RouterName = routerName; Manager.RouterNameToIP_FIB_Table[routerName].Add(rule); IP_FIB_Rows.Add(rule); Manager.SendRow(routerName, rule, ManagementActions.ADD_IP_FIB_ENTRY); SortIpFibRows(); IP_FIB_Table.Items.Refresh(); IP_FIB_RouterName.Clear(); IP_FIB_DestAddress.Clear(); IP_FIB_OutPort.Clear(); IP_FIB_RouterName.Focus(); }