Skip to contentSkip to conversation

rgmanager: Add IP "interface" parameter

PATCH New Ryan McCabe 4 participants 9 messages Jul 12, 2012 – Jul 24, 2012

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 rgmanager: Add IP "interface" parameter

This patch adds an "interface" parameter for IP resources. The interface must already be configured and active. This parameter should be used only when at least two active interfaces have IP addresses on the same subnet and it's necessary to specify which particular interface should be used.

---
 rgmanager/src/resources/ip.sh |   17 +++++++++++++++++
 1 file changed, 17 insertions(+)
rgmanager/src/resources/ip.sh +17 -0
index 38d1ab9..3adbb12 100755
@@ -132,6 +132,15 @@ meta_data()
 	    <content type="boolean"/>
 	</parameter>
 
+	<parameter name="interface">
+	    <longdesc lang="en">
+	        The network interface to which the IP address should be added. The interface must already be configured and active. This parameter should be used only when at least two active interfaces have IP addresses on the same subnet and it is desired to have the IP address added to a particular interface.
+	    </longdesc>
+	    <shortdesc lang="en">
+	        Network interface
+	    </shortdesc>
+	    <content type="string"/>
+	</parameter>
     </parameters>
 
     <actions>
@@ -587,6 +596,10 @@ ipv6()
 		fi
 		
 		if [ "$1" = "add" ]; then
+			if [ -n "$OCF_RESKEY_interface" ] && \
+			   [ "$OCF_RESKEY_interface" != $dev ]; then
+				continue
+			fi
 			ipv6_same_subnet $ifaddr_exp/$maskbits $addr_exp
 			if [ $? -ne 0 ]; then
                                 continue
@@ -670,6 +683,10 @@ ipv4()
 		fi
 
 		if [ "$1" = "add" ]; then
+			if [ -n "$OCF_RESKEY_interface" ] && \
+			   [ "$OCF_RESKEY_interface" != $dev ]; then
+				continue
+			fi
 		        ipv4_same_subnet $ifaddr/$maskbits $addr
 			if [ $? -ne 0 ]; then
 			        continue
Signature · 1 line
1.7.10.4
#1 lore raw

PATCH 1/1 rgmanager: Add IP "interface" parameter

Hi Ryan,

only one comment here.. many times we have been asked to implement "interface" parameter to allow any random IP on any specific interface (beside the pre configured ip on that interface).

Can we change the patch to simply fix both problems at once? Effectively, the fact that 2 interfaces have 2 ip on the same subnet is simply a corner case.

Maybe later on we can add something like: ifconfig iface up / down.

when doing ifconfig up we need to store the output of ip addresses automatically assigned to that interface.

on shutdown, we need to check if the ip we are removing is the last one on that interface _before_ issuing an ifconfig down in case there are more ip resources associated to it.

The patch looks ok, but I would probably use a different term than "interface" as it sounds very similar to the expected feature above.

Fabio

Quoted 53 lines · Ryan McCabe

This patch adds an "interface" parameter for IP resources. The interface must already be configured and active. This parameter should be used only when at least two active interfaces have IP addresses on the same subnet and it's necessary to specify which particular interface should be used.

---
 rgmanager/src/resources/ip.sh |   17 +++++++++++++++++
 1 file changed, 17 insertions(+)
rgmanager/src/resources/ip.sh +17 -0
index 38d1ab9..3adbb12 100755
@@ -132,6 +132,15 @@ meta_data()
 	    <content type="boolean"/>
 	</parameter>
 
+	<parameter name="interface">
+	    <longdesc lang="en">
+	        The network interface to which the IP address should be added. The interface must already be configured and active. This parameter should be used only when at least two active interfaces have IP addresses on the same subnet and it is desired to have the IP address added to a particular interface.
+	    </longdesc>
+	    <shortdesc lang="en">
+	        Network interface
+	    </shortdesc>
+	    <content type="string"/>
+	</parameter>
     </parameters>
 
     <actions>
@@ -587,6 +596,10 @@ ipv6()
 		fi
 
 		if [ "$1" = "add" ]; then
+			if [ -n "$OCF_RESKEY_interface" ] && \
+			   [ "$OCF_RESKEY_interface" != $dev ]; then
+				continue
+			fi
 			ipv6_same_subnet $ifaddr_exp/$maskbits $addr_exp
 			if [ $? -ne 0 ]; then
                                 continue
@@ -670,6 +683,10 @@ ipv4()
 		fi
 
 		if [ "$1" = "add" ]; then
