Page Menu
Home
VyOS Platform
Search
Configure Global Search
Log In
Files
F118309977
system-ip.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
system-ip.py
View Options
#!/usr/bin/env python3
#
# Copyright (C) 2019 VyOS maintainers and contributors
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or later as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import
os
from
sys
import
exit
from
copy
import
deepcopy
from
vyos.config
import
Config
from
vyos
import
ConfigError
default_config_data
=
{
'arp_table'
:
8192
,
'ipv4_forward'
:
'1'
,
'mp_unreach_nexthop'
:
'0'
,
'mp_layer4_hashing'
:
'0'
}
def
sysctl
(
name
,
value
):
os
.
system
(
'sysctl -wq {}={}'
.
format
(
name
,
value
))
def
get_config
():
ip_opt
=
deepcopy
(
default_config_data
)
conf
=
Config
()
conf
.
set_level
(
'system ip'
)
if
conf
.
exists
(
''
):
if
conf
.
exists
(
'arp table-size'
):
ip_opt
[
'arp_table'
]
=
int
(
conf
.
return_value
(
'arp table-size'
))
if
conf
.
exists
(
'disable-forwarding'
):
ip_opt
[
'ipv4_forward'
]
=
'0'
if
conf
.
exists
(
'multipath ignore-unreachable-nexthops'
):
ip_opt
[
'mp_unreach_nexthop'
]
=
'1'
if
conf
.
exists
(
'multipath layer4-hashing'
):
ip_opt
[
'mp_layer4_hashing'
]
=
'1'
return
ip_opt
def
verify
(
ip_opt
):
pass
def
generate
(
ip_opt
):
pass
def
apply
(
ip_opt
):
# apply ARP threshold values
sysctl
(
'net.ipv4.neigh.default.gc_thresh3'
,
ip_opt
[
'arp_table'
])
sysctl
(
'net.ipv4.neigh.default.gc_thresh2'
,
ip_opt
[
'arp_table'
]
//
2
)
sysctl
(
'net.ipv4.neigh.default.gc_thresh1'
,
ip_opt
[
'arp_table'
]
//
8
)
# enable/disable IPv4 forwarding
with
open
(
'/proc/sys/net/ipv4/conf/all/forwarding'
,
'w'
)
as
f
:
f
.
write
(
ip_opt
[
'ipv4_forward'
])
# configure multipath
sysctl
(
'net.ipv4.fib_multipath_use_neigh'
,
ip_opt
[
'mp_unreach_nexthop'
])
sysctl
(
'net.ipv4.fib_multipath_hash_policy'
,
ip_opt
[
'mp_layer4_hashing'
])
if
__name__
==
'__main__'
:
try
:
c
=
get_config
()
verify
(
c
)
generate
(
c
)
apply
(
c
)
except
ConfigError
as
e
:
print
(
e
)
exit
(
1
)
File Metadata
Details
Attached
Mime Type
text/x-script.python
Expires
Sat, Oct 17, 12:54 AM (1 d, 9 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4351562
Default Alt Text
system-ip.py (2 KB)
Attached To
Mode
rVYOSONEX vyos-1x
Attached
Detach File
Event Timeline
Log In to Comment