[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Problem installing Network Dispatcher Patch
- From: "Romero Valverde, Antonio" <anromero endesa es>
- To: redhat-install-list redhat com
- Subject: Problem installing Network Dispatcher Patch
- Date: Thu, 1 Jun 2000 18:22:38 +0200
Hi,
I'm installing Network Dispatcher (IBM) over Linux Red Hat 6.1.
To make it run, it is neccessary to apply one patch.
The question is: Is there anybody who could tell me how apply this?
Patch is like this:
--- linux/Documentation/networking/ip-sysctl.txt Wed Dec 1 12:01:47
1999
+++ linux/Documentation/networking/ip-sysctl.txt Wed Dec 1 14:03:14
1999
@@ -156,6 +156,9 @@
proxy_arp - BOOLEAN
Do proxy arp.
+arp_invisible - BOOLEAN
+ Hide this interface and don't send ARP replies for it.
+
shared_media - BOOLEAN
undocumented.
--- linux/Documentation/proc.txt Wed Dec 1 12:01:47 1999
+++ linux/Documentation/proc.txt Wed Dec 1 14:04:02 1999
@@ -1163,6 +1163,9 @@
proxy_arp
Do (1) or don't (0) do proxy ARP.
+arp_invisible
+ Hide this interface and don't send ARP replies for it.
+
rp_filter
Integer value deciding if source validation should be made.
1 means yes, 0 means no. Disabled by default, but
--- linux/include/linux/inetdevice.h Wed Dec 1 12:01:39 1999
+++ linux/include/linux/inetdevice.h Wed Dec 1 13:44:18 1999
@@ -16,6 +16,7 @@
int log_martians;
int forwarding;
int mc_forwarding;
+ int arp_invisible;
void *sysctl;
};
@@ -40,6 +41,7 @@
#define IN_DEV_LOG_MARTIANS(in_dev) (ipv4_devconf.log_martians ||
(in_dev)->cnf.log_martians)
#define IN_DEV_PROXY_ARP(in_dev) (ipv4_devconf.proxy_arp ||
(in_dev)->cnf.proxy_arp)
+#define IN_DEV_ARP_INVISIBLE(in_dev) (ipv4_devconf.arp_invisible ||
(in_dev)->cnf.arp_invisible)
#define IN_DEV_SHARED_MEDIA(in_dev) (ipv4_devconf.shared_media ||
(in_dev)->cnf.shared_media)
#define IN_DEV_TX_REDIRECTS(in_dev) (ipv4_devconf.send_redirects ||
(in_dev)->cnf.send_redirects)
#define IN_DEV_SEC_REDIRECTS(in_dev) (ipv4_devconf.secure_redirects ||
(in_dev)->cnf.secure_redirects)
--- linux/include/linux/sysctl.h Wed Dec 1 12:01:40 1999
+++ linux/include/linux/sysctl.h Wed Dec 1 13:45:35 1999
@@ -251,7 +251,8 @@
NET_IPV4_CONF_RP_FILTER=8,
NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE=9,
NET_IPV4_CONF_BOOTP_RELAY=10,
- NET_IPV4_CONF_LOG_MARTIANS=11
+ NET_IPV4_CONF_LOG_MARTIANS=11,
+ NET_IPV4_CONF_ARP_INVISIBLE=12
};
/* /proc/sys/net/ipv6 */
--- linux/net/ipv4/arp.c Wed Dec 1 12:02:32 1999
+++ linux/net/ipv4/arp.c Wed Dec 1 15:58:22 1999
@@ -65,6 +65,8 @@
* clean up the APFDDI & gen. FDDI
bits.
* Alexey Kuznetsov: new arp state machine;
* now it is in net/core/neighbour.c.
+ * Julian Anastasov: arp_invisible flag: hide the
+ * interface and don't reply for it
*/
/* RFC1122 Status:
@@ -302,14 +304,24 @@
{
u32 saddr;
u8 *dst_ha = NULL;
- struct device *dev = neigh->dev;
+ struct device *dev = neigh->dev;
+ struct device *dev2;
+ struct in_device *in_dev = NULL;
u32 target = *(u32*)neigh->primary_key;
int probes = neigh->probes;
- if (skb && inet_addr_type(skb->nh.iph->saddr) == RTN_LOCAL)
+ if (skb && inet_addr_type(skb->nh.iph->saddr) == RTN_LOCAL) {
saddr = skb->nh.iph->saddr;
- else
+ dev2 = ip_dev_find(saddr);
+ if (dev2) in_dev = (struct in_device *) dev2->ip_ptr;
+ if (in_dev && IN_DEV_ARP_INVISIBLE(in_dev)) {
+ printk(KERN_INFO "%s: src ip=%d.%d.%d.%d is hidden,
will select another src ip\n", __FUNCTION__, NIPQUAD(saddr));
+ in_dev = NULL;
+ }
+ }
+ if (!in_dev) {
saddr = inet_select_addr(dev, target, RT_SCOPE_LINK);
+ }
if ((probes -= neigh->parms->ucast_probes) < 0) {
if (!(neigh->nud_state&NUD_VALID))
@@ -537,6 +549,8 @@
u16 dev_type = dev->type;
int addr_type;
struct in_device *in_dev = dev->ip_ptr;
+ struct in_device *in_dev2;
+ struct device *tdev;
struct neighbour *n;
/*
@@ -649,8 +663,17 @@
/* Special case: IPv4 duplicate address detection packet (RFC2131)
*/
if (sip == 0) {
if (arp->ar_op == __constant_htons(ARPOP_REQUEST) &&
- inet_addr_type(tip) == RTN_LOCAL)
-
arp_send(ARPOP_REPLY,ETH_P_ARP,tip,dev,tip,sha,dev->dev_addr,dev->dev_addr);
+ inet_addr_type(tip) == RTN_LOCAL) {
+ in_dev2 = NULL;
+ tdev = ip_dev_find(tip);
+ if (tdev) in_dev2 = (struct in_device *)
tdev->ip_ptr;
+ /*
+ * In fact, we allow remote host to use this IP
+ * if our interface is "hidden"
+ */
+ if (in_dev2 && !IN_DEV_ARP_INVISIBLE(in_dev2))
+
arp_send(ARPOP_REPLY,ETH_P_ARP,tip,dev,tip,sha,dev->dev_addr,dev->dev_addr);
+ }
goto out;
}
@@ -663,7 +686,14 @@
if (addr_type == RTN_LOCAL) {
n = neigh_event_ns(&arp_tbl, sha, &sip, dev);
if (n) {
-
arp_send(ARPOP_REPLY,ETH_P_ARP,sip,dev,tip,sha,dev->dev_addr,sha);
+ in_dev2 = NULL;
+ tdev = ip_dev_find(tip);
+ if (tdev) in_dev2 = (struct in_device *)
tdev->ip_ptr;
+ if (in_dev2 &&
IN_DEV_ARP_INVISIBLE(in_dev2)) {
+ printk(KERN_INFO "%s: Skipping
answer for hidden IP %d.%d.%d.%d\n", __FUNCTION__, NIPQUAD(tip));
+ }
+ if (in_dev2 &&
!IN_DEV_ARP_INVISIBLE(in_dev2))
+
arp_send(ARPOP_REPLY,ETH_P_ARP,sip,dev,tip,sha,dev->dev_addr,sha);
neigh_release(n);
}
goto out;
--- linux/net/ipv4/devinet.c Wed Dec 1 12:02:32 1999
+++ linux/net/ipv4/devinet.c Wed Dec 1 14:02:19 1999
@@ -914,7 +914,7 @@
static struct devinet_sysctl_table
{
struct ctl_table_header *sysctl_header;
- ctl_table devinet_vars[12];
+ ctl_table devinet_vars[13];
ctl_table devinet_dev[2];
ctl_table devinet_conf_dir[2];
ctl_table devinet_proto_dir[2];
@@ -947,6 +947,9 @@
&proc_dointvec},
{NET_IPV4_CONF_PROXY_ARP, "proxy_arp",
&ipv4_devconf.proxy_arp, sizeof(int), 0644, NULL,
+ &proc_dointvec},
+ {NET_IPV4_CONF_ARP_INVISIBLE, "arp_invisible",
+ &ipv4_devconf.arp_invisible, sizeof(int), 0644, NULL,
&proc_dointvec},
{NET_IPV4_CONF_BOOTP_RELAY, "bootp_relay",
&ipv4_devconf.bootp_relay, sizeof(int), 0644, NULL,
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]