+			if [ -n "$OCF_RESKEY_interface" ] && \
+			   [ "$OCF_RESKEY_interface" != $dev ]; then
+				continue
+			fi
 		        ipv4_same_subnet $ifaddr/$maskbits $addr
 			if [ $? -ne 0 ]; then
 			        continue
#2 lore raw

PATCH 1/1 rgmanager: Add IP "interface" parameter

Quoted 5 lines · Fabio M. Di Nitto

Hi Ryan,

only one comment here.. many times we have been asked to implement "interface" parameter to allow any random IP on any specific interface (beside the pre configured ip on that interface).

We haven't done that because we might end up owning routing. However, if we make it explicit that this is not the case, then we could in theory do both.

-- Lon

#3 lore raw

PATCH 1/1 rgmanager: Add IP "interface" parameter

Quoted 10 lines · Lon Hohberger
Quoted 5 lines · Fabio M. Di Nitto

Hi Ryan,

only one comment here.. many times we have been asked to implement "interface" parameter to allow any random IP on any specific interface (beside the pre configured ip on that interface).

We haven't done that because we might end up owning routing. However, if we make it explicit that this is not the case, then we could in theory do both.

hmm right.. forgot about that.

I would still prefer to avoid the use of interface="" option if possible tho. Maybe something slightly less overloaded. force_interface or force_net_device.

Fabio

#4 lore raw

PATCH 1/1 rgmanager: Add IP "interface" parameter

Quoted 12 lines · Fabio M. Di Nitto
Quoted 10 lines · Lon Hohberger
Quoted 5 lines · Fabio M. Di Nitto

Hi Ryan,

only one comment here.. many times we have been asked to implement "interface" parameter to allow any random IP on any specific interface (beside the pre configured ip on that interface).

We haven't done that because we might end up owning routing. However, if we make it explicit that this is not the case, then we could in theory do both.

Quoted 6 lines

hmm right.. forgot about that.

I would still prefer to avoid the use of interface="" option if possible tho. Maybe something slightly less overloaded. force_interface or force_net_device.

Sure; that's fine.

prefer_interface=""

maybe? "If more than one match, use this one, otherwise, use the one that matches"

-- Lon

#5 lore raw

PATCH 1/1 rgmanager: Add IP "interface" parameter

Quoted 20 lines · Lon Hohberger
Quoted 12 lines · Fabio M. Di Nitto
Quoted 10 lines · Lon Hohberger
Quoted 5 lines · Fabio M. Di Nitto

Hi Ryan,

only one comment here.. many times we have been asked to implement "interface" parameter to allow any random IP on any specific interface (beside the pre configured ip on that interface).

We haven't done that because we might end up owning routing. However, if we make it explicit that this is not the case, then we could in theory do both.

Quoted 6 lines

hmm right.. forgot about that.

I would still prefer to avoid the use of interface="" option if possible tho. Maybe something slightly less overloaded. force_interface or force_net_device.

Quoted 6 lines

Sure; that's fine.

prefer_interface=""

maybe? "If more than one match, use this one, otherwise, use the one that matches"

Yes that sounds a lot better than force_* :)

Thanks
Fabio

#6 lore raw

PATCH 1/1 rgmanager: Add IP "interface" parameter

Quoted 5 lines · Fabio M. Di Nitto
Quoted 4 lines · Lon Hohberger

Sure; that's fine.

prefer_interface=""

Quoted 7 lines
Quoted 2 lines

maybe? "If more than one match, use this one, otherwise, use the one that matches"

Yes that sounds a lot better than force_* :)

Thanks
Fabio

Works for me.

New patch:

This patch adds a "prefer_interface" parameter for IP resources. The interface must already be configured and active. This parameter should be used only when at least two active interfaces have IP addresses on the same subnet and it's necessary to specify which particular interface should be used.

---
 rgmanager/src/resources/ip.sh |   17 +++++++++++++++++
 1 file changed, 17 insertions(+)
rgmanager/src/resources/ip.sh +17 -0
index 38d1ab9..bbd85f3 100755
@@ -132,6 +132,15 @@ meta_data()
 	    <content type="boolean"/>
 	</parameter>
 
+	<parameter name="prefer_interface">
+	    <longdesc lang="en">
+	        The network interface to which the IP address should be added. The interface must already be configured and active. This parameter should be used only when at least two active interfaces have IP addresses on the same subnet and it is desired to have the IP address added to a particular interface.
+	    </longdesc>
+	    <shortdesc lang="en">
+	        Network interface
+	    </shortdesc>
+	    <content type="string"/>
+	</parameter>
     </parameters>
 
     <actions>
