19-Sep-2022 03:39 - edited 19-Sep-2022 04:03
hello? My name is Muntae.
Using iCall, the following LLCF operation is required, so please review whether it is possible to operate according to the work method I wrote.
** When all interfaces are disabled, it is an environment where only one interface can be manually enabled. **
[Implementation Goal]
- When interface 1.1 is down, 1.2, 2.1, 2.2 down at the same time
- When interface 1.2 down, 1.1, 2.1, 2.2 down at the same time
- When interface 2.1 down, 1.1, 1.2, 2.2 down at the same time
- When interface 2.2 is down, 1.1, 1.2, 2.1 down at the same time
- When interface 1.1 up, 1.2, 2.1, 2.2 up at the same time
- When interface 1.2 up, 1.1, 2.1, 2.2 up at the same time
- When interface 2.1 up, 1.1, 1.2, 2.2 up at the same time
- When interface 2.2 up, 1.1, 1.2, 2.1 up at the same time
[Working procedure]
1. Create /config/llcf.conf file
[Attach the file for details]
sys icall script /Common/interface_1_1_down {
app-service none
definition {
exec tmsh modify net interface 1.2 disabled
exec tmsh modify sys icall handler triggered interface_1_2_down script null
exec tmsh modify net interface 2.1 disabled
exec tmsh modify sys icall handler triggered interface_2_1_down script null
exec tmsh modify net interface 2.2 disabled
exec tmsh modify sys icall handler triggered interface_2_2_down script null
}
description none
events none
}
sys icall script /Common/interface_1_1_up {
app-service none
definition {
exec tmsh modify net interface 1.2 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_1_2_down script interface_1_2_down
exec tmsh modify net interface 2.1 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_2_1_down script interface_2_1_down
exec tmsh modify net interface 2.2 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_2_2_down script interface_2_2_down
}
description none
events none
}
sys icall script /Common/interface_1_2_down {
app-service none
definition {
exec tmsh modify net interface 1.1 disabled
exec tmsh modify sys icall handler triggered interface_1_1_down script null
exec tmsh modify net interface 2.1 disabled
exec tmsh modify sys icall handler triggered interface_2_1_down script null
exec tmsh modify net interface 2.2 disabled
exec tmsh modify sys icall handler triggered interface_2_2_down script null
}
description none
events none
}
sys icall script /Common/interface_1_2_up {
app-service none
definition {
exec tmsh modify net interface 1.1 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_1_1_down script interface_1_1_down
exec tmsh modify net interface 2.1 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_2_1_down script interface_2_1_down
exec tmsh modify net interface 2.2 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_2_2_down script interface_2_2_down
}
description none
events none
}
sys icall script /Common/interface_2_1_down {
app-service none
definition {
exec tmsh modify net interface 2.2 disabled
exec tmsh modify sys icall handler triggered interface_2_2_down script null
exec tmsh modify net interface 1.1 disabled
exec tmsh modify sys icall handler triggered interface_1_1_down script null
exec tmsh modify net interface 1.2 disabled
exec tmsh modify sys icall handler triggered interface_1_2_down script null
}
description none
events none
}
sys icall script /Common/interface_2_1_up {
app-service none
definition {
exec tmsh modify net interface 2.2 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_2_2_down script interface_2_2_down
exec tmsh modify net interface 1.1 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_1_1_down script interface_1_1_down
exec tmsh modify net interface 1.2 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_1_2_down script interface_1_2_down
}
description none
events none
}
sys icall script /Common/interface_2_2_down {
app-service none
definition {
exec tmsh modify net interface 2.1 disabled
exec tmsh modify sys icall handler triggered interface_2_2_down script null
exec tmsh modify net interface 1.1 disabled
exec tmsh modify sys icall handler triggered interface_1_1_down script null
exec tmsh modify net interface 1.2 disabled
exec tmsh modify sys icall handler triggered interface_1_2_down script null
}
description none
events none
}
sys icall script /Common/interface_2_2_up {
app-service none
definition {
exec tmsh modify net interface 2.1 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_2_1_down script interface_2_1_down
exec tmsh modify net interface 1.1 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_1_1_down script interface_1_1_down
exec tmsh modify net interface 1.2 enabled
exec sleep 5
exec tmsh modify sys icall handler triggered interface_1_2_down script interface_1_2_down
}
description none
events none
}
sys icall script /common/null {
app-service none
definition {
}
description none
events none
}
2. Create the /config/user_alert.conf file
[Attach the file for details]
alert interface_1_1_down "Link: 1.1 is DOWN" {
exec command="tmsh generate sys icall event interface_1_2_down"
exec command="tmsh generate sys icall event interface_2_1_down"
exec command="tmsh generate sys icall event interface_2_2_down"
}
alert interface_1_2_down "Link: 1.2 is DOWN" {
exec command="tmsh generate sys icall event interface_1_1_down"
exec command="tmsh generate sys icall event interface_2_1_down"
exec command="tmsh generate sys icall event interface_2_2_down"
}
alert interface_2_1_down "Link: 2.1 is DOWN" {
exec command="tmsh generate sys icall event interface_1_1_down"
exec command="tmsh generate sys icall event interface_1_2_down"
exec command="tmsh generate sys icall event interface_2_2_down"
}
alert interface_2_2_down "Link: 2.2 is DOWN" {
exec command="tmsh generate sys icall event interface_1_1_down"
exec command="tmsh generate sys icall event interface_1_2_down"
exec command="tmsh generate sys icall event interface_2_1_down"
}
alert interface_1_1_up "Link: 1.1 is UP" {
exec command="tmsh generate sys icall event interface_1_2_up"
exec command="tmsh generate sys icall event interface_2_1_up"
exec command="tmsh generate sys icall event interface_2_2_up"
}
alert interface_1_2_up "Link: 1.2 is UP" {
exec command="tmsh generate sys icall event interface_1_1_up"
exec command="tmsh generate sys icall event interface_2_1_up"
exec command="tmsh generate sys icall event interface_2_2_up"
}
alert interface_2_1_up "Link: 2.1 is UP" {
exec command="tmsh generate sys icall event interface_1_1_up"
exec command="tmsh generate sys icall event interface_1_2_up"
exec command="tmsh generate sys icall event interface_2_2_up"
}
alert interface_2_2_up "Link: 2.2 is UP" {
exec command="tmsh generate sys icall event interface_1_1_up"
exec command="tmsh generate sys icall event interface_1_2_up"
exec command="tmsh generate sys icall event interface_2_1_up"
}
3. Merge script configuration:
#tmsh load sys config merge file /config/llcf.conf
4. Apply settings:
- #tmsh save sys config
5. Check to apply script settings:
#list sys icall handler triggered interface 1.1 down
#list sys icall handler triggered interface 1.2 down
#list sys icall handler triggered interface 2.1 down
#list sys icall handler triggered interface 2.2 down
#list sys icall handler triggered interface 1.1 up
#list sys icall handler triggered interface 1.2 up
#list sys icall handler triggered interface 2.1 up
#list sys icall handler triggered interface 2.2 up
Solved! Go to Solution.
04-Oct-2022 06:53
Ok, just to make sure this worked, I modified for my local vmware fusion environment (updated above to add the correct enabled/disabled keywords) and it works just fine.
user_alert.conf as is on my system:
alert interface_1_1_down "Link: 1.1 is DOWN" {
exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 1.1 } }"
}
alert interface_1_3_down "Link: 1.3 is DOWN" {
exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 1.3 } }"
}
alert interface_1_1_up "Link: 1.1 is UP" {
exec command="tmsh generate sys icall event interface_manager context { { name action value enabled } { name interface value 1.1 } }"
}
alert interface_1_3_up "Link: 1.3 is UP" {
exec command="tmsh generate sys icall event interface_manager context { { name action value enabled } { name interface value 1.3 } }"
}
bigip_script.conf appropriate objects as is on my system:
sys icall script interface_manager {
app-service none
definition {
foreach var { action interface } {
set $var $EVENT::context($var)
}
switch ${interface} {
"1.1" {
tmsh::modify /net interface 1.3 ${action}
}
"1.3" {
tmsh::modify /net interface 1.1 ${action}
}
}
}
description none
events none
}
sys icall handler triggered interface_manager {
script interface_manager
subscriptions {
interface_manager {
event-name interface_manager
}
}
}
19-Sep-2022 10:09
Hi @muntae_kim - my apologies, your post got caught in our spam filter. I've just moved it from the spam queue, but want to make sure I understand what you are asking for. You are wanting someone to take a look and make sure that what you wrote above is correct? Are you running into an error, or asking for someone to proof-read before implementing?
19-Sep-2022 20:19
Yes. We would like to receive an accurate answer to your inquiry as soon as possible.
03-Oct-2022 23:30 - edited 04-Oct-2022 06:47
Hi @muntae_kim, have you tested this and it works and you're asking if this is an agreeable solution, or are you asking if it will work as you've specified? I think you said "working solution" so if that's the case, it shouldn't be a problem. But there are ways to significantly reduce the complexity of what you've built. I haven't tested the below, so you'll want to study and test (and likely tweak) what I've written, but it should get you on your way (again...test in a lab!)
###
### begin user_alert.conf
###
alert interface_1_1_down "Link: 1.1 is DOWN" {
exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 1.1 } }"
}
alert interface_1_2_down "Link: 1.2 is DOWN" {
exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 1.2 } }"
}
alert interface_2_1_down "Link: 2.1 is DOWN" {
exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 2.1 } }"
}
alert interface_2_2_down "Link: 2.2 is DOWN" {
exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 2.2 } }"
}
alert interface_1_1_up "Link: 1.1 is UP" {
exec command="tmsh generate sys icall event interface_manager context { { name action value enabled } { name interface value 1.1 } }"
}
alert interface_1_2_up "Link: 1.2 is UP" {
exec command="tmsh generate sys icall event interface_manager context { { name action value enabled } { name interface value 1.2 } }"
}
alert interface_2_1_up "Link: 2.1 is UP" {
exec command="tmsh generate sys icall event interface_manager context { { name action value enabled } { name interface value 2.1 } }"
}
alert interface_2_2_up "Link: 2.2 is UP" {
exec command="tmsh generate sys icall event interface_manager context { { name action value enabled } { name interface value 2.2 } }"
}
###
### end user_alert.conf
###
###
### begin icall objects
###
sys icall script interface_manager {
app-service none
definition {
foreach var { action interface } {
set $var $EVENT::context($var)
}
switch ${interface} {
"1.1" {
tmsh::modify /net interface 1.2 ${action}
tmsh::modify /net interface 2.1 ${action}
tmsh::modify /net interface 2.2 ${action}
}
"1.2" {
tmsh::modify /net interface 1.1 ${action}
tmsh::modify /net interface 2.1 ${action}
tmsh::modify /net interface 2.2 ${action}
}
"2.1" {
tmsh::modify /net interface 1.1 ${action}
tmsh::modify /net interface 1.2 ${action}
tmsh::modify /net interface 2.2 ${action}
}
"2.2" {
tmsh::modify /net interface 1.1 ${action}
tmsh::modify /net interface 1.2 ${action}
tmsh::modify /net interface 2.1 ${action}
}
}
}
description none
events none
}
sys icall handler triggered interface_manager {
script interface_manager
subscriptions {
interface_manager {
event-name interface_manager
}
}
}
###
### end icall objects
###
04-Oct-2022 06:53
Ok, just to make sure this worked, I modified for my local vmware fusion environment (updated above to add the correct enabled/disabled keywords) and it works just fine.
user_alert.conf as is on my system:
alert interface_1_1_down "Link: 1.1 is DOWN" {
exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 1.1 } }"
}
alert interface_1_3_down "Link: 1.3 is DOWN" {
exec command="tmsh generate sys icall event interface_manager context { { name action value disabled } { name interface value 1.3 } }"
}
alert interface_1_1_up "Link: 1.1 is UP" {
exec command="tmsh generate sys icall event interface_manager context { { name action value enabled } { name interface value 1.1 } }"
}
alert interface_1_3_up "Link: 1.3 is UP" {
exec command="tmsh generate sys icall event interface_manager context { { name action value enabled } { name interface value 1.3 } }"
}
bigip_script.conf appropriate objects as is on my system:
sys icall script interface_manager {
app-service none
definition {
foreach var { action interface } {
set $var $EVENT::context($var)
}
switch ${interface} {
"1.1" {
tmsh::modify /net interface 1.3 ${action}
}
"1.3" {
tmsh::modify /net interface 1.1 ${action}
}
}
}
description none
events none
}
sys icall handler triggered interface_manager {
script interface_manager
subscriptions {
interface_manager {
event-name interface_manager
}
}
}
10-Oct-2022 17:43
Thanks for the quick and accurate reply.