@@ -587,6 +596,10 @@ ipv6()
 		fi
 		
 		if [ "$1" = "add" ]; then
+			if [ -n "$OCF_RESKEY_prefer_interface" ] && \
+			   [ "$OCF_RESKEY_prefer_interface" != $dev ]; then
+				continue
+			fi
 			ipv6_same_subnet $ifaddr_exp/$maskbits $addr_exp
 			if [ $? -ne 0 ]; then
                                 continue
@@ -670,6 +683,10 @@ ipv4()
 		fi
 
 		if [ "$1" = "add" ]; then
+			if [ -n "$OCF_RESKEY_prefer_interface" ] && \
+			   [ "$OCF_RESKEY_prefer_interface" != $dev ]; then
+				continue
+			fi
 		        ipv4_same_subnet $ifaddr/$maskbits $addr
 			if [ $? -ne 0 ]; then
 			        continue
Signature · 1 line
1.7.10.4
#7 lore raw

PATCH 1/1 rgmanager: Add IP "interface" parameter

ACK

-- Lon

Quoted 72 lines · Ryan McCabe
Quoted 5 lines · Fabio M. Di Nitto
Quoted 4 lines · Lon Hohberger

Sure; that's fine.

prefer_interface=""

Quoted 7 lines
Quoted 2 lines

maybe? "If more than one match, use this one, otherwise, use the one that matches"

Yes that sounds a lot better than force_* :)

Thanks
Fabio

Works for me.

New patch:

This patch adds a "prefer_interface" parameter for IP resources. The interface must already be configured and active. This parameter should be used only when at least two active interfaces have IP addresses on the same subnet and it's necessary to specify which particular interface should be used.

---
 rgmanager/src/resources/ip.sh |   17 +++++++++++++++++
 1 file changed, 17 insertions(+)
rgmanager/src/resources/ip.sh +17 -0
index 38d1ab9..bbd85f3 100755
@@ -132,6 +132,15 @@ meta_data()
 	    <content type="boolean"/>
 	</parameter>
 
+	<parameter name="prefer_interface">
+	    <longdesc lang="en">
+	        The network interface to which the IP address should be added. The interface must already be configured and active. This parameter should be used only when at least two active interfaces have IP addresses on the same subnet and it is desired to have the IP address added to a particular interface.
+	    </longdesc>
+	    <shortdesc lang="en">
+	        Network interface
+	    </shortdesc>
+	    <content type="string"/>
+	</parameter>
     </parameters>
 
     <actions>
@@ -587,6 +596,10 @@ ipv6()
 		fi
 
 		if [ "$1" = "add" ]; then
+			if [ -n "$OCF_RESKEY_prefer_interface" ] && \
+			   [ "$OCF_RESKEY_prefer_interface" != $dev ]; then
+				continue
+			fi
 			ipv6_same_subnet $ifaddr_exp/$maskbits $addr_exp
 			if [ $? -ne 0 ]; then
                                 continue
@@ -670,6 +683,10 @@ ipv4()
 		fi
 
 		if [ "$1" = "add" ]; then
+			if [ -n "$OCF_RESKEY_prefer_interface" ] && \
+			   [ "$OCF_RESKEY_prefer_interface" != $dev ]; then
+				continue
+			fi
 		        ipv4_same_subnet $ifaddr/$maskbits $addr
 			if [ $? -ne 0 ]; then
 			        continue
#8 lore raw

PATCH 1/1 rgmanager: Add IP "interface" parameter

In reply to Lon Hohberger
Quoted 20 lines · Lon Hohberger
Quoted 12 lines · Fabio M. Di Nitto
Quoted 10 lines · Lon Hohberger
Quoted 5 lines · Fabio M. Di Nitto

Hi Ryan,

only one comment here.. many times we have been asked to implement "interface" parameter to allow any random IP on any specific interface (beside the pre configured ip on that interface).

We haven't done that because we might end up owning routing. However, if we make it explicit that this is not the case, then we could in theory do both.

Quoted 6 lines

hmm right.. forgot about that.

I would still prefer to avoid the use of interface="" option if possible tho. Maybe something slightly less overloaded. force_interface or force_net_device.

Quoted 6 lines

Sure; that's fine.

prefer_interface=""

maybe? "If more than one match, use this one, otherwise, use the one that matches"

Yes that sounds a lot better than force_* :)

Thanks
Fabio