RHEL 9.0.0 Alpha bootstrap
The content of this branch was automatically imported from Fedora ELN with the following as its source: https://src.fedoraproject.org/rpms/iproute#3e3e60bdb8a4a9eac937eb1b076b5f381c6b978c
This commit is contained in:
parent
f874d5ab31
commit
d9a596f138
10
.gitignore
vendored
10
.gitignore
vendored
@ -0,0 +1,10 @@
|
|||||||
|
/iproute2-4.18.0.tar.xz
|
||||||
|
/iproute2-4.20.0.tar.xz
|
||||||
|
/iproute2-5.0.0.tar.xz
|
||||||
|
/iproute2-5.1.0.tar.xz
|
||||||
|
/iproute2-5.2.0.tar.xz
|
||||||
|
/iproute2-5.3.0.tar.xz
|
||||||
|
/iproute2-5.4.0.tar.xz
|
||||||
|
/iproute2-5.5.0.tar.xz
|
||||||
|
/iproute2-5.7.0.tar.xz
|
||||||
|
/iproute2-5.8.0.tar.xz
|
923
iproute.spec
Normal file
923
iproute.spec
Normal file
@ -0,0 +1,923 @@
|
|||||||
|
%global cbq_version v0.7.3
|
||||||
|
Summary: Advanced IP routing and network device configuration tools
|
||||||
|
Name: iproute
|
||||||
|
Version: 5.8.0
|
||||||
|
Release: 1%{?dist}
|
||||||
|
URL: http://kernel.org/pub/linux/utils/net/%{name}2/
|
||||||
|
Source0: http://kernel.org/pub/linux/utils/net/%{name}2/%{name}2-%{version}.tar.xz
|
||||||
|
|
||||||
|
License: GPLv2+ and Public Domain
|
||||||
|
BuildRequires: gcc
|
||||||
|
BuildRequires: bison
|
||||||
|
BuildRequires: elfutils-libelf-devel
|
||||||
|
BuildRequires: flex
|
||||||
|
BuildRequires: iptables-devel >= 1.4.5
|
||||||
|
BuildRequires: libcap-devel
|
||||||
|
BuildRequires: libdb-devel
|
||||||
|
BuildRequires: libmnl-devel
|
||||||
|
BuildRequires: libselinux-devel
|
||||||
|
BuildRequires: pkgconfig
|
||||||
|
%if ! 0%{?_module_build}
|
||||||
|
%if 0%{?fedora}
|
||||||
|
BuildRequires: linux-atm-libs-devel
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
Provides: /sbin/ip
|
||||||
|
Recommends: %{name}-tc
|
||||||
|
Requires: psmisc
|
||||||
|
Obsoletes: iproute-doc < %{version}-%{release}
|
||||||
|
|
||||||
|
%description
|
||||||
|
The iproute package contains networking utilities (ip and rtmon, for example)
|
||||||
|
which are designed to use the advanced networking capabilities of the Linux
|
||||||
|
kernel.
|
||||||
|
|
||||||
|
%package tc
|
||||||
|
Summary: Linux Traffic Control utility
|
||||||
|
License: GPLv2+
|
||||||
|
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||||
|
Provides: tc
|
||||||
|
|
||||||
|
%description tc
|
||||||
|
The Traffic Control utility manages queueing disciplines, their classes and
|
||||||
|
attached filters and actions. It is the standard tool to configure QoS in
|
||||||
|
Linux.
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: iproute development files
|
||||||
|
License: GPLv2+
|
||||||
|
Provides: iproute-static = %{version}-%{release}
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
The libnetlink static library.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -p1 -n %{name}2-%{version}
|
||||||
|
|
||||||
|
%build
|
||||||
|
export CFLAGS='%{optflags}'
|
||||||
|
export LDFLAGS='%{build_ldflags}'
|
||||||
|
export LIBDIR='%{_libdir}'
|
||||||
|
export IPT_LIB_DIR='/%{_lib}/xtables'
|
||||||
|
./configure
|
||||||
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
|
%install
|
||||||
|
export DESTDIR='%{buildroot}'
|
||||||
|
export SBINDIR='%{_sbindir}'
|
||||||
|
export MANDIR='%{_mandir}'
|
||||||
|
export LIBDIR='%{_libdir}'
|
||||||
|
export CONFDIR='%{_sysconfdir}/iproute2'
|
||||||
|
export DOCDIR='%{_docdir}'
|
||||||
|
make install
|
||||||
|
|
||||||
|
# libnetlink
|
||||||
|
install -D -m644 include/libnetlink.h %{buildroot}%{_includedir}/libnetlink.h
|
||||||
|
install -D -m644 lib/libnetlink.a %{buildroot}%{_libdir}/libnetlink.a
|
||||||
|
|
||||||
|
%files
|
||||||
|
%dir %{_sysconfdir}/iproute2
|
||||||
|
%{!?_licensedir:%global license %%doc}
|
||||||
|
%license COPYING
|
||||||
|
%doc README
|
||||||
|
%{_mandir}/man7/*
|
||||||
|
%exclude %{_mandir}/man7/tc-*
|
||||||
|
%{_mandir}/man8/*
|
||||||
|
%exclude %{_mandir}/man8/tc*
|
||||||
|
%attr(644,root,root) %config(noreplace) %{_sysconfdir}/iproute2/*
|
||||||
|
%{_sbindir}/*
|
||||||
|
%exclude %{_sbindir}/tc
|
||||||
|
%{_datadir}/bash-completion/completions/devlink
|
||||||
|
|
||||||
|
%files tc
|
||||||
|
%{!?_licensedir:%global license %%doc}
|
||||||
|
%license COPYING
|
||||||
|
%{_mandir}/man7/tc-*
|
||||||
|
%{_mandir}/man8/tc*
|
||||||
|
%dir %{_libdir}/tc/
|
||||||
|
%{_libdir}/tc/*
|
||||||
|
%{_sbindir}/tc
|
||||||
|
%{_datadir}/bash-completion/completions/tc
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%{!?_licensedir:%global license %%doc}
|
||||||
|
%license COPYING
|
||||||
|
%{_mandir}/man3/*
|
||||||
|
%{_libdir}/libnetlink.a
|
||||||
|
%{_includedir}/libnetlink.h
|
||||||
|
%{_includedir}/iproute2/bpf_elf.h
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Mon Aug 10 2020 Phil Sutter <psutter@redhat.com> - 5.8.0-1
|
||||||
|
- New version 5.8.0
|
||||||
|
|
||||||
|
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 5.7.0-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jun 03 2020 Phil Sutter <psutter@redhat.com> - 5.7.0-1
|
||||||
|
- New version 5.7.0
|
||||||
|
|
||||||
|
* Tue Jan 28 2020 Phil Sutter <psutter@redhat.com> - 5.5.0-1
|
||||||
|
- New version 5.5.0
|
||||||
|
|
||||||
|
* Tue Nov 26 2019 Phil Sutter <psutter@redhat.com> - 5.4.0-1
|
||||||
|
- New version 5.4.0
|
||||||
|
- Drop iproute-doc package, upstream removed all non-manpage documentation
|
||||||
|
|
||||||
|
* Tue Oct 08 2019 Phil Sutter <psutter@redhat.com> - 5.3.0-2
|
||||||
|
- ifcfg script uses killall, therefore requires psmisc package
|
||||||
|
|
||||||
|
* Thu Sep 26 2019 Phil Sutter <psutter@redhat.com> - 5.3.0-1
|
||||||
|
- New version 5.3.0
|
||||||
|
- Add upstream-suggested backports
|
||||||
|
|
||||||
|
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 5.2.0-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jul 23 2019 Phil Sutter <psutter@redhat.com> - 5.2.0-1
|
||||||
|
- New version 5.2.0
|
||||||
|
- Add upstream-suggested backports
|
||||||
|
- Fix for tunnel creation when using 'dev' parameter
|
||||||
|
|
||||||
|
* Wed May 29 2019 Phil Sutter <psutter@redhat.com> - 5.1.0-1
|
||||||
|
- New version 5.1.0
|
||||||
|
|
||||||
|
* Wed Mar 20 2019 Phil Sutter <psutter@redhat.com> - 5.0.0-2
|
||||||
|
- Restore Provides: hint, at least pptp depends on it
|
||||||
|
|
||||||
|
* Wed Mar 20 2019 Phil Sutter <psutter@redhat.com> - 5.0.0-1
|
||||||
|
- New version 5.0.0
|
||||||
|
- Get rid of old upgrade path hints
|
||||||
|
|
||||||
|
* Fri Feb 01 2019 Phil Sutter <psutter@redhat.com> - 4.20.0-1
|
||||||
|
- New version 4.20.0
|
||||||
|
- Add upstream-suggested backports
|
||||||
|
- Upstream dropped cbq script, remove it along with related configs
|
||||||
|
- Add libcap support
|
||||||
|
|
||||||
|
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 4.18.0-6
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Sep 19 2018 Phil Sutter <psutter@redhat.com> - 4.18.0-5
|
||||||
|
- man: ip-route: Clarify referenced versions are Linux ones
|
||||||
|
|
||||||
|
* Fri Aug 31 2018 Phil Sutter <psutter@redhat.com> - 4.18.0-4
|
||||||
|
- iprule: Fix destination prefix output
|
||||||
|
|
||||||
|
* Thu Aug 23 2018 Phil Sutter <psutter@redhat.com> - 4.18.0-3
|
||||||
|
- Make colored output configurable
|
||||||
|
|
||||||
|
* Thu Aug 16 2018 Phil Sutter <psutter@redhat.com> - 4.18.0-2
|
||||||
|
- Fix ss filter expressions
|
||||||
|
|
||||||
|
* Tue Aug 14 2018 Phil Sutter <psutter@redhat.com> - 4.18.0-1
|
||||||
|
- New version 4.18.0
|
||||||
|
|
||||||
|
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.17.0-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jun 12 2018 Phil Sutter <psutter@redhat.com> - 4.17.0-1
|
||||||
|
- New version 4.17.0
|
||||||
|
|
||||||
|
* Fri Jun 01 2018 Phil Sutter <psutter@redhat.com> - 4.16.0-1
|
||||||
|
- New version 4.16.0
|
||||||
|
|
||||||
|
* Fri Feb 09 2018 Phil Sutter <psutter@redhat.com> - 4.15.0-1
|
||||||
|
- New version 4.15.0
|
||||||
|
|
||||||
|
* Fri Feb 9 2018 Florian Weimer <fweimer@redhat.com> - 4.14.1-6
|
||||||
|
- Use LDFLAGS defaults from redhat-rpm-config
|
||||||
|
|
||||||
|
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.14.1-5
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Dec 11 2017 Phil Sutter <psutter@redhat.com> - 4.14.1-4
|
||||||
|
- Add missing patch files.
|
||||||
|
|
||||||
|
* Mon Dec 11 2017 Phil Sutter <psutter@redhat.com> - 4.14.1-3
|
||||||
|
- Add upstream suggested backports.
|
||||||
|
- Make use of %%autosetup macro.
|
||||||
|
|
||||||
|
* Wed Nov 15 2017 Phil Sutter <psutter@redhat.com> - 4.14.1-2
|
||||||
|
- Drop unused build dependencies
|
||||||
|
|
||||||
|
* Wed Nov 15 2017 Phil Sutter <psutter@redhat.com> - 4.14.1-1
|
||||||
|
- New version 4.14.1
|
||||||
|
|
||||||
|
* Tue Sep 19 2017 Phil Sutter <psutter@redhat.com> - 4.13.0-1
|
||||||
|
- New version 4.13.0
|
||||||
|
|
||||||
|
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 4.12.0-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 4.12.0-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||||
|
|
||||||
|
* Fri Jul 21 2017 Phil Sutter <psutter@redhat.com> - 4.12.0-1
|
||||||
|
- New version 4.12.0
|
||||||
|
|
||||||
|
* Tue May 23 2017 Phil Sutter <psutter@redhat.com> - 4.11.0-1
|
||||||
|
- Add virtual capability to tc subpackage so it's easier found
|
||||||
|
- New version 4.11.0
|
||||||
|
|
||||||
|
* Thu May 11 2017 Karsten Hopp <karsten@redhat.com> - 4.10.0-3
|
||||||
|
- don't build docs for module builds to limit dependencies
|
||||||
|
|
||||||
|
* Fri Mar 17 2017 Phil Sutter <psutter@redhat.com> - 4.10.0-2
|
||||||
|
- Add two fixes to 4.10.0 release from upstream.
|
||||||
|
|
||||||
|
* Tue Mar 14 2017 Phil Sutter <psutter@redhat.com> - 4.10.0-1
|
||||||
|
- Ship new header iproute2/bpf_elf.h
|
||||||
|
- Document content of remaining docs fixup patch in spec file
|
||||||
|
- Drop patches already applied upstream
|
||||||
|
- New version 4.10.0
|
||||||
|
|
||||||
|
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 4.9.0-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Feb 2 2017 Thomas Woerner <twoerner@redhat.com> - 4.9.0-3
|
||||||
|
- Release bump for iptables-1.6.1 (libxtables.so.12)
|
||||||
|
|
||||||
|
* Sat Jan 28 2017 Phil Sutter <psutter@redhat.com> - 4.9.0-2
|
||||||
|
- Fix for failing 'make install'
|
||||||
|
|
||||||
|
* Sat Jan 28 2017 Phil Sutter <psutter@redhat.com> - 4.9.0-1
|
||||||
|
- New version 4.9.0
|
||||||
|
|
||||||
|
* Fri Jan 13 2017 Phil Sutter <psutter@redhat.com> - 4.8.0-2
|
||||||
|
- Fix segfault in xt action
|
||||||
|
|
||||||
|
* Wed Nov 30 2016 Phil Sutter <psutter@redhat.com> - 4.8.0-1
|
||||||
|
- New version 4.8.0
|
||||||
|
|
||||||
|
* Wed Aug 10 2016 Phil Sutter <psutter@redhat.com> - 4.7.0-1
|
||||||
|
- New version 4.7.0
|
||||||
|
|
||||||
|
* Wed May 04 2016 Phil Sutter <psutter@redhat.com> - 4.6.0-1
|
||||||
|
- New version 4.6.0
|
||||||
|
|
||||||
|
* Wed Apr 13 2016 Thomas Woerner <twoerner@redhat.com> - 4.5.0-4
|
||||||
|
- Rebuild for new iptables-1.6.0 with libxtables so bump
|
||||||
|
|
||||||
|
* Fri Apr 08 2016 Phil Sutter <psutter@redhat.com> - 4.5.0-3
|
||||||
|
- Fix upgrade path by adding correct Requires/Obsoletes statements to spec file
|
||||||
|
- Move README.iproute2+tc into tc subpackage
|
||||||
|
|
||||||
|
* Fri Mar 18 2016 Phil Sutter <psutter@redhat.com> - 4.5.0-2
|
||||||
|
- Split tc into it's own subpackage
|
||||||
|
|
||||||
|
* Fri Mar 18 2016 Phil Sutter <psutter@redhat.com> - 4.5.0-1
|
||||||
|
- New version 4.5.0
|
||||||
|
|
||||||
|
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 4.4.0-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Jan 19 2016 Phil Sutter <psutter@redhat.com> - 4.4.0-1
|
||||||
|
- New version 4.4.0
|
||||||
|
|
||||||
|
* Sun Oct 04 2015 Phil Sutter <psutter@redhat.com> - 4.2.0-4
|
||||||
|
- Simplify RPM install stage by using package's install target
|
||||||
|
|
||||||
|
* Sun Oct 04 2015 Phil Sutter <psutter@redhat.com> - 4.2.0-3
|
||||||
|
- Add missing build dependency to libmnl-devel
|
||||||
|
- Ship tipc utility
|
||||||
|
|
||||||
|
* Thu Sep 24 2015 Phil Sutter <psutter@redhat.com> - 4.2.0-2
|
||||||
|
- Add missing build dependency to libselinux-devel
|
||||||
|
|
||||||
|
* Wed Sep 02 2015 Pavel Šimerda <psimerda@redhat.com> - 4.2.0-1
|
||||||
|
- new version 4.2.0
|
||||||
|
|
||||||
|
* Tue Jul 07 2015 Pavel Šimerda <psimerda@redhat.com> - 4.1.1-1
|
||||||
|
- new version 4.1.1
|
||||||
|
|
||||||
|
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.0.0-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed May 13 2015 Pavel Šimerda <psimerda@redhat.com> - 4.0.0-3
|
||||||
|
- remove patch rejected by upstream
|
||||||
|
|
||||||
|
* Mon May 11 2015 Pavel Šimerda <psimerda@redhat.com> - 4.0.0-2
|
||||||
|
- Remove patch rejected by upstream
|
||||||
|
|
||||||
|
* Tue Apr 14 2015 Pavel Šimerda <psimerda@redhat.com> - 4.0.0-1
|
||||||
|
- new version 4.0.0
|
||||||
|
|
||||||
|
* Fri Mar 13 2015 Pavel Šimerda <psimerda@redhat.com> - 3.19.0-1
|
||||||
|
- new version 3.19.0
|
||||||
|
|
||||||
|
* Sat Oct 04 2014 Lubomir Rintel <lkundrak@v3.sk> - 3.16.0-3
|
||||||
|
- Backport fix for ip link add name regression that broke libvirt
|
||||||
|
|
||||||
|
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.16.0-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue Aug 05 2014 Petr Šabata <contyk@redhat.com> - 3.16.0-1
|
||||||
|
- 3.16 bump
|
||||||
|
|
||||||
|
* Sat Jul 12 2014 Tom Callaway <spot@fedoraproject.org> - 3.15.0-2
|
||||||
|
- fix license handling
|
||||||
|
|
||||||
|
* Thu Jun 12 2014 Petr Šabata <contyk@redhat.com> - 3.15.0-1
|
||||||
|
- 3.15.0 bump
|
||||||
|
|
||||||
|
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.14.0-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue May 06 2014 Petr Šabata <contyk@redhat.com> - 3.14.0-2
|
||||||
|
- Fix incorrect references in ss(8), #1092653
|
||||||
|
|
||||||
|
* Tue Apr 15 2014 Petr Šabata <contyk@redhat.com> - 3.14.0-1
|
||||||
|
- 3.14 bump
|
||||||
|
- Drop out iplink_have_newlink() fix in favor of upstream's approach
|
||||||
|
|
||||||
|
* Tue Nov 26 2013 Petr Šabata <contyk@redhat.com> - 3.12.0-2
|
||||||
|
- Drop libnl from dependencies (#1034454)
|
||||||
|
|
||||||
|
* Mon Nov 25 2013 Petr Šabata <contyk@redhat.com> - 3.12.0-1
|
||||||
|
- 3.12.0 bump
|
||||||
|
|
||||||
|
* Thu Nov 21 2013 Petr Šabata <contyk@redhat.com> - 3.11.0-2
|
||||||
|
- Fix the rtt time parsing again
|
||||||
|
|
||||||
|
* Tue Oct 22 2013 Petr Šabata <contyk@redhat.com> - 3.11.0-1
|
||||||
|
- 3.11 bump
|
||||||
|
|
||||||
|
* Tue Oct 01 2013 Petr Pisar <ppisar@redhat.com> - 3.10.0-8
|
||||||
|
- Close file with bridge monitor file (bug #1011822)
|
||||||
|
|
||||||
|
* Tue Sep 24 2013 Petr Pisar <ppisar@redhat.com> - 3.10.0-7
|
||||||
|
- Add tc -OK option
|
||||||
|
- Document "bridge mdb" and "bridge monitor mdb"
|
||||||
|
|
||||||
|
* Fri Aug 30 2013 Petr Šabata <contyk@redhat.com> - 3.10.0-6
|
||||||
|
- Fix lnstat -i properly this time
|
||||||
|
|
||||||
|
* Thu Aug 29 2013 Petr Šabata <contyk@redhat.com> - 3.10.0-5
|
||||||
|
- Fix an 'ip link' hang (#996537)
|
||||||
|
|
||||||
|
* Tue Aug 13 2013 Petr Šabata <contyk@redhat.com> - 3.10.0-4
|
||||||
|
- lnstat -i: Run indefinitely if the --count isn't specified (#977845)
|
||||||
|
- Switch to unversioned %%docdir
|
||||||
|
|
||||||
|
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.10.0-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Jul 17 2013 Petr Šabata <contyk@redhat.com> - 3.10.0-2
|
||||||
|
- Fix the XFRM patch
|
||||||
|
|
||||||
|
* Wed Jul 17 2013 Petr Šabata <contyk@redhat.com> - 3.10.0-1
|
||||||
|
- 3.10.0 bump
|
||||||
|
- Drop the SHAREDIR patch and revert to upstream ways (#966445)
|
||||||
|
- Fix an XFRM regression with FORTIFY_SOURCE
|
||||||
|
|
||||||
|
* Tue Apr 30 2013 Petr Šabata <contyk@redhat.com> - 3.9.0-1
|
||||||
|
- 3.9.0 bump
|
||||||
|
|
||||||
|
* Thu Apr 25 2013 Petr Šabata <contyk@redhat.com> - 3.8.0-4
|
||||||
|
- ATM is available in Fedora only
|
||||||
|
|
||||||
|
* Tue Mar 12 2013 Petr Šabata <contyk@redhat.com> - 3.8.0-3
|
||||||
|
- Mention the "up" argument in documentation and help outputs (#907468)
|
||||||
|
|
||||||
|
* Mon Mar 04 2013 Petr Šabata <contyk@redhat.com> - 3.8.0-2
|
||||||
|
- Bump for 1.4.18 rebuild
|
||||||
|
|
||||||
|
* Tue Feb 26 2013 Petr Šabata <contyk@redhat.com> - 3.8.0-1
|
||||||
|
- 3.8.0 bump
|
||||||
|
|
||||||
|
* Fri Feb 08 2013 Petr Šabata <contyk@redhat.com> - 3.7.0-2
|
||||||
|
- Don't propogate mounts out of ip (#882047)
|
||||||
|
|
||||||
|
* Wed Dec 12 2012 Petr Šabata <contyk@redhat.com> - 3.7.0-1
|
||||||
|
- 3.7.0 bump
|
||||||
|
|
||||||
|
* Mon Nov 19 2012 Petr Šabata <contyk@redhat.com> - 3.6.0-3
|
||||||
|
- Include section 7 manpages (#876857)
|
||||||
|
- Fix ancient bogus dates in the changelog (correction based upon commits)
|
||||||
|
- Explicitly require some TeX fonts no longer present in the base distribution
|
||||||
|
|
||||||
|
* Thu Oct 04 2012 Petr Šabata <contyk@redhat.com> - 3.6.0-2
|
||||||
|
- List all interfaces by default
|
||||||
|
|
||||||
|
* Wed Oct 03 2012 Petr Šabata <contyk@redhat.com> - 3.6.0-1
|
||||||
|
- 3.6.0 bump
|
||||||
|
|
||||||
|
* Thu Aug 30 2012 Petr Šabata <contyk@redhat.com> - 3.5.1-2
|
||||||
|
- Remove the explicit iptables dependency (#852840)
|
||||||
|
|
||||||
|
* Tue Aug 14 2012 Petr Šabata <contyk@redhat.com> - 3.5.1-1
|
||||||
|
- 3.5.1 bugfix release bump
|
||||||
|
- Rename 'br' to 'bridge'
|
||||||
|
|
||||||
|
* Mon Aug 06 2012 Petr Šabata <contyk@redhat.com> - 3.5.0-2
|
||||||
|
- Install the new bridge utility
|
||||||
|
|
||||||
|
* Thu Aug 02 2012 Petr Šabata <contyk@redhat.com> - 3.5.0-1
|
||||||
|
- 3.5.0 bump
|
||||||
|
- Move to db5.
|
||||||
|
|
||||||
|
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.4.0-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||||
|
|
||||||
|
* Tue May 22 2012 Petr Šabata <contyk@redhat.com> - 3.4.0-1
|
||||||
|
- 3.4.0 bump
|
||||||
|
- Drop the print route patch (included upstream)
|
||||||
|
|
||||||
|
* Mon Apr 30 2012 Petr Šabata <contyk@redhat.com> - 3.3.0-2
|
||||||
|
- Let's install rtmon too... (#814819)
|
||||||
|
|
||||||
|
* Thu Mar 22 2012 Petr Šabata <contyk@redhat.com> - 3.3.0-1
|
||||||
|
- 3.3.0 bump
|
||||||
|
- Update source URL
|
||||||
|
|
||||||
|
* Mon Feb 27 2012 Petr Šabata <contyk@redhat.com> - 3.2.0-3
|
||||||
|
- Address dangerous /tmp files security issue (CVE-2012-1088, #797881, #797878)
|
||||||
|
|
||||||
|
* Fri Jan 27 2012 Petr Šabata <contyk@redhat.com> - 3.2.0-2
|
||||||
|
- Simplify the spec a bit thanks to the UsrMove feature
|
||||||
|
|
||||||
|
* Fri Jan 06 2012 Petr Šabata <contyk@redhat.com> - 3.2.0-1
|
||||||
|
- 3.2.0 bump
|
||||||
|
- Removing a useless, now conflicting patch (initcwnd already decumented)
|
||||||
|
|
||||||
|
* Thu Nov 24 2011 Petr Šabata <contyk@redhat.com> - 3.1.0-1
|
||||||
|
- 3.1.0 bump
|
||||||
|
- Point URL and Source to the new location on kernel.org
|
||||||
|
- Remove now obsolete defattr
|
||||||
|
- Dropping various patches now included upstream
|
||||||
|
- Dropping iproute2-2.6.25-segfault.patch; I fail to understand the reason for
|
||||||
|
this hack
|
||||||
|
|
||||||
|
* Tue Nov 15 2011 Petr Šabata <contyk@redhat.com> - 2.6.39-6
|
||||||
|
- ss -ul should display UDP CLOSED sockets (#691100)
|
||||||
|
|
||||||
|
* Thu Oct 06 2011 Petr Sabata <contyk@redhat.com> - 2.6.39-5
|
||||||
|
- Fix ss, lnstat and arpd usage and manpages
|
||||||
|
|
||||||
|
* Wed Sep 07 2011 Petr Sabata <contyk@redhat.com> - 2.6.39-4
|
||||||
|
- lnstat should dump (-d) to stdout instead of stderr (#736332)
|
||||||
|
|
||||||
|
* Tue Jul 26 2011 Petr Sabata <contyk@redhat.com> - 2.6.39-3
|
||||||
|
- Rebuild for xtables7
|
||||||
|
|
||||||
|
* Tue Jul 12 2011 Petr Sabata <contyk@redhat.com> - 2.6.39-2
|
||||||
|
- Rebuild for xtables6
|
||||||
|
|
||||||
|
* Thu Jun 30 2011 Petr Sabata <contyk@redhat.com> - 2.6.39-1
|
||||||
|
- 2.6.39 bump
|
||||||
|
|
||||||
|
* Wed Apr 27 2011 Petr Sabata <psabata@redhat.com> - 2.6.38.1-4
|
||||||
|
- Link [cr]tstat to lnstat
|
||||||
|
|
||||||
|
* Wed Apr 27 2011 Petr Sabata <psabata@redhat.com> - 2.6.38.1-3
|
||||||
|
- Install ctstat, rtstat and routef manpage symlinks
|
||||||
|
- Install m_xt & m_ipt tc modules
|
||||||
|
- Creating devel and virtual static subpackages with libnetlink
|
||||||
|
|
||||||
|
* Thu Apr 21 2011 Petr Sabata <psabata@redhat.com> - 2.6.38.1-2
|
||||||
|
- General cleanup
|
||||||
|
- Use global instead of define
|
||||||
|
- Buildroot removal
|
||||||
|
- Correcting URL and Source links
|
||||||
|
- Install genl, ifstat, routef, routel and rtpr (rhbz#697319)
|
||||||
|
|
||||||
|
* Fri Mar 18 2011 Petr Sabata <psabata@redhat.com> - 2.6.38.1-1
|
||||||
|
- 2.6.38.1 bump
|
||||||
|
|
||||||
|
* Wed Mar 16 2011 Petr Sabata <psabata@redhat.com> - 2.6.38-1
|
||||||
|
- 2.6.38 bump
|
||||||
|
|
||||||
|
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.6.37-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Jan 31 2011 Petr Sabata <psabata@redhat.com> - 2.6.37-2
|
||||||
|
- man-pages.patch update, ip(8) TYPE whitespace
|
||||||
|
|
||||||
|
* Mon Jan 10 2011 Petr Sabata <psabata@redhat.com> - 2.6.37-1
|
||||||
|
- 2.6.37 upstream release
|
||||||
|
- ss(8) improvements patch removed (included upstream)
|
||||||
|
|
||||||
|
* Wed Dec 08 2010 Petr Sabata <psabata@redhat.com> - 2.6.35-10
|
||||||
|
- fix a typo in ss(8) improvements patch, rhbz#661267
|
||||||
|
|
||||||
|
* Tue Nov 30 2010 Petr Sabata <psabata@redhat.com> - 2.6.35-9
|
||||||
|
- ss(8) improvements patch by jpopelka; should be included in 2.6.36
|
||||||
|
|
||||||
|
* Tue Nov 09 2010 Petr Sabata <psabata@redhat.com> - 2.6.35-8
|
||||||
|
- rhbz#641599, use the versioned path, man-pages.patch update, prep update
|
||||||
|
|
||||||
|
* Tue Oct 12 2010 Petr Sabata <psabata@redhat.com> - 2.6.35-7
|
||||||
|
- Do not segfault if peer name is omitted when creating a peer veth link, rhbz#642322
|
||||||
|
|
||||||
|
* Mon Oct 11 2010 Petr Sabata <psabata@redhat.com> - 2.6.35-6
|
||||||
|
- Man-pages update, rhbz#641599
|
||||||
|
|
||||||
|
* Wed Sep 29 2010 jkeating - 2.6.35-5
|
||||||
|
- Rebuilt for gcc bug 634757
|
||||||
|
|
||||||
|
* Tue Sep 21 2010 Petr Sabata <psabata@redhat.com> - 2.6.35-4
|
||||||
|
- Modified man-pages.patch to fix cbq manpage, rhbz#635877
|
||||||
|
|
||||||
|
* Tue Sep 21 2010 Petr Sabata <psabata@redhat.com> - 2.6.35-3
|
||||||
|
- Don't print routes with negative metric fix, rhbz#628739
|
||||||
|
|
||||||
|
* Wed Aug 18 2010 Petr Sabata <psabata@redhat.com> - 2.6.35-2
|
||||||
|
- 'ip route get' fix, iproute2-2.6.35-print-route.patch
|
||||||
|
- rhbz#622782
|
||||||
|
|
||||||
|
* Thu Aug 05 2010 Petr Sabata <psabata@redhat.com> - 2.6.35-1
|
||||||
|
- 2.6.35 version bump
|
||||||
|
- iproute2-tc-priority.patch removed (included in upstream now)
|
||||||
|
|
||||||
|
* Thu Jul 08 2010 Petr Sabata <psabata@redhat.com> - 2.6.34-5
|
||||||
|
- Licensing guidelines compliance fix
|
||||||
|
|
||||||
|
* Wed Jul 07 2010 Petr Sabata <psabata@redhat.com> - 2.6.34-4
|
||||||
|
- Requires: iptables >= 1.4.5, BuildRequires: iptables-devel >= 1.4.5
|
||||||
|
|
||||||
|
* Thu Jul 01 2010 Petr Sabata <psabata@redhat.com> - 2.6.34-3
|
||||||
|
- Build now runs ./configure to regenerate Makefile for ipt/xt detection
|
||||||
|
|
||||||
|
* Mon Jun 21 2010 Petr Sabata <psabata@redhat.com> - 2.6.34-2
|
||||||
|
- iproute-tc-priority.patch, rhbz#586112
|
||||||
|
|
||||||
|
* Mon Jun 21 2010 Petr Sabata <psabata@redhat.com> - 2.6.34-1
|
||||||
|
- 2.6.34 version bump
|
||||||
|
|
||||||
|
* Tue Apr 20 2010 Marcela Mašláňová <mmaslano@redhat.com> - 2.6.33-2
|
||||||
|
- 578729 6rd tunnel correctly 3979ef91de9ed17d21672aaaefd6c228485135a2
|
||||||
|
- change BR texlive to tex according to guidelines
|
||||||
|
|
||||||
|
* Thu Feb 25 2010 Marcela Mašláňová <mmaslano@redhat.com> - 2.6.33-1
|
||||||
|
- update
|
||||||
|
|
||||||
|
* Tue Jan 26 2010 Marcela Mašláňová <mmaslano@redhat.com> - 2.6.32-2
|
||||||
|
- add macvlan aka VESA support d63a9b2b1e4e3eab0d0577d0a0f412d50be1e0a7
|
||||||
|
- kernel headers 2.6.33 ab322673298bd0b8927cdd9d11f3d36af5941b93
|
||||||
|
are needed for macvlan features and probably for other added later.
|
||||||
|
- fix number of release which contains 2.6.32 kernel headers and features
|
||||||
|
but it was released as 2.6.31
|
||||||
|
|
||||||
|
* Mon Jan 4 2010 Marcela Mašláňová <mmaslano@redhat.com> - 2.6.31-1
|
||||||
|
- update to 2.6.31
|
||||||
|
|
||||||
|
* Fri Nov 27 2009 Marcela Mašláňová <mmaslano@redhat.com> - 2.6.29-5.1.20091106gita7a9ddbb
|
||||||
|
- 539232 patch cbq initscript
|
||||||
|
|
||||||
|
* Fri Nov 27 2009 Marcela Mašláňová <mmaslano@redhat.com> - 2.6.29-5.0.20091106gita7a9ddbb
|
||||||
|
- snapshot with kernel headers for 2.6.32
|
||||||
|
|
||||||
|
* Fri Oct 9 2009 Marcela Mašláňová <mmaslano@redhat.com> - 2.6.29-5.0.20091009gitdaf49fd6
|
||||||
|
- new official version isn't available but it's needed -> switch to git snapshots
|
||||||
|
|
||||||
|
* Thu Sep 24 2009 Marcela Mašláňová <mmaslano@redhat.com> - 2.6.29-5
|
||||||
|
- create missing man pages
|
||||||
|
|
||||||
|
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.6.29-4
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
|
||||||
|
|
||||||
|
* Thu Apr 23 2009 Marcela Mašláňová <mmaslano@redhat.com> - 2.6.29-3
|
||||||
|
- new iptables (xtables) bring problems to tc, when ipt is used.
|
||||||
|
rhbz#497344 still broken. tc_modules.patch brings correct paths to
|
||||||
|
xtables, but that doesn't fix whole issue.
|
||||||
|
- 497355 ip should allow creation of an IPsec SA with 'proto any'
|
||||||
|
and specified sport and dport as selectors
|
||||||
|
|
||||||
|
* Tue Apr 14 2009 Marcela Mašláňová <mmaslano@redhat.com> - 2.6.29-2
|
||||||
|
- c3651bf4763d7247e3edd4e20526a85de459041b ip6tunnel: Fix no default
|
||||||
|
display of ip4ip6 tunnels
|
||||||
|
- e48f73d6a5e90d2f883e15ccedf4f53d26bb6e74 missing arpd directory
|
||||||
|
|
||||||
|
* Wed Mar 25 2009 Marcela Mašláňová <mmaslano@redhat.com> - 2.6.29-1
|
||||||
|
- update to 2.6.29
|
||||||
|
- remove DDR patch which became part of sourc
|
||||||
|
- add patch with correct headers 1957a322c9932e1a1d2ca1fd37ce4b335ceb7113
|
||||||
|
|
||||||
|
* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.6.28-3
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
|
||||||
|
|
||||||
|
* Wed Feb 4 2009 Marcela Mašláňová <mmaslano@redhat.com> - 2.6.28-2
|
||||||
|
- 483484 install distribution files into /usr/share and also fixed
|
||||||
|
install paths in spec
|
||||||
|
- add the latest change from git which add DRR support
|
||||||
|
c86f34942a0ce9f8203c0c38f9fe9604f96be706
|
||||||
|
|
||||||
|
* Mon Jan 19 2009 Marcela Mašláňová <mmaslano@redhat.com> - 2.6.28-1
|
||||||
|
- previous two patches were included into 2.6.28 release.
|
||||||
|
- update
|
||||||
|
|
||||||
|
* Mon Jan 12 2009 Marcela Mašláňová <mmaslano@redhat.com> - 2.6.27-2
|
||||||
|
- 475130 - Negative preferred lifetimes of IPv6 prefixes/addresses
|
||||||
|
displayed incorrectly
|
||||||
|
- 472878 - “ip maddr show” in IB interface causes a stack corruption
|
||||||
|
- both patches will be probably in iproute v2.6.28
|
||||||
|
|
||||||
|
* Thu Dec 4 2008 Marcela Maslanova <mmaslano@redhat.com> - 2.6.27-1
|
||||||
|
- aead support was included into upstream version
|
||||||
|
- patch for moving libs is now deprecated
|
||||||
|
- update to 2.6.27
|
||||||
|
|
||||||
|
* Tue Aug 12 2008 Marcela Maslanova <mmaslano@redhat.com> - 2.6.26-1
|
||||||
|
- update to 2.6.26
|
||||||
|
- clean patches
|
||||||
|
|
||||||
|
* Tue Jul 22 2008 Marcela Maslanova <mmaslano@redhat.com> - 2.6.25-5
|
||||||
|
- fix iproute2-2.6.25-segfault.patch
|
||||||
|
|
||||||
|
* Thu Jul 10 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2.6.25-4
|
||||||
|
- rebuild for new db4-4.7
|
||||||
|
|
||||||
|
* Thu Jul 3 2008 Marcela Maslanova <mmaslano@redhat.com> - 2.6.25-3
|
||||||
|
- 449933 instead of failing strncpy use copying byte after byte
|
||||||
|
|
||||||
|
* Wed May 14 2008 Marcela Maslanova <mmaslano@redhat.com> - 2.6.25-2
|
||||||
|
- allow replay setting, solve also 444724
|
||||||
|
|
||||||
|
* Mon Apr 21 2008 Marcela Maslanova <mmaslano@redhat.com> - 2.6.25-1
|
||||||
|
- update
|
||||||
|
- remove patch for backward compatibility
|
||||||
|
- add patch for AEAD compatibility
|
||||||
|
|
||||||
|
* Thu Feb 21 2008 Marcela Maslanova <mmaslano@redhat.com> - 2.6.23-4
|
||||||
|
- add creating ps file again. Fix was done in texlive
|
||||||
|
|
||||||
|
* Wed Feb 6 2008 Marcela Maslanova <mmaslano@redhat.com> - 2.6.23-3
|
||||||
|
- rebuild without tetex files. It isn't working in rawhide yet. Added
|
||||||
|
new source for ps files.
|
||||||
|
- #431179 backward compatibility for previous iproute versions
|
||||||
|
|
||||||
|
* Mon Jan 21 2008 Marcela Maslanova <mmaslano@redhat.com> - 2.6.23-2
|
||||||
|
- rebuild with fix tetex and linuxdoc-tools -> manual pdf
|
||||||
|
- clean unnecessary patches
|
||||||
|
- add into spec *.so objects, new BR linux-atm-libs-devel
|
||||||
|
|
||||||
|
* Wed Oct 31 2007 Marcela Maslanova <mmaslano@redhat.com> - 2.6.23-1
|
||||||
|
- new version from upstrem 2.3.23
|
||||||
|
|
||||||
|
* Tue Oct 23 2007 Marcela Maslanova <mmaslano@redhat.com> - 2.6.22-5
|
||||||
|
- move files from /usr/lib/tc to /usr/share/tc
|
||||||
|
- remove listing files twice
|
||||||
|
|
||||||
|
* Fri Aug 31 2007 Marcela Maslanova <mmaslano@redhat.com> - 2.6.22-3
|
||||||
|
- package review #225903
|
||||||
|
|
||||||
|
* Mon Aug 27 2007 Jeremy Katz <katzj@redhat.com> - 2.6.22-2
|
||||||
|
- rebuild for new db4
|
||||||
|
|
||||||
|
* Wed Jul 11 2007 Radek Vokál <rvokal@redhat.com> - 2.6.22-1
|
||||||
|
- upgrade to 2.6.22
|
||||||
|
|
||||||
|
* Mon Mar 19 2007 Radek Vokál <rvokal@redhat.com> - 2.6.20-2
|
||||||
|
- fix broken tc-pfifo man page (#232891)
|
||||||
|
|
||||||
|
* Thu Mar 15 2007 Radek Vokál <rvokal@redhat.com> - 2.6.20-1
|
||||||
|
- upgrade to 2.6.20
|
||||||
|
|
||||||
|
* Fri Dec 15 2006 Radek Vokál <rvokal@redhat.com> - 2.6.19-1
|
||||||
|
- upgrade to 2.6.19
|
||||||
|
|
||||||
|
* Mon Dec 11 2006 Radek Vokál <rvokal@redhat.com> - 2.6.18-5
|
||||||
|
- fix snapshot version
|
||||||
|
|
||||||
|
* Fri Dec 1 2006 Radek Vokál <rvokal@redhat.com> - 2.6.18-4
|
||||||
|
- spec file cleanup
|
||||||
|
- one more rebuilt against db4
|
||||||
|
|
||||||
|
* Thu Nov 16 2006 Radek Vokál <rvokal@redhat.com> - 2.6.18-3
|
||||||
|
- fix defective manpage for tc-pfifo (#215399)
|
||||||
|
|
||||||
|
* Mon Nov 13 2006 Radek Vokál <rvokal@redhat.com> - 2.6.18-2
|
||||||
|
- rebuilt against new db4
|
||||||
|
|
||||||
|
* Tue Oct 3 2006 Radek Vokal <rvokal@redhat.com> - 2.6.18-1
|
||||||
|
- upgrade to upstream 2.6.18
|
||||||
|
- initcwnd patch merged
|
||||||
|
- bug fix for xfrm monitor
|
||||||
|
- alignment fixes for cris
|
||||||
|
- documentation corrections
|
||||||
|
|
||||||
|
* Mon Oct 2 2006 Radek Vokal <rvokal@redhat.com> - 2.6.16-7
|
||||||
|
- fix ip.8 man page, add initcwnd option
|
||||||
|
|
||||||
|
* Sun Oct 01 2006 Jesse Keating <jkeating@redhat.com> - 2.6.16-6
|
||||||
|
- rebuilt for unwind info generation, broken in gcc-4.1.1-21
|
||||||
|
|
||||||
|
* Tue Sep 19 2006 Radek Vokal <rvokal@redhat.com> - 2.6.16-5
|
||||||
|
- fix crash when resolving ip address
|
||||||
|
|
||||||
|
* Mon Aug 21 2006 Radek Vokál <rvokal@redhat.com> - 2.6.16-4
|
||||||
|
- add LOWER_UP and DORMANT flags (#202199)
|
||||||
|
- use dist tag
|
||||||
|
|
||||||
|
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 2.6.16-3.1
|
||||||
|
- rebuild
|
||||||
|
|
||||||
|
* Mon Jun 26 2006 Radek Vokál <rvokal@redhat.com> - 2.6.16-3
|
||||||
|
- improve handling of initcwnd value (#179719)
|
||||||
|
|
||||||
|
* Sun May 28 2006 Radek Vokál <rvokal@redhat.com> - 2.6.16-2
|
||||||
|
- fix BuildRequires: flex (#193403)
|
||||||
|
|
||||||
|
* Sun Mar 26 2006 Radek Vokál <rvokal@redhat.com> - 2.6.16-1
|
||||||
|
- upgrade to 2.6.16-060323
|
||||||
|
- don't hardcode /usr/lib in tc (#186607)
|
||||||
|
|
||||||
|
* Wed Feb 22 2006 Radek Vokál <rvokal@redhat.com> - 2.6.15-2
|
||||||
|
- own /usr/lib/tc (#181953)
|
||||||
|
- obsoletes shapecfg (#182284)
|
||||||
|
|
||||||
|
* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 2.6.15-1.2
|
||||||
|
- bump again for double-long bug on ppc(64)
|
||||||
|
|
||||||
|
* Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 2.6.15-1.1
|
||||||
|
- rebuilt for new gcc4.1 snapshot and glibc changes
|
||||||
|
|
||||||
|
* Tue Jan 17 2006 Radek Vokal <rvokal@redhat.com> 2.6.15-1
|
||||||
|
- upgrade to 2.6.15-060110
|
||||||
|
|
||||||
|
* Mon Dec 12 2005 Radek Vokal <rvokal@redhat.com> 2.6.14-11
|
||||||
|
- rebuilt
|
||||||
|
|
||||||
|
* Fri Dec 09 2005 Radek Vokal <rvokal@redhat.com> 2.6.14-10
|
||||||
|
- remove backup of config files (#175302)
|
||||||
|
|
||||||
|
* Fri Nov 11 2005 Radek Vokal <rvokal@redhat.com> 2.6.14-9
|
||||||
|
- use tc manpages and cbq.init from source tarball (#172851)
|
||||||
|
|
||||||
|
* Thu Nov 10 2005 Radek Vokal <rvokal@redhat.com> 2.6.14-8
|
||||||
|
- new upstream source
|
||||||
|
|
||||||
|
* Mon Oct 31 2005 Radek Vokal <rvokal@redhat.com> 2.6.14-7
|
||||||
|
- add warning to ip tunnel add command (#128107)
|
||||||
|
|
||||||
|
* Fri Oct 07 2005 Bill Nottingham <notting@redhat.com> 2.6.14-6
|
||||||
|
- update from upstream (appears to fix #170111)
|
||||||
|
|
||||||
|
* Fri Oct 07 2005 Radek Vokal <rvokal@redhat.com> 2.6.14-5
|
||||||
|
- update from upstream
|
||||||
|
- fixed host_len size for memcpy (#168903) <Matt_Domsch@dell.com>
|
||||||
|
|
||||||
|
* Fri Sep 23 2005 Radek Vokal <rvokal@redhat.com> 2.6.14-4
|
||||||
|
- add RPM_OPT_FLAGS
|
||||||
|
|
||||||
|
* Mon Sep 19 2005 Radek Vokal <rvokal@redhat.com> 2.6.14-3
|
||||||
|
- forget to apply the patch :(
|
||||||
|
|
||||||
|
* Mon Sep 19 2005 Radek Vokal <rvokal@redhat.com> 2.6.14-2
|
||||||
|
- make ip help work again (#168449)
|
||||||
|
|
||||||
|
* Wed Sep 14 2005 Radek Vokal <rvokal@redhat.com> 2.6.14-1
|
||||||
|
- upgrade to ss050901 for 2.6.14 kernel headers
|
||||||
|
|
||||||
|
* Fri Aug 26 2005 Radek Vokal <rvokal@redhat.com> 2.6.13-3
|
||||||
|
- added /sbin/cbq script and sample configuration files (#166301)
|
||||||
|
|
||||||
|
* Fri Aug 19 2005 Radek Vokal <rvokal@redhat.com> 2.6.13-2
|
||||||
|
- upgrade to iproute2-050816
|
||||||
|
|
||||||
|
* Thu Aug 11 2005 Radek Vokal <rvokal@redhat.com> 2.6.13-1
|
||||||
|
- update to snapshot for 2.6.13+ kernel
|
||||||
|
|
||||||
|
* Tue May 24 2005 Radek Vokal <rvokal@redhat.com> 2.6.11-2
|
||||||
|
- removed useless initvar patch (#150798)
|
||||||
|
- new upstream source
|
||||||
|
|
||||||
|
* Tue Mar 15 2005 Radek Vokal <rvokal@redhat.com> 2.6.11-1
|
||||||
|
- update to iproute-2.6.11
|
||||||
|
|
||||||
|
* Fri Mar 04 2005 Radek Vokal <rvokal@redhat.com> 2.6.10-2
|
||||||
|
- gcc4 rebuilt
|
||||||
|
|
||||||
|
* Wed Feb 16 2005 Radek Vokal <rvokal@redhat.com> 2.6.10-1
|
||||||
|
- update to iproute-2.6.10
|
||||||
|
|
||||||
|
* Thu Dec 23 2004 Radek Vokal <rvokal@redhat.com> 2.6.9-6
|
||||||
|
- added arpd into sbin
|
||||||
|
|
||||||
|
* Mon Nov 29 2004 Radek Vokal <rvokal@redhat.com> 2.6.9-5
|
||||||
|
- debug info removed from makefile and from spec (#140891)
|
||||||
|
|
||||||
|
* Tue Nov 16 2004 Radek Vokal <rvokal@redhat.com> 2.6.9-4
|
||||||
|
- source file updated from snapshot version
|
||||||
|
- endian patch adding <endian.h>
|
||||||
|
|
||||||
|
* Sat Sep 18 2004 Joshua Blanton <jblanton@cs.ohiou.edu> 2.6.9-3
|
||||||
|
- added installation of netem module for tc
|
||||||
|
|
||||||
|
* Mon Sep 06 2004 Radek Vokal <rvokal@redhat.com> 2.6.9-2
|
||||||
|
- fixed possible buffer owerflow, path by Steve Grubb <linux_4ever@yahoo.com>
|
||||||
|
|
||||||
|
* Wed Sep 01 2004 Radek Vokal <rvokal@redhat.com> 2.6.9-1
|
||||||
|
- updated to iproute-2.6.9, spec file change, patches cleared
|
||||||
|
|
||||||
|
* Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com>
|
||||||
|
- rebuilt
|
||||||
|
|
||||||
|
* Wed May 26 2004 Phil Knirsch <pknirsch@redhat.com> 2.4.7-16
|
||||||
|
- Took tons of manpages from debian, much more complete (#123952).
|
||||||
|
|
||||||
|
* Thu May 06 2004 Phil Knirsch <pknirsch@redhat.com> 2.4.7-15
|
||||||
|
- rebuilt
|
||||||
|
|
||||||
|
* Thu May 06 2004 Phil Knirsch <pknirsch@redhat.com> 2.4.7-13.2
|
||||||
|
- Built security errata version for FC1.
|
||||||
|
|
||||||
|
* Wed Apr 21 2004 Phil Knirsch <pknirsch@redhat.com> 2.4.7-14
|
||||||
|
- Fixed -f option for ss (#118355).
|
||||||
|
- Small description fix (#110997).
|
||||||
|
- Added initialization of some vars (#74961).
|
||||||
|
- Added patch to initialize "default" rule as well (#60693).
|
||||||
|
|
||||||
|
* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com>
|
||||||
|
- rebuilt
|
||||||
|
|
||||||
|
* Wed Nov 05 2003 Phil Knirsch <pknirsch@redhat.com> 2.4.7-12
|
||||||
|
- Security errata for netlink (CAN-2003-0856).
|
||||||
|
|
||||||
|
* Thu Oct 23 2003 Phil Knirsch <pknirsch@redhat.com>
|
||||||
|
- Updated to latest version. Used by other distros, so seems stable. ;-)
|
||||||
|
- Quite a few patches needed updating in that turn.
|
||||||
|
- Added ss (#107363) and several other new nifty tools.
|
||||||
|
|
||||||
|
* Tue Jun 17 2003 Phil Knirsch <pknirsch@redhat.com>
|
||||||
|
- rebuilt
|
||||||
|
|
||||||
|
* Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com>
|
||||||
|
- rebuilt
|
||||||
|
|
||||||
|
* Wed Jan 22 2003 Tim Powers <timp@redhat.com>
|
||||||
|
- rebuilt
|
||||||
|
|
||||||
|
* Thu Jan 16 2003 Phil Knirsch <pknirsch@redhat.com> 2.4.7-7
|
||||||
|
- Added htb3-tc patch from http://luxik.cdi.cz/~devik/qos/htb/ (#75486).
|
||||||
|
|
||||||
|
* Fri Oct 11 2002 Bill Nottingham <notting@redhat.com> 2.4.7-6
|
||||||
|
- remove flags patch at author's request
|
||||||
|
|
||||||
|
* Fri Jun 21 2002 Tim Powers <timp@redhat.com>
|
||||||
|
- automated rebuild
|
||||||
|
|
||||||
|
* Wed Jun 19 2002 Phil Knirsch <pknirsch@redhat.com> 2.4.7-4
|
||||||
|
- Don't forcibly strip binaries
|
||||||
|
|
||||||
|
* Mon May 27 2002 Phil Knirsch <pknirsch@redhat.com> 2.4.7-3
|
||||||
|
- Fixed missing diffserv and atm support in config (#57278).
|
||||||
|
- Fixed inconsistent numeric base problem for command line (#65473).
|
||||||
|
|
||||||
|
* Tue May 14 2002 Phil Knirsch <pknirsch@redhat.com> 2.4.7-2
|
||||||
|
- Added patch to fix crosscompiling by Adrian Linkins.
|
||||||
|
|
||||||
|
* Fri Mar 15 2002 Phil Knirsch <pknirsch@redhat.com> 2.4.7-1
|
||||||
|
- Update to latest stable release 2.4.7-now-ss010824.
|
||||||
|
- Added simple man page for ip.
|
||||||
|
|
||||||
|
* Wed Aug 8 2001 Bill Nottingham <notting@redhat.com>
|
||||||
|
- allow setting of allmulti & promisc flags (#48669)
|
||||||
|
|
||||||
|
* Mon Jul 02 2001 Than Ngo <than@redhat.com>
|
||||||
|
- fix build problem in beehive if kernel-sources is not installed
|
||||||
|
|
||||||
|
* Fri May 25 2001 Helge Deller <hdeller@redhat.de>
|
||||||
|
- updated to iproute2-2.2.4-now-ss001007.tar.gz
|
||||||
|
- bzip2 source tar file
|
||||||
|
- "License" replaces "Copyright"
|
||||||
|
- added "BuildPrereq: tetex-latex tetex-dvips psutils"
|
||||||
|
- rebuilt for 7.2
|
||||||
|
|
||||||
|
* Tue May 1 2001 Bill Nottingham <notting@redhat.com>
|
||||||
|
- use the system headers - the included ones are broken
|
||||||
|
- ETH_P_ECHO went away
|
||||||
|
|
||||||
|
* Sat Jan 6 2001 Jeff Johnson <jbj@redhat.com>
|
||||||
|
- test for specific KERNEL_INCLUDE directories.
|
||||||
|
|
||||||
|
* Thu Oct 12 2000 Than Ngo <than@redhat.com>
|
||||||
|
- rebuild for 7.1
|
||||||
|
|
||||||
|
* Thu Oct 12 2000 Than Ngo <than@redhat.com>
|
||||||
|
- add default configuration files for iproute (Bug #10549, #18887)
|
||||||
|
|
||||||
|
* Tue Jul 25 2000 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
- fix include-glibc/ to cope with glibc 2.2 new resolver headers
|
||||||
|
|
||||||
|
* Thu Jul 13 2000 Prospector <bugzilla@redhat.com>
|
||||||
|
- automatic rebuild
|
||||||
|
|
||||||
|
* Sun Jun 18 2000 Than Ngo <than@redhat.de>
|
||||||
|
- rebuilt in the new build environment
|
||||||
|
- use RPM macros
|
||||||
|
- handle RPM_OPT_FLAGS
|
||||||
|
|
||||||
|
* Sat Jun 03 2000 Than Ngo <than@redhat.de>
|
||||||
|
- fix iproute to build with new glibc
|
||||||
|
|
||||||
|
* Fri May 26 2000 Ngo Than <than@redhat.de>
|
||||||
|
- update to 2.2.4-now-ss000305
|
||||||
|
- add configuration files
|
||||||
|
|
||||||
|
* Mon Sep 13 1999 Bill Nottingham <notting@redhat.com>
|
||||||
|
- strip binaries
|
||||||
|
|
||||||
|
* Mon Aug 16 1999 Cristian Gafton <gafton@redhat.com>
|
||||||
|
- first build
|
1
sources
Normal file
1
sources
Normal file
@ -0,0 +1 @@
|
|||||||
|
SHA512 (iproute2-5.8.0.tar.xz) = f2a3f7dcf5cb39ca7cd14f0e40e45641eccf4b93427c527a09fd789ac8621c5c3359769ca61fcc8bab7e915edd943c39b7c3e15cbfc497187aa6271eed0a9152
|
64
tests/bridge-utility/Makefile
Normal file
64
tests/bridge-utility/Makefile
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# Makefile of /CoreOS/iproute/Sanity/bridge-utility
|
||||||
|
# Description: Test basic bridge funcionality
|
||||||
|
# Author: David Spurek <dspurek@redhat.com>
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
|
||||||
|
#
|
||||||
|
# This copyrighted material is made available to anyone wishing
|
||||||
|
# to use, modify, copy, or redistribute it subject to the terms
|
||||||
|
# and conditions of the GNU General Public License version 2.
|
||||||
|
#
|
||||||
|
# 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, write to the Free
|
||||||
|
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
# Boston, MA 02110-1301, USA.
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
export TEST=/CoreOS/iproute/Sanity/bridge-utility
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
test -x runtest.sh || chmod a+x runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: David Spurek <dspurek@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Test basic bridge funcionality" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 15m" >> $(METADATA)
|
||||||
|
@echo "RunFor: iproute" >> $(METADATA)
|
||||||
|
@echo "Requires: iproute" >> $(METADATA)
|
||||||
|
@echo "Requires: bridge-utils" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
3
tests/bridge-utility/PURPOSE
Normal file
3
tests/bridge-utility/PURPOSE
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
PURPOSE of /CoreOS/iproute/Sanity/bridge-utility
|
||||||
|
Description: Test basic bridge funcionality
|
||||||
|
Author: David Spurek <dspurek@redhat.com>
|
268
tests/bridge-utility/runtest.sh
Executable file
268
tests/bridge-utility/runtest.sh
Executable file
@ -0,0 +1,268 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/bridge-utility
|
||||||
|
# Description: Test basic bridge funcionality
|
||||||
|
# Author: David Spurek <dspurek@redhat.com>
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
|
||||||
|
#
|
||||||
|
# This copyrighted material is made available to anyone wishing
|
||||||
|
# to use, modify, copy, or redistribute it subject to the terms
|
||||||
|
# and conditions of the GNU General Public License version 2.
|
||||||
|
#
|
||||||
|
# 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, write to the Free
|
||||||
|
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
# Boston, MA 02110-1301, USA.
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/bin/rhts-environment.sh || exit 1
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="iproute"
|
||||||
|
|
||||||
|
PACKAGES="$PACKAGE"
|
||||||
|
rlIsRHEL 6 && PACKAGES=( ${PACKAGES[@]} "bridge-utils" )
|
||||||
|
vxlan_name="testvxlan"
|
||||||
|
bridge_name="testbridge"
|
||||||
|
lsmod | grep dummy
|
||||||
|
dummy_loaded=$?
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
# Check reqiured packages.
|
||||||
|
for P in ${PACKAGES[@]}; do rlCheckRpm $P || rlDie "Package $P is missing"; done
|
||||||
|
|
||||||
|
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
|
||||||
|
rlRun "pushd $TmpDir"
|
||||||
|
no_dummy=0
|
||||||
|
if [ $dummy_loaded -eq 1 ] ; then
|
||||||
|
# dummy module doesn't loaded before the test
|
||||||
|
modprobe dummy numdummies=2
|
||||||
|
else
|
||||||
|
# dummy module loaded before the test, backup number of loaded dummy devices (nmdumies parameter), it is doesn't show under /sys/module/dummy/parameters
|
||||||
|
dummies_count=`ip a | grep dummy | tail -n 1 | sed -r 's/.*dummy([0-9]+).*/\1/'`
|
||||||
|
if [ -z $dummies_count] ; then
|
||||||
|
# dummy module is loaded but no dummy device exists
|
||||||
|
no_dummy=1
|
||||||
|
else
|
||||||
|
# get correct count, dummy0 is the first
|
||||||
|
let "dummies_count=$dummies_count+1"
|
||||||
|
fi
|
||||||
|
rmmod dummy
|
||||||
|
modprobe dummy numdummies=2
|
||||||
|
fi
|
||||||
|
rlRun "ip addr flush dev dummy0"
|
||||||
|
rlRun "ip link set dummy0 up"
|
||||||
|
rlRun "ip addr flush dev dummy1"
|
||||||
|
rlRun "ip link set dummy1 up"
|
||||||
|
rlRun "ip addr add 127.0.0.13/24 dev dummy0" 0 "Setting IPv4 address to
|
||||||
|
dummy0 interface"
|
||||||
|
rlRun "ip addr add 127.0.0.14/24 dev dummy1" 0 "Setting IPv4 address to
|
||||||
|
dummy1 interface"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest "Test bridge fdb basic funcionality with vxlan device"
|
||||||
|
rlRun "ip link add $vxlan_name type vxlan id 10 group 239.0.0.10 ttl 4 dev dummy0" 0 "add vxlan interface"
|
||||||
|
rlRun "ip addr add 192.168.1.1/24 broadcast 192.168.1.255 dev $vxlan_name" 0 "setting address to vxlan interface"
|
||||||
|
rlRun "ip -d link show $vxlan_name" 0 "show details about vxlan device"
|
||||||
|
|
||||||
|
vxlan_ether_address=`ip -d link show $vxlan_name | grep link/ether | awk '{print $2}'`
|
||||||
|
echo "ethernet address of vxlan device is: $vxlan_ether_address"
|
||||||
|
|
||||||
|
# add new entry to bridge fdb database (device must by type vxlan)
|
||||||
|
rlRun "bridge fdb add $vxlan_ether_address dst 192.19.0.2 dev $vxlan_name"
|
||||||
|
|
||||||
|
# check if entry was successfuly added
|
||||||
|
bridge fdb show dev $vxlan_name &> bridge_show.out
|
||||||
|
cat bridge_show.out
|
||||||
|
rlAssertGrep "$vxlan_ether_address dst 192.19.0.2" bridge_show.out "-i"
|
||||||
|
|
||||||
|
# try replace entry in bridge fdb database
|
||||||
|
rlRun "bridge fdb replace $vxlan_ether_address dst 192.19.0.3 dev $vxlan_name"
|
||||||
|
|
||||||
|
# check if entry was successfuly changed
|
||||||
|
bridge fdb show dev $vxlan_name &> bridge_show.out
|
||||||
|
cat bridge_show.out
|
||||||
|
rlAssertGrep "$vxlan_ether_address dst 192.19.0.3" bridge_show.out "-i"
|
||||||
|
|
||||||
|
rlRun "bridge fdb del $vxlan_ether_address dev $vxlan_name"
|
||||||
|
|
||||||
|
# check if entry was successfuly deleted
|
||||||
|
# 'default' entry added by ip link command should be still listed
|
||||||
|
bridge fdb show dev $vxlan_name &> bridge_show.out
|
||||||
|
cat bridge_show.out
|
||||||
|
rlAssertNotGrep "$vxlan_ether_address dst 192.19.0.2" bridge_show.out "-i"
|
||||||
|
rlAssertGrep "dst 239.0.0.10 via dummy0" bridge_show.out "-i"
|
||||||
|
|
||||||
|
# add new entry to bridge fdb database with port,vni and via options
|
||||||
|
rlRun "bridge fdb add $vxlan_ether_address dst 192.19.0.2 dev $vxlan_name port 10000 vni 100 via dummy0"
|
||||||
|
# check if entry was successfuly added
|
||||||
|
bridge fdb show dev $vxlan_name &> bridge_show.out
|
||||||
|
cat bridge_show.out
|
||||||
|
rlAssertGrep "$vxlan_ether_address dst 192.19.0.2 port 10000 vni 100 via dummy0" bridge_show.out "-i"
|
||||||
|
|
||||||
|
rlRun "bridge fdb del $vxlan_ether_address dev $vxlan_name"
|
||||||
|
|
||||||
|
# add new entry to bridge fdb database with self option
|
||||||
|
rlRun "bridge fdb add $vxlan_ether_address dst 192.19.0.2 dev $vxlan_name self"
|
||||||
|
# check if entry was successfuly added
|
||||||
|
bridge fdb show dev $vxlan_name &> bridge_show.out
|
||||||
|
cat bridge_show.out
|
||||||
|
rlAssertGrep "$vxlan_ether_address dst 192.19.0.2 self" bridge_show.out "-i"
|
||||||
|
|
||||||
|
# replace entry in bridge fdb database with temp option
|
||||||
|
rlRun "bridge fdb replace $vxlan_ether_address dst 192.19.0.2 dev $vxlan_name temp"
|
||||||
|
# check if entry was successfuly changed
|
||||||
|
bridge fdb show dev $vxlan_name &> bridge_show.out
|
||||||
|
cat bridge_show.out
|
||||||
|
rlAssertGrep "$vxlan_ether_address dst 192.19.0.2 self static" bridge_show.out "-i"
|
||||||
|
|
||||||
|
# replace entry in bridge fdb database with local option
|
||||||
|
rlRun "bridge fdb replace $vxlan_ether_address dst 192.19.0.2 dev $vxlan_name local"
|
||||||
|
# check if entry was successfuly changed
|
||||||
|
bridge fdb show dev $vxlan_name &> bridge_show.out
|
||||||
|
cat bridge_show.out
|
||||||
|
rlAssertGrep "$vxlan_ether_address dst 192.19.0.2 self permanent" bridge_show.out "-i"
|
||||||
|
|
||||||
|
# replace entry in bridge fdb database with router option
|
||||||
|
rlRun "bridge fdb replace $vxlan_ether_address dst 192.19.0.2 dev $vxlan_name router"
|
||||||
|
# check if entry was successfuly changed
|
||||||
|
bridge fdb show dev $vxlan_name &> bridge_show.out
|
||||||
|
cat bridge_show.out
|
||||||
|
rlAssertGrep "$vxlan_ether_address dst 192.19.0.2 self router permanent" bridge_show.out "-i"
|
||||||
|
|
||||||
|
rlRun "bridge fdb del $vxlan_ether_address dev $vxlan_name"
|
||||||
|
rlRun "ip link del $vxlan_name" 0
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest "Test bridge fdb basic funcionality with bridge device, test bridge link set command"
|
||||||
|
# on rhels < 7 must be bridge device added with brctl (add type bridge is not supported)
|
||||||
|
rlIsRHEL '>=7' && rlRun "ip link add $bridge_name type bridge" 0 || rlRun "brctl addbr $bridge_name" 0
|
||||||
|
|
||||||
|
if rlIsRHEL '>=7'; then
|
||||||
|
rlRun "ip link set dummy0 master $bridge_name" 0 "Add dummy interface to bridge"
|
||||||
|
rlRun "bridge link show dev dummy0"
|
||||||
|
# test bridge link set, command is not supported on rhel < 7 (->ndo_bridge_setlink() is not in our kernel.)
|
||||||
|
|
||||||
|
rlRun "bridge link set dev dummy0 cost 10"
|
||||||
|
rlRun "bridge link show dev dummy0 &> bridge_show.out" 0
|
||||||
|
cat bridge_show.out
|
||||||
|
rlAssertGrep "dummy0.*cost 10 $" bridge_show.out "-i"
|
||||||
|
|
||||||
|
# add new entry to bridge fdb database with self option
|
||||||
|
rlRun "bridge fdb add 00:1b:21:55:23:61 dev dummy0 self"
|
||||||
|
bridge fdb show dev dummy0 &> bridge_show.out
|
||||||
|
cat bridge_show.out
|
||||||
|
rlAssertGrep "00:1b:21:55:23:61 self" bridge_show.out "-i"
|
||||||
|
# add new entry to bridge fdb database with master option
|
||||||
|
rlRun "bridge fdb add 00:1b:21:55:23:62 dev dummy0 master"
|
||||||
|
bridge fdb show dev dummy0 &> bridge_show.out
|
||||||
|
cat bridge_show.out
|
||||||
|
rlAssertGrep "00:1b:21:55:23:62 vlan 1" bridge_show.out "-i"
|
||||||
|
|
||||||
|
# add new entry to bridge fdb database with master and self options (entries for both should be added)
|
||||||
|
rlRun "bridge fdb add 00:1b:21:55:23:63 dev dummy0 self master"
|
||||||
|
bridge fdb show dev dummy0 &> bridge_show.out
|
||||||
|
cat bridge_show.out
|
||||||
|
rlAssertGrep "00:1b:21:55:23:63 self" bridge_show.out "-i"
|
||||||
|
rlAssertGrep "00:1b:21:55:23:63 vlan 1" bridge_show.out "-i"
|
||||||
|
|
||||||
|
else
|
||||||
|
rlRun "brctl addif $bridge_name dummy0" 0 "Add dummy interface to bridge"
|
||||||
|
rlRun "brctl show $bridge_name"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rlIsRHEL '>=7' && rlRun "ip link set dummy0 nomaster" 0 "Remove dummy vlan interface from bridge" || rlRun "brctl delif $bridge_name dummy0" 0 "Remove dummy interface from bridge"
|
||||||
|
|
||||||
|
rlIsRHEL '>=7' && rlRun "ip link del $bridge_name" 0 || rlRun "brctl delbr $bridge_name" 0
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest "Test bridge vlan basic funcionality"
|
||||||
|
# on rhels < 7 must be bridge device added with brctl (add type bridge is not supported)
|
||||||
|
rlIsRHEL '>=7' && rlRun "ip link add $bridge_name type bridge" 0 || rlRun "brctl addbr $bridge_name" 0
|
||||||
|
|
||||||
|
rlRun "ip link add link dummy0 name dummy0.10 type vlan id 10"
|
||||||
|
if rlIsRHEL '>=7' ; then
|
||||||
|
rlRun "ip link set dummy0.10 master $bridge_name" 0 "Add dummy vlan interface to bridge"
|
||||||
|
rlRun "bridge link show dev dummy0.10"
|
||||||
|
else
|
||||||
|
rlRun "brctl addif $bridge_name dummy0.10" 0 "Add dummy vlan interface to bridge"
|
||||||
|
rlRun "brctl show $bridge_name"
|
||||||
|
fi
|
||||||
|
# bridge vlan is not supported on rhel < 6.8
|
||||||
|
if rlIsRHEL '>=7' || rlIsRHEL '>=6.8' || rlIsFedora; then
|
||||||
|
rlRun "bridge vlan add dev dummy0.10 vid 5" 0
|
||||||
|
else
|
||||||
|
rlRun "bridge vlan add dev dummy0.10 vid 5" 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# test correct funcionality only on rhel 7
|
||||||
|
if rlIsRHEL '>=7' ; then
|
||||||
|
bridge vlan &> bridge_vlan.out
|
||||||
|
cat bridge_vlan.out
|
||||||
|
#rlAssertGrep "dummy0.10.*5" bridge_vlan.out "-i"
|
||||||
|
#rlAssertGrep "dummy0.10.*10" bridge_vlan.out "-i"
|
||||||
|
rlRun "grep -A 2 'dummy0.10' bridge_vlan.out | grep '5'"
|
||||||
|
|
||||||
|
rlRun "bridge vlan del dev dummy0.10 vid 5"
|
||||||
|
bridge vlan &> bridge_vlan.out
|
||||||
|
cat bridge_vlan.out
|
||||||
|
#rlAssertNotGrep "dummy0.10" bridge_vlan.out "-i"
|
||||||
|
rlRun "grep -A 2 'dummy0.10' bridge_vlan.out | grep '5'" 1
|
||||||
|
fi
|
||||||
|
rlIsRHEL '>=7' && rlRun "ip link set dummy0.10 nomaster" 0 "Remove dummy vlan interface from bridge" || rlRun "brctl delif $bridge_name dummy0.10" 0 "Remove dummy vlan interface from bridge"
|
||||||
|
|
||||||
|
rlRun "ip link del dev dummy0.10"
|
||||||
|
|
||||||
|
rlIsRHEL '>=7' && rlRun "ip link del $bridge_name" 0 || rlRun "brctl delbr $bridge_name" 0
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest "Test bridge mdb basic funcionality"
|
||||||
|
rlRun "bridge mdb show" 0
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
if rlIsRHEL '>=7'; then
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlRun "ip link add test_bridge type bridge"
|
||||||
|
rlRun "bridge fdb show | grep 'dev test_bridge' | grep 'master test_bridge'"
|
||||||
|
rlRun "ip link del test_bridge"
|
||||||
|
rlPhaseEnd
|
||||||
|
fi
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlRun "ip route flush dev dummy0"
|
||||||
|
rlRun "ip link set dummy0 down"
|
||||||
|
rlRun "ip addr flush dev dummy0"
|
||||||
|
rlRun "ip route flush dev dummy1"
|
||||||
|
rlRun "ip link set dummy1 down"
|
||||||
|
rlRun "ip addr flush dev dummy1"
|
||||||
|
if [ $dummy_loaded -eq 1 ] ; then
|
||||||
|
rmmod dummy
|
||||||
|
else
|
||||||
|
rmmod dummy
|
||||||
|
if [ $no_dummy -eq 1 ] ; then
|
||||||
|
# load dummy module and delete dummy0 with ip link
|
||||||
|
modprobe dummy
|
||||||
|
rlIsRHEL '>=7' && rlRun "ip link del dummy0"
|
||||||
|
else
|
||||||
|
modprobe dummy numdummies=$dummies_count
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
rlRun "service network restart" 0,1 "Restarting network, just for sure"
|
||||||
|
rlRun "popd"
|
||||||
|
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
47
tests/ip-address-label-sanity-test/Makefile
Normal file
47
tests/ip-address-label-sanity-test/Makefile
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-address-label-sanity-test
|
||||||
|
# Description: Test basic ip address label funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
export TEST=/CoreOS/iproute/Sanity/ip-address-sanity-test
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
test -x runtest.sh || chmod a+x runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: Susant Sahani <susant@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Test basic ip address label funcionality" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 15m" >> $(METADATA)
|
||||||
|
@echo "RunFor: iproute" >> $(METADATA)
|
||||||
|
@echo "Requires: iproute" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
3
tests/ip-address-label-sanity-test/PURPOSE
Normal file
3
tests/ip-address-label-sanity-test/PURPOSE
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
PURPOSE of /CoreOS/iproute/Sanity/ip-address-label-sanity-test
|
||||||
|
Description: Test basic ip address label funcionality
|
||||||
|
Author: Susant Sahani <susant@redhat.com>
|
89
tests/ip-address-label-sanity-test/ip-address-label-tests.py
Executable file
89
tests/ip-address-label-sanity-test/ip-address-label-tests.py
Executable file
@ -0,0 +1,89 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-address-label-sanity-test
|
||||||
|
# Description: Test basic ip addrlabel funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
# ~~~
|
||||||
|
|
||||||
|
import errno
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import unittest
|
||||||
|
import subprocess
|
||||||
|
import signal
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
def setUpModule():
|
||||||
|
|
||||||
|
if shutil.which('ip') is None:
|
||||||
|
raise OSError(errno.ENOENT, 'ip not found')
|
||||||
|
|
||||||
|
class IPLinkUtilities():
|
||||||
|
|
||||||
|
def link_exists(self, link):
|
||||||
|
|
||||||
|
self.assertTrue(os.path.exists(os.path.join('/sys/class/net', link)))
|
||||||
|
|
||||||
|
def add_dummy(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dummy-test', 'type', 'dummy'])
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
def del_dummy(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'dummy-test'])
|
||||||
|
|
||||||
|
class IPAddressLabelTests(unittest.TestCase, IPLinkUtilities):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.add_dummy()
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.del_dummy()
|
||||||
|
|
||||||
|
def test_add_address_label(self):
|
||||||
|
|
||||||
|
subprocess.call("ip addrlabel add prefix 2001:6f8:12d8:2::/64 label 200", shell=True)
|
||||||
|
subprocess.call("ip addrlabel add prefix 2001:6f8:900:8cbc::/64 label 300", shell=True)
|
||||||
|
subprocess.call("ip addrlabel add prefix 2001:4dd0:ff00:834::/64 label 200", shell=True)
|
||||||
|
subprocess.call("ip addrlabel add prefix 2a01:238:423d:8800::/64 label 300", shell=True)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'addrlabel']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "prefix 2001:6f8:12d8:2::/64 label 200")
|
||||||
|
self.assertRegex(output, "prefix 2001:6f8:900:8cbc::/64 label 300")
|
||||||
|
self.assertRegex(output, "prefix 2001:4dd0:ff00:834::/64 label 200")
|
||||||
|
self.assertRegex(output, "prefix 2a01:238:423d:8800::/64 label 300")
|
||||||
|
|
||||||
|
subprocess.call("ip addrlabel del prefix 2001:6f8:12d8:2::/64 label 200", shell=True)
|
||||||
|
subprocess.call("ip addrlabel del prefix 2001:6f8:900:8cbc::/64 label 300", shell=True)
|
||||||
|
subprocess.call("ip addrlabel del prefix 2001:4dd0:ff00:834::/64 label 200", shell=True)
|
||||||
|
subprocess.call("ip addrlabel del prefix 2a01:238:423d:8800::/64 label 300", shell=True)
|
||||||
|
|
||||||
|
def test_add_address_label_dev(self):
|
||||||
|
|
||||||
|
subprocess.call("ip addrlabel add prefix 2001:6f8:12d8:2::/64 label 200 dev dummy-test", shell=True)
|
||||||
|
subprocess.call("ip addrlabel add prefix 2001:6f8:900:8cbc::/64 label 300 dev dummy-test", shell=True)
|
||||||
|
subprocess.call("ip addrlabel add prefix 2001:4dd0:ff00:834::/64 label 200 dev dummy-test", shell=True)
|
||||||
|
subprocess.call("ip addrlabel add prefix 2a01:238:423d:8800::/64 label 300 dev dummy-test", shell=True)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'addrlabel']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "prefix 2001:6f8:12d8:2::/64 dev dummy-test label 200")
|
||||||
|
self.assertRegex(output, "prefix 2001:6f8:900:8cbc::/64 dev dummy-test label 300")
|
||||||
|
self.assertRegex(output, "prefix 2001:4dd0:ff00:834::/64 dev dummy-test label 200")
|
||||||
|
self.assertRegex(output, "prefix 2a01:238:423d:8800::/64 dev dummy-test label 300")
|
||||||
|
|
||||||
|
subprocess.call("ip addrlabel del prefix 2001:6f8:12d8:2::/64 label 200 dev dummy-test", shell=True)
|
||||||
|
subprocess.call("ip addrlabel del prefix 2001:6f8:900:8cbc::/64 label 300 dev dummy-test", shell=True)
|
||||||
|
subprocess.call("ip addrlabel del prefix 2001:4dd0:ff00:834::/64 label 200 dev dummy-test", shell=True)
|
||||||
|
subprocess.call("ip addrlabel del prefix 2a01:238:423d:8800::/64 label 300 dev dummy-test", shell=True)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout,
|
||||||
|
verbosity=2))
|
34
tests/ip-address-label-sanity-test/runtest.sh
Executable file
34
tests/ip-address-label-sanity-test/runtest.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-address-label-sanity-test
|
||||||
|
# Description: Test basic ip address label funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="iproute"
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlAssertRpm $PACKAGE
|
||||||
|
rlRun "cp ip-address-label-tests.py /usr/bin"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlLog "ip address label tests"
|
||||||
|
rlRun "/usr/bin/python3 /usr/bin/ip-address-label-tests.py"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlRun "rm /usr/bin/ip-address-label-tests.py"
|
||||||
|
rlLog "ip address label tests done"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
||||||
|
|
||||||
|
rlGetTestState
|
47
tests/ip-address-sanity-test/Makefile
Normal file
47
tests/ip-address-sanity-test/Makefile
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-address-sanity-test
|
||||||
|
# Description: Test basic ip address funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
export TEST=/CoreOS/iproute/Sanity/ip-address-sanity-test
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
test -x runtest.sh || chmod a+x runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: Susant Sahani <susant@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Test basic ip address funcionality" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 15m" >> $(METADATA)
|
||||||
|
@echo "RunFor: iproute" >> $(METADATA)
|
||||||
|
@echo "Requires: iproute" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
3
tests/ip-address-sanity-test/PURPOSE
Normal file
3
tests/ip-address-sanity-test/PURPOSE
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
PURPOSE of /CoreOS/iproute/Sanity/ip-address-sanity-test
|
||||||
|
Description: Test basic ip address funcionality
|
||||||
|
Author: Susant Sahani <susant@redhat.com>
|
109
tests/ip-address-sanity-test/ip-address-tests.py
Executable file
109
tests/ip-address-sanity-test/ip-address-tests.py
Executable file
@ -0,0 +1,109 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-address-sanity-test
|
||||||
|
# Description: Test basic ip address funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
# ~~~
|
||||||
|
|
||||||
|
import errno
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import unittest
|
||||||
|
import subprocess
|
||||||
|
import signal
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
def setUpModule():
|
||||||
|
|
||||||
|
if shutil.which('ip') is None:
|
||||||
|
raise OSError(errno.ENOENT, 'ip not found')
|
||||||
|
|
||||||
|
class IPLinkUtilities():
|
||||||
|
|
||||||
|
def link_exists(self, link):
|
||||||
|
|
||||||
|
self.assertTrue(os.path.exists(os.path.join('/sys/class/net', link)))
|
||||||
|
|
||||||
|
def add_dummy(self):
|
||||||
|
""" Setup """
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dummy-test', 'type', 'dummy'])
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
def del_dummy(self):
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'dummy-test'])
|
||||||
|
|
||||||
|
class IPAddressTests(unittest.TestCase, IPLinkUtilities):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.add_dummy()
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.del_dummy()
|
||||||
|
|
||||||
|
def test_add_address(self):
|
||||||
|
|
||||||
|
r = subprocess.call("ip address add 192.168.1.200/24 dev dummy-test", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'address', 'show', 'dev', 'dummy-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, "192.168.1.200")
|
||||||
|
|
||||||
|
def test_add_broadcast_address_label(self):
|
||||||
|
|
||||||
|
r = subprocess.call("ip addr add 192.168.1.50/24 brd + dev dummy-test label dummy-test-Home", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'address', 'show', 'dev', 'dummy-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, "192.168.1.50")
|
||||||
|
self.assertRegex(output, "192.168.1.255")
|
||||||
|
self.assertRegex(output, "dummy-test-Home")
|
||||||
|
|
||||||
|
def test_del_address(self):
|
||||||
|
|
||||||
|
r = subprocess.call("ip address add 192.168.1.200/24 dev dummy-test", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'address', 'show', 'dev', 'dummy-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, "192.168.1.200")
|
||||||
|
|
||||||
|
r = subprocess.call("ip address del 192.168.1.200/24 dev dummy-test", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'address', 'show', 'dev', 'dummy-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertNotRegex(output, "192.168.1.200")
|
||||||
|
|
||||||
|
def test_add_address_scope(self):
|
||||||
|
|
||||||
|
r = subprocess.call("ip address add 192.168.1.200/24 dev dummy-test scope host", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'address', 'show', 'dev', 'dummy-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, "192.168.1.200")
|
||||||
|
self.assertRegex(output, "host")
|
||||||
|
|
||||||
|
def test_add_address_lifetime(self):
|
||||||
|
|
||||||
|
r = subprocess.call("ip address add 192.168.1.200/24 dev dummy-test valid_lft 1000 preferred_lft 500", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'address', 'show', 'dev', 'dummy-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, "192.168.1.200")
|
||||||
|
self.assertRegex(output, "1000sec")
|
||||||
|
self.assertRegex(output, "500sec")
|
||||||
|
|
||||||
|
def test_add_ipv6_address(self):
|
||||||
|
|
||||||
|
r = subprocess.call("ip -6 addr add 2001:0db8:0:f101::1/64 dev dummy-test", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'address', 'show', 'dev', 'dummy-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, "2001:db8:0:f101::1")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout,
|
||||||
|
verbosity=2))
|
34
tests/ip-address-sanity-test/runtest.sh
Executable file
34
tests/ip-address-sanity-test/runtest.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-address-sanity-test
|
||||||
|
# Description: Test basic ip address funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="iproute"
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlAssertRpm $PACKAGE
|
||||||
|
rlRun "cp ip-address-tests.py /usr/bin"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlLog "ip address tests"
|
||||||
|
rlRun "/usr/bin/python3 /usr/bin/ip-address-tests.py"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlRun "rm /usr/bin/ip-address-tests.py"
|
||||||
|
rlLog "ip address tests done"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
||||||
|
|
||||||
|
rlGetTestState
|
47
tests/ip-fou-sanity-test/Makefile
Normal file
47
tests/ip-fou-sanity-test/Makefile
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-fou-sanity-test
|
||||||
|
# Description: Test basic ip fou funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
export TEST=/CoreOS/iproute/Sanity/ip-address-sanity-test
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
test -x runtest.sh || chmod a+x runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: Susant Sahani <susant@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Test basic ip fou funcionality" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 15m" >> $(METADATA)
|
||||||
|
@echo "RunFor: iproute" >> $(METADATA)
|
||||||
|
@echo "Requires: iproute" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
3
tests/ip-fou-sanity-test/PURPOSE
Normal file
3
tests/ip-fou-sanity-test/PURPOSE
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
PURPOSE of /CoreOS/iproute/Sanity/ip-fou-sanity-test
|
||||||
|
Description: Test basic ip fou funcionality
|
||||||
|
Author: Susant Sahani <susant@redhat.com>
|
74
tests/ip-fou-sanity-test/ip-fou-tests.py
Executable file
74
tests/ip-fou-sanity-test/ip-fou-tests.py
Executable file
@ -0,0 +1,74 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-fou-sanity-test
|
||||||
|
# Description: Test basic ip fou funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
# ~~~
|
||||||
|
|
||||||
|
import errno
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import unittest
|
||||||
|
import subprocess
|
||||||
|
import signal
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
def setUpModule():
|
||||||
|
|
||||||
|
if shutil.which('ip') is None:
|
||||||
|
raise OSError(errno.ENOENT, 'ip not found')
|
||||||
|
|
||||||
|
class IPFOUTests(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_configure_fou_receive_port_gre(self):
|
||||||
|
''' Configure a FOU receive port for GRE bound to 7777'''
|
||||||
|
|
||||||
|
subprocess.call(" ip fou add port 7777 ipproto 47", shell=True)
|
||||||
|
output=subprocess.check_output(['ip', 'fou', 'show']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "port 7777 ipproto 47")
|
||||||
|
|
||||||
|
subprocess.call("ip fou del port 7777", shell=True)
|
||||||
|
|
||||||
|
def test_configure_fou_receive_port_ipip(self):
|
||||||
|
''' Configure a FOU receive port for IPIP bound to 8888'''
|
||||||
|
|
||||||
|
subprocess.call("ip fou add port 8888 ipproto 4", shell=True)
|
||||||
|
output=subprocess.check_output(['ip', 'fou', 'show']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "port 8888 ipproto 4")
|
||||||
|
|
||||||
|
subprocess.call("ip fou del port 8888", shell=True)
|
||||||
|
|
||||||
|
def test_configure_fou_receive_port_gue(self):
|
||||||
|
''' Configure a GUE receive port bound to 9999 '''
|
||||||
|
|
||||||
|
subprocess.call("ip fou add port 9999 gue", shell=True)
|
||||||
|
output=subprocess.check_output(['ip', 'fou', 'show']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "port 9999 gue")
|
||||||
|
|
||||||
|
subprocess.call("ip fou del port 9999", shell=True)
|
||||||
|
|
||||||
|
def test_configure_fou_with_ipip(self):
|
||||||
|
''' IP over UDP tunnel '''
|
||||||
|
|
||||||
|
subprocess.call("ip fou add port 9000 ipproto 4", shell=True)
|
||||||
|
output=subprocess.check_output(['ip', 'fou', 'show']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "port 9000 ipproto 4")
|
||||||
|
|
||||||
|
subprocess.call("ip link add name tunudp type ipip remote 192.168.2.2 local 192.168.2.1 ttl 225 encap fou encap-sport auto encap-dport 9000", shell=True)
|
||||||
|
output=subprocess.check_output(['ip', '-d', 'link', 'show', 'tunudp']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, "encap fou")
|
||||||
|
|
||||||
|
subprocess.call("ip link del tunudp", shell=True)
|
||||||
|
subprocess.call("ip fou del port 9000", shell=True)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout,
|
||||||
|
verbosity=2))
|
35
tests/ip-fou-sanity-test/runtest.sh
Executable file
35
tests/ip-fou-sanity-test/runtest.sh
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-fou-sanity-test
|
||||||
|
# Description: Test basic ip address label funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="iproute"
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlAssertRpm $PACKAGE
|
||||||
|
rlRun "modprobe fou"
|
||||||
|
rlRun "cp ip-fou-tests.py /usr/bin"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlLog "ip fou tests"
|
||||||
|
rlRun "/usr/bin/python3 /usr/bin/ip-fou-tests.py"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlRun "rm /usr/bin/ip-fou-tests.py"
|
||||||
|
rlLog "ip fou tests done"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
||||||
|
|
||||||
|
rlGetTestState
|
47
tests/ip-l2tp-sanity-test/Makefile
Normal file
47
tests/ip-l2tp-sanity-test/Makefile
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-l2tp-sanity-test
|
||||||
|
# Description: Test basic ip l2tp funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
export TEST=/CoreOS/iproute/Sanity/ip-l2tp-sanity-test
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
test -x runtest.sh || chmod a+x runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: Susant Sahani <susant@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Test basic ip l2tp funcionality" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 15m" >> $(METADATA)
|
||||||
|
@echo "RunFor: iproute" >> $(METADATA)
|
||||||
|
@echo "Requires: iproute" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
3
tests/ip-l2tp-sanity-test/PURPOSE
Normal file
3
tests/ip-l2tp-sanity-test/PURPOSE
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
PURPOSE of /CoreOS/iproute/Sanity/ip-l2tp-sanity-test
|
||||||
|
Description: Test basic ip l2tp funcionality
|
||||||
|
Author: Susant Sahani <susant@redhat.com>
|
149
tests/ip-l2tp-sanity-test/ip-l2tp-tests.py
Executable file
149
tests/ip-l2tp-sanity-test/ip-l2tp-tests.py
Executable file
@ -0,0 +1,149 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-l2tp-sanity-test
|
||||||
|
# Description: Test basic ip l2tp funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
# ~~~
|
||||||
|
|
||||||
|
import errno
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import unittest
|
||||||
|
import subprocess
|
||||||
|
import signal
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
def setUpModule():
|
||||||
|
|
||||||
|
if shutil.which('ip') is None:
|
||||||
|
raise OSError(errno.ENOENT, 'ip not found')
|
||||||
|
|
||||||
|
class IPLinkUtilities():
|
||||||
|
|
||||||
|
def link_exists(self, link):
|
||||||
|
self.assertTrue(os.path.exists(os.path.join('/sys/class/net', link)))
|
||||||
|
|
||||||
|
def add_veth(self):
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'veth-test', 'type', 'veth', 'peer', 'name', 'test-peer'])
|
||||||
|
|
||||||
|
def del_veth(self):
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'veth-test'])
|
||||||
|
|
||||||
|
def add_address(self, address, interface):
|
||||||
|
subprocess.check_output(['ip', 'address', 'add', address, 'dev', interface])
|
||||||
|
|
||||||
|
class IPL2tpTests(unittest.TestCase, IPLinkUtilities):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.add_veth()
|
||||||
|
self.link_exists('veth-test')
|
||||||
|
|
||||||
|
self.add_address('192.168.11.12/24', 'veth-test')
|
||||||
|
self.add_address('192.168.11.13/24', 'test-peer')
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.del_veth()
|
||||||
|
|
||||||
|
def test_add_l2tp_add_tunnel(self):
|
||||||
|
|
||||||
|
r = subprocess.call("ip l2tp add tunnel tunnel_id 3000 peer_tunnel_id 4000 encap udp local 192.168.11.12 remote 192.168.11.13 udp_sport 5000 udp_dport 6000", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'l2tp', 'show', 'tunnel', 'tunnel_id', '3000']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "From 192.168.11.12 to 192.168.11.13")
|
||||||
|
self.assertRegex(output, "Peer tunnel 4000")
|
||||||
|
self.assertRegex(output, "UDP source / dest ports: 5000/6000")
|
||||||
|
|
||||||
|
r = subprocess.call("ip l2tp del tunnel tunnel_id 3000", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
def test_add_l2tp_add_tunnel_session(self):
|
||||||
|
|
||||||
|
r = subprocess.call("ip l2tp add tunnel tunnel_id 3000 peer_tunnel_id 4000 encap udp local 192.168.11.12 remote 192.168.11.13 udp_sport 5000 udp_dport 6000", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'l2tp', 'show', 'tunnel', 'tunnel_id', '3000']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "From 192.168.11.12 to 192.168.11.13")
|
||||||
|
self.assertRegex(output, "Peer tunnel 4000")
|
||||||
|
self.assertRegex(output, "UDP source / dest ports: 5000/6000")
|
||||||
|
|
||||||
|
r = subprocess.call(" ip l2tp add session tunnel_id 3000 session_id 1000 peer_session_id 2000", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'l2tp', 'show', 'session', 'tunnel_id', '3000', 'session_id' ,'1000']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
|
||||||
|
r = subprocess.call("ip l2tp del session tunnel_id 3000 session_id 1000", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
r = subprocess.call("ip l2tp del tunnel tunnel_id 3000", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
def test_setup_l2tp(self):
|
||||||
|
|
||||||
|
r = subprocess.call("ip l2tp add tunnel tunnel_id 3000 peer_tunnel_id 4000 encap udp local 192.168.11.12 remote 192.168.11.13 udp_sport 5000 udp_dport 6000", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'l2tp', 'show', 'tunnel', 'tunnel_id', '3000']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "From 192.168.11.12 to 192.168.11.13")
|
||||||
|
self.assertRegex(output, "Peer tunnel 4000")
|
||||||
|
self.assertRegex(output, "UDP source / dest ports: 5000/6000")
|
||||||
|
|
||||||
|
r = subprocess.call(" ip l2tp add session tunnel_id 3000 session_id 1000 peer_session_id 2000", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'l2tp', 'show', 'session', 'tunnel_id', '3000', 'session_id' ,'1000']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
|
||||||
|
r = subprocess.call("ip l2tp add tunnel tunnel_id 4000 peer_tunnel_id 3000 encap udp local 192.168.11.13 remote 192.168.11.12 udp_sport 6000 udp_dport 5000", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'l2tp', 'show', 'tunnel', 'tunnel_id', '3000']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "From 192.168.11.13 to 192.168.11.12")
|
||||||
|
self.assertRegex(output, "Peer tunnel 4000")
|
||||||
|
self.assertRegex(output, "UDP source / dest ports: 6000/5000")
|
||||||
|
|
||||||
|
r = subprocess.call("ip l2tp add session tunnel_id 4000 session_id 2000 peer_session_id 1000", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'l2tp', 'show', 'session', 'tunnel_id', '4000', 'session_id' ,'2000']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
|
||||||
|
r = subprocess.call("ip link set l2tpeth0 up mtu 1488", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
r = subprocess.call("ip link set l2tpeth0 up mtu 1488", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
r = subprocess.call("ip addr add 10.42.1.1 peer 10.42.1.2 dev l2tpeth0", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
r = subprocess.call("ip addr add 10.42.1.2 peer 10.42.1.1 dev l2tpeth1", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'link', 'show']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ping', '10.42.1.2','-c', '5']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
|
||||||
|
r = subprocess.call("ip l2tp del session tunnel_id 3000 session_id 1000", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
r = subprocess.call("ip l2tp del session tunnel_id 4000 session_id 2000", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
r = subprocess.call("ip l2tp del tunnel tunnel_id 3000", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
r = subprocess.call("ip l2tp del tunnel tunnel_id 4000", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout,
|
||||||
|
verbosity=2))
|
34
tests/ip-l2tp-sanity-test/runtest.sh
Executable file
34
tests/ip-l2tp-sanity-test/runtest.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-l2tp-sanity-test
|
||||||
|
# Description: Test basic ip l2tp funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="iproute"
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlAssertRpm $PACKAGE
|
||||||
|
rlRun "cp ip-l2tp-tests.py /usr/bin"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlLog "ip l2tp tests"
|
||||||
|
rlRun "/usr/bin/python3 /usr/bin/ip-l2tp-tests.py"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlRun "rm /usr/bin/ip-l2tp-tests.py"
|
||||||
|
rlLog "ip l2tp tests done"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
||||||
|
|
||||||
|
rlGetTestState
|
47
tests/ip-link-sanity-test/Makefile
Normal file
47
tests/ip-link-sanity-test/Makefile
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-link-sanity-test
|
||||||
|
# Description: Test basic ip link funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
export TEST=/CoreOS/iproute/Sanity/ip-link-sanity-test
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
test -x runtest.sh || chmod a+x runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: Susant Sahani <susant@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Test basic ip link funcionality" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 15m" >> $(METADATA)
|
||||||
|
@echo "RunFor: iproute" >> $(METADATA)
|
||||||
|
@echo "Requires: iproute" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
3
tests/ip-link-sanity-test/PURPOSE
Normal file
3
tests/ip-link-sanity-test/PURPOSE
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
PURPOSE of /CoreOS/iproute/Sanity/ip-link-sanity-test
|
||||||
|
Description: Test basic ip link funcionality
|
||||||
|
Author: Susant Sahani <susant@redhat.com>
|
342
tests/ip-link-sanity-test/ip-link-tests.py
Executable file
342
tests/ip-link-sanity-test/ip-link-tests.py
Executable file
@ -0,0 +1,342 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-link-sanity-test
|
||||||
|
# Description: Test basic ip link funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
# ~~~
|
||||||
|
|
||||||
|
import errno
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import unittest
|
||||||
|
import subprocess
|
||||||
|
import signal
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
def setUpModule():
|
||||||
|
|
||||||
|
if shutil.which('ip') is None:
|
||||||
|
raise OSError(errno.ENOENT, 'ip not found')
|
||||||
|
|
||||||
|
class IPLinkUtilities():
|
||||||
|
|
||||||
|
def read_attr(self, link, attribute):
|
||||||
|
"""Read a link attributed from the sysfs."""
|
||||||
|
|
||||||
|
with open(os.path.join('/sys/class/net', link, attribute)) as f:
|
||||||
|
return f.readline().strip()
|
||||||
|
|
||||||
|
def link_exists(self, link):
|
||||||
|
|
||||||
|
self.assertTrue(os.path.exists(os.path.join('/sys/class/net', link)))
|
||||||
|
|
||||||
|
class IPLinkSetDevTests(unittest.TestCase, IPLinkUtilities):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
""" Setup """
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dummy-test', 'type', 'dummy'])
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'dummy-test'])
|
||||||
|
|
||||||
|
def test_set_dev_mtu(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'dev', 'dummy-test', 'mtu', '9000'])
|
||||||
|
self.assertEqual('9000', self.read_attr('dummy-test', 'mtu'))
|
||||||
|
|
||||||
|
def test_set_dev_up_down(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'dev', 'dummy-test', 'up'])
|
||||||
|
output=subprocess.check_output(['ip', 'link', 'show', 'dev', 'dummy-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, 'UP,LOWER_UP')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'dev', 'dummy-test', 'down'])
|
||||||
|
output=subprocess.check_output(['ip', 'link', 'show', 'dev', 'dummy-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertNotRegex(output, 'UP,LOWER_UP')
|
||||||
|
|
||||||
|
def test_set_dev_address(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'dev', 'dummy-test', 'address', '02:01:02:03:04:08'])
|
||||||
|
output=subprocess.check_output(['ip', 'link', 'show', 'dev', 'dummy-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, 'link/ether 02:01:02:03:04:08')
|
||||||
|
|
||||||
|
def test_set_dev_alias(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'dev', 'dummy-test', 'alias', 'test-test'])
|
||||||
|
output=subprocess.check_output(['ip', 'link', 'show', 'dev', 'dummy-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, 'test-test')
|
||||||
|
|
||||||
|
def test_set_dev_name(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'dev', 'dummy-test', 'name', 'test-test'])
|
||||||
|
output=subprocess.check_output(['ip', 'link', 'show', 'dev', 'test-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, 'test-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'dev', 'test-test', 'name', 'dummy-test'])
|
||||||
|
|
||||||
|
def test_set_dev_multicast(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'dev', 'dummy-test', 'multicast', 'on'])
|
||||||
|
output=subprocess.check_output(['ip', 'link', 'show', 'dev', 'dummy-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, 'MULTICAST')
|
||||||
|
|
||||||
|
def test_set_dev_all_multicast(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'dev', 'dummy-test', 'allmulticast', 'on'])
|
||||||
|
output=subprocess.check_output(['ip', 'link', 'show', 'dev', 'dummy-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, 'ALLMULTI')
|
||||||
|
|
||||||
|
|
||||||
|
class IPLinkKindTests(unittest.TestCase, IPLinkUtilities):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
""" Setup """
|
||||||
|
pass
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_add_veth_pair(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'veth-test', 'type', 'veth', 'peer', 'name', 'veth-peer-test'])
|
||||||
|
|
||||||
|
self.link_exists('veth-test')
|
||||||
|
self.link_exists('veth-peer-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'veth-test'])
|
||||||
|
|
||||||
|
def test_add_dummy(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dummy-test', 'type', 'dummy'])
|
||||||
|
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'dummy-test'])
|
||||||
|
|
||||||
|
def test_add_vcan(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'vcan-test', 'type', 'vcan'])
|
||||||
|
|
||||||
|
self.link_exists('vcan-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'vcan-test'])
|
||||||
|
|
||||||
|
def test_add_vxcan(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'vxcan-test', 'type', 'vxcan'])
|
||||||
|
|
||||||
|
self.link_exists('vxcan-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'vxcan-test'])
|
||||||
|
|
||||||
|
def test_add_vlan(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dummy-test', 'type', 'dummy'])
|
||||||
|
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'link', 'dummy-test', 'name', 'vlantest.100', 'type', 'vlan', 'id', '100'])
|
||||||
|
|
||||||
|
self.link_exists('vlantest.100')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'vlantest.100'])
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'dummy-test'])
|
||||||
|
|
||||||
|
def test_add_macvlan(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dummy-test', 'type', 'dummy'])
|
||||||
|
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'link', 'dummy-test', 'macvlan-test', 'type', 'macvlan', 'mode', 'bridge'])
|
||||||
|
|
||||||
|
self.link_exists('macvlan-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'macvlan-test'])
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'dummy-test'])
|
||||||
|
|
||||||
|
def test_add_macvtap(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dummy-test', 'type', 'dummy'])
|
||||||
|
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'link', 'dummy-test', 'macvtap-test', 'type', 'macvtap', 'mode', 'bridge'])
|
||||||
|
|
||||||
|
self.link_exists('macvtap-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'macvtap-test'])
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'dummy-test'])
|
||||||
|
|
||||||
|
def test_add_bridge(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'bridge-test', 'type', 'bridge'])
|
||||||
|
|
||||||
|
self.link_exists('bridge-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'bridge-test'])
|
||||||
|
|
||||||
|
def test_add_bond(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'bond-test', 'type', 'bond'])
|
||||||
|
|
||||||
|
self.link_exists('bond-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'bond-test'])
|
||||||
|
|
||||||
|
def test_add_team(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'team-test', 'type', 'team'])
|
||||||
|
|
||||||
|
self.link_exists('team-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'team-test'])
|
||||||
|
|
||||||
|
def test_add_ipip_tunnel(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'tunnel', 'add', 'test-ipiptun', 'mode', 'ipip', 'remote', '10.3.3.3', 'local', '10.4.4.4', 'ttl' ,'64'])
|
||||||
|
|
||||||
|
self.link_exists('test-ipiptun')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'test-ipiptun'])
|
||||||
|
|
||||||
|
def test_add_gre_tunnel(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'tunnel', 'add', 'test-gretun', 'mode', 'gre', 'remote', '10.3.3.3', 'local', '10.4.4.4', 'ttl' ,'64'])
|
||||||
|
|
||||||
|
self.link_exists('test-gretun')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'test-gretun'])
|
||||||
|
|
||||||
|
def test_add_gretap_tunnel(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'test-gretap', 'type', 'gretap', 'remote', '10.3.3.3', 'local', '10.4.4.4'])
|
||||||
|
|
||||||
|
self.link_exists('test-gretap')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'test-gretap'])
|
||||||
|
|
||||||
|
def test_add_ip6gre_tunnel(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'test-ip6gre', 'type', 'ip6gre', 'remote', '2a00:ffde:4567:edde::4987', 'local', '2001:473:fece:cafe::5179'])
|
||||||
|
|
||||||
|
self.link_exists('test-ip6gre')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'test-ip6gre'])
|
||||||
|
|
||||||
|
def test_add_ip6gretap_tunnel(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'test-ip6gretap', 'type', 'ip6gretap', 'remote', '2a00:ffde:4567:edde::4987', 'local', '2001:473:fece:cafe::5179'])
|
||||||
|
|
||||||
|
self.link_exists('test-ip6gretap')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'test-ip6gretap'])
|
||||||
|
|
||||||
|
def test_add_erspan_tunnel(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dev', 'test-erspan', 'type', 'erspan', 'seq', 'key', '100','erspan', '123', 'remote', '10.3.3.3', 'local', '10.4.4.4'])
|
||||||
|
|
||||||
|
self.link_exists('test-erspan')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'test-erspan'])
|
||||||
|
|
||||||
|
def test_add_ip6erspan_tunnel(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dev', 'test-ip6erspan', 'type', 'erspan', 'seq', 'key', '101','erspan', '1234', 'remote', '10.3.3.3', 'local', '10.4.4.4'])
|
||||||
|
|
||||||
|
self.link_exists('test-ip6erspan')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'test-ip6erspan'])
|
||||||
|
|
||||||
|
def test_add_sit_tunnel(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'tunnel', 'add', 'test-sittun', 'mode', 'sit', 'remote', '10.3.3.3', 'local', '10.4.4.4', 'ttl' ,'64'])
|
||||||
|
|
||||||
|
self.link_exists('test-sittun')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'test-sittun'])
|
||||||
|
|
||||||
|
def test_add_vti_tunnel(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dev', 'test-vtitun', 'type', 'vti', 'remote', '10.3.3.3', 'local', '10.4.4.4'])
|
||||||
|
|
||||||
|
self.link_exists('test-vtitun')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'test-vtitun'])
|
||||||
|
|
||||||
|
def test_add_geneve_tunnel(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dev', 'test-geneve-tun', 'type', 'geneve', 'remote', '10.3.3.3', 'vni', '1234'])
|
||||||
|
|
||||||
|
self.link_exists('test-geneve-tun')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'test-geneve-tun'])
|
||||||
|
|
||||||
|
def test_add_ipvlan(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dummy-test', 'type', 'dummy'])
|
||||||
|
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'link', 'dummy-test', 'name', 'test-ipvlan', 'type', 'ipvlan'])
|
||||||
|
self.link_exists('test-ipvlan')
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'test-ipvlan'])
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'link', 'dummy-test', 'name', 'test-ipvlan', 'type', 'ipvlan','mode', 'l2', 'bridge'])
|
||||||
|
self.link_exists('test-ipvlan')
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'test-ipvlan'])
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'link', 'dummy-test', 'name', 'test-ipvlan', 'type', 'ipvlan','mode', 'l2', 'private'])
|
||||||
|
self.link_exists('test-ipvlan')
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'test-ipvlan'])
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'link', 'dummy-test', 'name', 'test-ipvlan', 'type', 'ipvlan','mode', 'l2', 'vepa'])
|
||||||
|
self.link_exists('test-ipvlan')
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'test-ipvlan'])
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'dummy-test'])
|
||||||
|
|
||||||
|
def test_add_vxlan(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dummy-test', 'type', 'dummy'])
|
||||||
|
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'vxlan-test', 'type', 'vxlan', 'id', '42', 'group', '239.1.1.1', 'dev', 'dummy-test' ,'dstport', '4789'])
|
||||||
|
self.link_exists('vxlan-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'vxlan-test'])
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'dummy-test'])
|
||||||
|
|
||||||
|
def test_add_vrf(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'vrf-test', 'type', 'vrf', 'table', '10'])
|
||||||
|
|
||||||
|
self.link_exists('vrf-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'vrf-test'])
|
||||||
|
|
||||||
|
def test_add_macsec(self):
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dummy-test', 'type', 'dummy'])
|
||||||
|
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'link', 'dummy-test', 'test-macsec', 'type', 'macsec'])
|
||||||
|
|
||||||
|
self.link_exists('test-macsec')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'macsec', 'add', 'test-macsec', 'tx', 'sa', '0', 'pn', '1', 'on', 'key', '02', '09876543210987654321098765432109'])
|
||||||
|
subprocess.check_output(['ip', 'macsec', 'add', 'test-macsec', 'rx', 'address', '56:68:a5:c2:4c:14', 'port', '1'])
|
||||||
|
subprocess.check_output(['ip', 'macsec', 'add', 'test-macsec', 'rx', 'address', '56:68:a5:c2:4c:14', 'port', '1', 'sa', '0', 'pn', '1', 'on', 'key', '01', '12345678901234567890123456789012'])
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'test-macsec'])
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'dummy-test'])
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout,
|
||||||
|
verbosity=2))
|
34
tests/ip-link-sanity-test/runtest.sh
Executable file
34
tests/ip-link-sanity-test/runtest.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-link-sanity-test
|
||||||
|
# Description: Test basic ip link funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="iproute"
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlAssertRpm $PACKAGE
|
||||||
|
rlRun "cp ip-link-tests.py /usr/bin"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlLog "ip link tests"
|
||||||
|
rlRun "/usr/bin/python3 /usr/bin/ip-link-tests.py"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlRun "rm /usr/bin/ip-link-tests.py"
|
||||||
|
rlLog "ip link tests done"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
||||||
|
|
||||||
|
rlGetTestState
|
63
tests/ip-neigh-sanity-test/Makefile
Normal file
63
tests/ip-neigh-sanity-test/Makefile
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# Makefile of /CoreOS/iproute/Sanity/ip-neigh-sanity-test
|
||||||
|
# Description: Test basic ip neigh functionality
|
||||||
|
# Author: Jaroslav Aster <jaster@redhat.com>
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# Copyright (c) 2014 Red Hat, Inc. All rights reserved.
|
||||||
|
#
|
||||||
|
# This copyrighted material is made available to anyone wishing
|
||||||
|
# to use, modify, copy, or redistribute it subject to the terms
|
||||||
|
# and conditions of the GNU General Public License version 2.
|
||||||
|
#
|
||||||
|
# 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, write to the Free
|
||||||
|
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
# Boston, MA 02110-1301, USA.
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
export TEST=/CoreOS/iproute/Sanity/ip-neigh-sanity-test
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
test -x runtest.sh || chmod a+x runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: Jaroslav Aster <jaster@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Test basic ip neigh funcionality" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 15m" >> $(METADATA)
|
||||||
|
@echo "RunFor: iproute" >> $(METADATA)
|
||||||
|
@echo "Requires: iproute" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
3
tests/ip-neigh-sanity-test/PURPOSE
Normal file
3
tests/ip-neigh-sanity-test/PURPOSE
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
PURPOSE of /CoreOS/iproute/Sanity/ip-neigh-sanity-test
|
||||||
|
Description: Test basic ip neigh funcionality
|
||||||
|
Author: Jaroslav Aster <jaster@redhat.com>
|
234
tests/ip-neigh-sanity-test/runtest.sh
Normal file
234
tests/ip-neigh-sanity-test/runtest.sh
Normal file
@ -0,0 +1,234 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-neigh-sanity-test
|
||||||
|
# Description: Test basic ip neigh funcionality
|
||||||
|
# Author: Jaroslav Aster <jaster@redhat.com>
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# Copyright (c) 2014 Red Hat, Inc. All rights reserved.
|
||||||
|
#
|
||||||
|
# This copyrighted material is made available to anyone wishing
|
||||||
|
# to use, modify, copy, or redistribute it subject to the terms
|
||||||
|
# and conditions of the GNU General Public License version 2.
|
||||||
|
#
|
||||||
|
# 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, write to the Free
|
||||||
|
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
# Boston, MA 02110-1301, USA.
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/bin/rhts-environment.sh || exit 1
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="iproute"
|
||||||
|
TEST_IFACE="test-iface"
|
||||||
|
TEST_IP4_PREFIX="192.168.100"
|
||||||
|
TEST_IP6_PREFIX="2000::"
|
||||||
|
TEST_MAC_PREFIX="00:c0:7b:7d:00"
|
||||||
|
rlIsRHEL '>=7' && MAN_PAGE="ip-neighbour" || MAN_PAGE="ip"
|
||||||
|
MESSAGES="/var/log/messages"
|
||||||
|
TMP_MESSAGES="$(mktemp)"
|
||||||
|
|
||||||
|
|
||||||
|
create_dummy_iface()
|
||||||
|
{
|
||||||
|
rlRun "ip link add name ${TEST_IFACE} type dummy" 0 "Creating dummy interface: '${TEST_IFACE}'."
|
||||||
|
}
|
||||||
|
|
||||||
|
delete_dummy_iface()
|
||||||
|
{
|
||||||
|
rlRun "ip link del ${TEST_IFACE}" 0 "Removing dummy interface: '${TEST_IFACE}'."
|
||||||
|
rlRun "rmmod dummy" 0,1 "Removing dummy module."
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlCheckRpm "$PACKAGE"
|
||||||
|
create_dummy_iface
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
if rlIsRHEL '>=7'; then
|
||||||
|
rlPhaseStartTest
|
||||||
|
for word in add del change replace show flush all proxy to dev nud unused permanent reachable probe failed incomplete stale delay noarp none; do
|
||||||
|
if ! { [ "$word" = "unused" ] || [ "$word" = "all" ]; }; then
|
||||||
|
rlRun "ip n help 2>&1 | grep -e '[^[:alnum:]]${word}[^[:alnum:]]'" 0 "Checking there is '${word}' in ip neighbour help."
|
||||||
|
fi
|
||||||
|
rlRun "man ${MAN_PAGE} | col -b | grep -e '[^[:alnum:]]${word}[^[:alnum:]]'" 0 "Checking there is '${word}' in ${MAN_PAGE} man page."
|
||||||
|
done
|
||||||
|
rlPhaseEnd
|
||||||
|
fi
|
||||||
|
|
||||||
|
rlPhaseStartTest "Functional Test"
|
||||||
|
rlLogInfo "IPv4"
|
||||||
|
rlRun "ip neigh add ${TEST_IP4_PREFIX}.1 lladdr ${TEST_MAC_PREFIX}:c6 dev ${TEST_IFACE} nud permanent"
|
||||||
|
rlRun "ip neigh show ${TEST_IP4_PREFIX}.1 | grep 'PERMANENT'"
|
||||||
|
|
||||||
|
rlRun "ip neigh add ${TEST_IP4_PREFIX}.2 lladdr ${TEST_MAC_PREFIX}:c7 dev ${TEST_IFACE}"
|
||||||
|
rlRun "ip neigh show ${TEST_IP4_PREFIX}.2 | grep 'PERMANENT'"
|
||||||
|
|
||||||
|
rlRun "ip neigh add ${TEST_IP4_PREFIX}.3 lladdr ${TEST_MAC_PREFIX}:c8 dev ${TEST_IFACE} nud noarp"
|
||||||
|
rlRun "ip neigh show nud all ${TEST_IP4_PREFIX}.3 | grep 'NOARP'"
|
||||||
|
|
||||||
|
rlRun "ip neigh add ${TEST_IP4_PREFIX}.4 lladdr ${TEST_MAC_PREFIX}:c9 dev ${TEST_IFACE} nud noarp"
|
||||||
|
rlRun "ip neigh show nud all ${TEST_IP4_PREFIX}.4 | grep 'NOARP'"
|
||||||
|
|
||||||
|
rlRun "ip neigh add lladdr ${TEST_MAC_PREFIX}:ce dev ${TEST_IFACE} proxy ${TEST_IP4_PREFIX}.10"
|
||||||
|
rlIsRHEL ">=7" && rlRun "ip neigh show proxy | grep ${TEST_IP4_PREFIX}.10"
|
||||||
|
|
||||||
|
rlRun "test $(ip neigh show dev ${TEST_IFACE} | wc -l) -eq 2" 0 "There are two items in neighbours."
|
||||||
|
|
||||||
|
rlRun "ip neigh del ${TEST_IP4_PREFIX}.1 dev ${TEST_IFACE}"
|
||||||
|
rlRun "ip neigh show ${TEST_IP4_PREFIX}.1 | grep 'FAILED'"
|
||||||
|
|
||||||
|
rlRun "ip neigh change ${TEST_IP4_PREFIX}.2 lladdr ${TEST_MAC_PREFIX}:ca dev ${TEST_IFACE} nud reachable"
|
||||||
|
rlRun "ip neigh show ${TEST_IP4_PREFIX}.2 | grep 'REACHABLE'"
|
||||||
|
|
||||||
|
rlRun "ip neigh replace ${TEST_IP4_PREFIX}.3 lladdr ${TEST_MAC_PREFIX}:cb dev ${TEST_IFACE} nud permanent"
|
||||||
|
rlRun "ip neigh show nud all ${TEST_IP4_PREFIX}.3 | grep 'PERMANENT'"
|
||||||
|
|
||||||
|
rlRun "test $(ip neigh show dev ${TEST_IFACE} nud permanent | wc -l) -eq 1" 0 "There is one permanent item in neighbours."
|
||||||
|
rlRun "test $(ip neigh show dev ${TEST_IFACE} nud reachable | wc -l) -eq 1" 0 "There is one reachable item in neighbours."
|
||||||
|
rlRun "test $(ip neigh show dev ${TEST_IFACE} nud noarp | wc -l) -eq 1" 0 "There is one noarp item in neighbours."
|
||||||
|
rlRun "test $(ip neigh show dev ${TEST_IFACE} nud failed | wc -l) -eq 1" 0 "There is one failed item in neighbours."
|
||||||
|
rlIsRHEL ">=7" && rlRun "test $(ip neigh show dev ${TEST_IFACE} proxy | wc -l) -eq 1" 0 "There is one proxy item in neighbours."
|
||||||
|
rlRun "test $(ip neigh show dev ${TEST_IFACE} | grep -e PERMANENT -e REACHABLE -e FAILED | wc -l) -eq 3" 0 "There are three permanent or reachable or failed items in neighbours."
|
||||||
|
|
||||||
|
rlRun "ip neigh show dev ${TEST_IFACE} unused"
|
||||||
|
|
||||||
|
rlRun "ip neigh change ${TEST_IP4_PREFIX}.4 dev ${TEST_IFACE} nud delay"
|
||||||
|
rlRun "ip neigh flush ${TEST_IP4_PREFIX}.4 dev ${TEST_IFACE}"
|
||||||
|
rlRun "ip neigh show nud all | grep '${TEST_IP4_PREFIX}.4'"
|
||||||
|
|
||||||
|
rlRun "ip -s neigh flush ${TEST_IP4_PREFIX}.4 dev ${TEST_IFACE}"
|
||||||
|
rlRun "ip -s -s neigh flush ${TEST_IP4_PREFIX}.4 dev ${TEST_IFACE}"
|
||||||
|
|
||||||
|
rlRun "ip neigh add ${TEST_IP4_PREFIX}.11 lladdr ${TEST_MAC_PREFIX}:c8 dev ${TEST_IFACE} nud permanent"
|
||||||
|
rlRun "ip neigh show ${TEST_IP4_PREFIX}.11 | grep 'PERMANENT'"
|
||||||
|
|
||||||
|
rlRun "ip neigh change ${TEST_IP4_PREFIX}.11 dev ${TEST_IFACE} nud reachable"
|
||||||
|
rlRun "ip neigh show ${TEST_IP4_PREFIX}.11 | grep 'REACHABLE'"
|
||||||
|
|
||||||
|
rlRun "ip neigh change ${TEST_IP4_PREFIX}.11 dev ${TEST_IFACE} nud probe"
|
||||||
|
rlRun "ip neigh show ${TEST_IP4_PREFIX}.11 | grep 'PROBE'"
|
||||||
|
|
||||||
|
rlRun "ip neigh change ${TEST_IP4_PREFIX}.11 lladdr ${TEST_MAC_PREFIX}:c9 dev ${TEST_IFACE} nud failed"
|
||||||
|
rlRun "ip neigh show ${TEST_IP4_PREFIX}.11 | grep 'FAILED'"
|
||||||
|
|
||||||
|
rlRun "ip neigh change ${TEST_IP4_PREFIX}.11 dev ${TEST_IFACE} nud incomplete"
|
||||||
|
rlRun "ip neigh show ${TEST_IP4_PREFIX}.11 | grep 'INCOMPLETE'"
|
||||||
|
|
||||||
|
rlRun "ip neigh replace ${TEST_IP4_PREFIX}.11 lladdr ${TEST_MAC_PREFIX}:cb dev ${TEST_IFACE} nud stale"
|
||||||
|
rlRun "ip neigh show ${TEST_IP4_PREFIX}.11 | grep '${TEST_MAC_PREFIX}:cb' | grep 'STALE'"
|
||||||
|
|
||||||
|
rlRun "ip neigh replace ${TEST_IP4_PREFIX}.11 dev ${TEST_IFACE} nud delay"
|
||||||
|
rlRun "ip neigh show ${TEST_IP4_PREFIX}.11 | grep -e 'DELAY' -e 'PROBE'"
|
||||||
|
|
||||||
|
rlRun "ip neigh replace ${TEST_IP4_PREFIX}.11 dev ${TEST_IFACE} nud noarp"
|
||||||
|
rlRun "ip neigh show nud all ${TEST_IP4_PREFIX}.11 | grep 'NOARP'"
|
||||||
|
|
||||||
|
rlRun "ip neigh change ${TEST_IP4_PREFIX}.11 dev ${TEST_IFACE} nud none"
|
||||||
|
rlRun "ip neigh show nud none | grep ${TEST_IP4_PREFIX}.11"
|
||||||
|
|
||||||
|
rlRun "ip neigh show ${TEST_IP4_PREFIX}.0/24"
|
||||||
|
|
||||||
|
rlLogInfo "IPv6"
|
||||||
|
rlRun "ip -6 neigh add ${TEST_IP6_PREFIX}1 lladdr ${TEST_MAC_PREFIX}:c6 dev ${TEST_IFACE} nud permanent"
|
||||||
|
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}1 | grep 'PERMANENT'"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh add ${TEST_IP6_PREFIX}2 lladdr ${TEST_MAC_PREFIX}:c7 dev ${TEST_IFACE}"
|
||||||
|
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}2 | grep 'PERMANENT'"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh add ${TEST_IP6_PREFIX}3 lladdr ${TEST_MAC_PREFIX}:c8 dev ${TEST_IFACE} nud noarp"
|
||||||
|
rlRun "ip -6 neigh show nud all ${TEST_IP6_PREFIX}3 | grep 'NOARP'"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh add ${TEST_IP6_PREFIX}4 lladdr ${TEST_MAC_PREFIX}:c9 dev ${TEST_IFACE} nud noarp"
|
||||||
|
rlRun "ip -6 neigh show nud all ${TEST_IP6_PREFIX}4 | grep 'NOARP'"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh add lladdr ${TEST_MAC_PREFIX}:ce dev ${TEST_IFACE} proxy ${TEST_IP6_PREFIX}10"
|
||||||
|
rlIsRHEL ">=7" && rlRun "ip -6 neigh show proxy | grep ${TEST_IP6_PREFIX}10"
|
||||||
|
|
||||||
|
rlRun "test $(ip -6 neigh show dev ${TEST_IFACE} | wc -l) -eq 2" 0 "There are two items in neighbours."
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh del ${TEST_IP6_PREFIX}1 dev ${TEST_IFACE}"
|
||||||
|
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}1 | grep 'FAILED'"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh change ${TEST_IP6_PREFIX}2 lladdr ${TEST_MAC_PREFIX}:ca dev ${TEST_IFACE} nud reachable"
|
||||||
|
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}2 | grep 'REACHABLE'"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh replace ${TEST_IP6_PREFIX}3 lladdr ${TEST_MAC_PREFIX}:cb dev ${TEST_IFACE} nud permanent"
|
||||||
|
rlRun "ip -6 neigh show nud all ${TEST_IP6_PREFIX}3 | grep 'PERMANENT'"
|
||||||
|
|
||||||
|
rlRun "test $(ip -6 neigh show dev ${TEST_IFACE} nud permanent | wc -l) -eq 1" 0 "There is one permanent item in neighbours."
|
||||||
|
rlRun "test $(ip -6 neigh show dev ${TEST_IFACE} nud reachable | wc -l) -eq 1" 0 "There is one reachable item in neighbours."
|
||||||
|
rlRun "test $(ip -6 neigh show dev ${TEST_IFACE} nud noarp | wc -l) -eq 1" 0 "There is one noarp item in neighbours."
|
||||||
|
rlRun "test $(ip -6 neigh show dev ${TEST_IFACE} nud failed | wc -l) -eq 1" 0 "There is one failed item in neighbours."
|
||||||
|
rlIsRHEL ">=7" && rlRun "test $(ip -6 neigh show dev ${TEST_IFACE} proxy | wc -l) -eq 1" 0 "There is one proxy item in neighbours."
|
||||||
|
rlRun "test $(ip -6 neigh show dev ${TEST_IFACE} | grep -e PERMANENT -e REACHABLE -e FAILED | wc -l) -eq 3" 0 "There are three permanent or reachable or failed items in neighbours."
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh show dev ${TEST_IFACE} unused"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh change ${TEST_IP6_PREFIX}4 dev ${TEST_IFACE} nud delay"
|
||||||
|
rlRun "ip -6 neigh flush ${TEST_IP6_PREFIX}4 dev ${TEST_IFACE}"
|
||||||
|
rlRun "ip -6 neigh show nud all | grep '${TEST_IP6_PREFIX}4'"
|
||||||
|
|
||||||
|
rlRun "ip -6 -s neigh flush ${TEST_IP6_PREFIX}4 dev ${TEST_IFACE}"
|
||||||
|
rlRun "ip -6 -s -s neigh flush ${TEST_IP6_PREFIX}4 dev ${TEST_IFACE}"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh add ${TEST_IP6_PREFIX}11 lladdr ${TEST_MAC_PREFIX}:c8 dev ${TEST_IFACE} nud permanent"
|
||||||
|
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}11 | grep 'PERMANENT'"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh change ${TEST_IP6_PREFIX}11 dev ${TEST_IFACE} nud reachable"
|
||||||
|
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}11 | grep 'REACHABLE'"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh change ${TEST_IP6_PREFIX}11 dev ${TEST_IFACE} nud probe"
|
||||||
|
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}11 | grep 'PROBE'"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh change ${TEST_IP6_PREFIX}11 lladdr ${TEST_MAC_PREFIX}:c9 dev ${TEST_IFACE} nud failed"
|
||||||
|
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}11 | grep 'FAILED'"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh change ${TEST_IP6_PREFIX}11 dev ${TEST_IFACE} nud incomplete"
|
||||||
|
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}11 | grep 'INCOMPLETE'"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh replace ${TEST_IP6_PREFIX}11 lladdr ${TEST_MAC_PREFIX}:cb dev ${TEST_IFACE} nud stale"
|
||||||
|
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}11 | grep '${TEST_MAC_PREFIX}:cb' | grep 'STALE'"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh replace ${TEST_IP6_PREFIX}11 dev ${TEST_IFACE} nud delay"
|
||||||
|
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}11 | grep -e 'DELAY' -e 'PROBE'"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh replace ${TEST_IP6_PREFIX}11 dev ${TEST_IFACE} nud noarp"
|
||||||
|
rlRun "ip -6 neigh show nud all ${TEST_IP6_PREFIX}11 | grep 'NOARP'"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh change ${TEST_IP6_PREFIX}11 dev ${TEST_IFACE} nud none"
|
||||||
|
rlRun "ip -6 neigh show nud none | grep ${TEST_IP6_PREFIX}11"
|
||||||
|
|
||||||
|
rlRun "ip -6 neigh show ${TEST_IP6_PREFIX}0/24"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
pushd /tmp # because of coredump file
|
||||||
|
tail -f -n 0 "$MESSAGES" > "$TMP_MESSAGES" &
|
||||||
|
tail_pid="$!"
|
||||||
|
rlRun "ip neigh add ${TEST_IP4_PREFIX}.11 lladdr ${TEST_MAC_PREFIX}:c16 dev ${TEST_IFACE} nud permanent" 1,255
|
||||||
|
kill "$tail_pid"
|
||||||
|
rlRun "grep -i -e 'segfault' -e 'unhandled signal' -e 'User process fault' ${TMP_MESSAGES}" 1 "Checking there is no segfault in /var/log/messages."
|
||||||
|
popd
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
delete_dummy_iface
|
||||||
|
rlRun "rm ${TMP_MESSAGES}" 0 "Removing tmp files and dirs."
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
47
tests/ip-neighbor-sanity-test/Makefile
Normal file
47
tests/ip-neighbor-sanity-test/Makefile
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-neighbor-sanity-test
|
||||||
|
# Description: Test basic ip neighbor funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
export TEST=/CoreOS/iproute/Sanity/ip-neighbor-sanity-test
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
test -x runtest.sh || chmod a+x runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: Susant Sahani <susant@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Test basic ip neighbor funcionality" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 15m" >> $(METADATA)
|
||||||
|
@echo "RunFor: iproute" >> $(METADATA)
|
||||||
|
@echo "Requires: iproute" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
3
tests/ip-neighbor-sanity-test/PURPOSE
Normal file
3
tests/ip-neighbor-sanity-test/PURPOSE
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
PURPOSE of /CoreOS/iproute/Sanity/ip-neighbor-sanity-test
|
||||||
|
Description: Test basic ip neighbor funcionality
|
||||||
|
Author: Susant Sahani <susant@redhat.com>
|
74
tests/ip-neighbor-sanity-test/ip-neighbor-tests.py
Executable file
74
tests/ip-neighbor-sanity-test/ip-neighbor-tests.py
Executable file
@ -0,0 +1,74 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-neighbour-sanity-test
|
||||||
|
# Description: Test basic ip neighbour funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
# ~~~
|
||||||
|
|
||||||
|
import errno
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import unittest
|
||||||
|
import subprocess
|
||||||
|
import signal
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
def setUpModule():
|
||||||
|
|
||||||
|
if shutil.which('ip') is None:
|
||||||
|
raise OSError(errno.ENOENT, 'ip not found')
|
||||||
|
|
||||||
|
class IPLinkUtilities():
|
||||||
|
|
||||||
|
def link_exists(self, link):
|
||||||
|
|
||||||
|
self.assertTrue(os.path.exists(os.path.join('/sys/class/net', link)))
|
||||||
|
|
||||||
|
def add_dummy(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dummy-test', 'type', 'dummy'])
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
def del_dummy(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'dummy-test'])
|
||||||
|
|
||||||
|
class IPNeighborTests(unittest.TestCase, IPLinkUtilities):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.add_dummy()
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.del_dummy()
|
||||||
|
|
||||||
|
def test_add_neighbor(self):
|
||||||
|
|
||||||
|
subprocess.call("ip neighbor add 192.168.100.1 lladdr 00:c0:7b:7d:00:c8 dev dummy-test nud permanent", shell=True)
|
||||||
|
output=subprocess.check_output(['ip', 'neighbour', 'show', 'dev', 'dummy-test']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "192.168.100.1 lladdr 00:c0:7b:7d:00:c8 PERMANENT")
|
||||||
|
|
||||||
|
subprocess.call("ip neighbor del 192.168.100.1 dev dummy-test", shell=True)
|
||||||
|
|
||||||
|
def test_replace_neighbor(self):
|
||||||
|
|
||||||
|
subprocess.call("ip neighbor add 192.168.99.254 lladdr 00:80:c8:27:69:2d dev dummy-test", shell=True)
|
||||||
|
output=subprocess.check_output(['ip', 'neighbour', 'show', 'dev', 'dummy-test']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "192.168.99.254 lladdr 00:80:c8:27:69:2d PERMANENT")
|
||||||
|
|
||||||
|
subprocess.call("ip neighbor change 192.168.99.254 lladdr 00:80:c8:27:69:2d dev dummy-test", shell=True)
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "192.168.99.254 lladdr 00:80:c8:27:69:2d PERMANENT")
|
||||||
|
|
||||||
|
subprocess.call("ip neighbor del 192.168.99.254 dev dummy-test", shell=True)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout,
|
||||||
|
verbosity=2))
|
34
tests/ip-neighbor-sanity-test/runtest.sh
Executable file
34
tests/ip-neighbor-sanity-test/runtest.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-neighbor-sanity-test
|
||||||
|
# Description: Test basic ip neighbor funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="iproute"
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlAssertRpm $PACKAGE
|
||||||
|
rlRun "cp ip-neighbor-tests.py /usr/bin"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlLog "ip neighbor tests"
|
||||||
|
rlRun "/usr/bin/python3 /usr/bin/ip-neighbor-tests.py"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlRun "rm /usr/bin/ip-neighbor-tests.py"
|
||||||
|
rlLog "ip neighbor tests done"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
||||||
|
|
||||||
|
rlGetTestState
|
47
tests/ip-netns-sanity-test/Makefile
Normal file
47
tests/ip-netns-sanity-test/Makefile
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-netns-sanity-test
|
||||||
|
# Description: Test basic ip netns funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
export TEST=/CoreOS/iproute/Sanity/ip-ns-sanity-test
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
test -x runtest.sh || chmod a+x runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: Susant Sahani <susant@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Test basic ip netns funcionality" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 15m" >> $(METADATA)
|
||||||
|
@echo "RunFor: iproute" >> $(METADATA)
|
||||||
|
@echo "Requires: iproute" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
3
tests/ip-netns-sanity-test/PURPOSE
Normal file
3
tests/ip-netns-sanity-test/PURPOSE
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
PURPOSE of /CoreOS/iproute/Sanity/ip-netns-sanity-test
|
||||||
|
Description: Test basic ip netns funcionality
|
||||||
|
Author: Susant Sahani <susant@redhat.com>
|
118
tests/ip-netns-sanity-test/ip-netns-tests.py
Executable file
118
tests/ip-netns-sanity-test/ip-netns-tests.py
Executable file
@ -0,0 +1,118 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-netns-sanity-test
|
||||||
|
# Description: Test basic ip netns funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
# ~~~
|
||||||
|
|
||||||
|
import errno
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import unittest
|
||||||
|
import subprocess
|
||||||
|
import signal
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
def setUpModule():
|
||||||
|
|
||||||
|
if shutil.which('ip') is None:
|
||||||
|
raise OSError(errno.ENOENT, 'ip not found')
|
||||||
|
|
||||||
|
class GenericUtilities():
|
||||||
|
|
||||||
|
def path_exists(self, path):
|
||||||
|
self.assertTrue(os.path.exists(os.path.join('/var/run/netns', path)))
|
||||||
|
|
||||||
|
def link_exists(self, link):
|
||||||
|
self.assertTrue(os.path.exists(os.path.join('/sys/class/net', link)))
|
||||||
|
|
||||||
|
def add_veth(self):
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'veth-test', 'type', 'veth', 'peer', 'name', 'test-peer'])
|
||||||
|
|
||||||
|
def del_veth(self):
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'veth-test'])
|
||||||
|
|
||||||
|
def add_dummy(self):
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dummy-test', 'type', 'dummy'])
|
||||||
|
|
||||||
|
def del_dummy(self):
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'dummy-test'])
|
||||||
|
|
||||||
|
class IPNsTests(unittest.TestCase, GenericUtilities):
|
||||||
|
|
||||||
|
def test_add_ns(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'netns', 'add', 'net-ns-test'])
|
||||||
|
self.path_exists('net-ns-test')
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'netns', 'list']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, "net-ns-test")
|
||||||
|
|
||||||
|
self.addCleanup(subprocess.call, ['ip', 'netns', 'del', 'net-ns-test'])
|
||||||
|
|
||||||
|
def test_add_dummy_interface_to_ns(self):
|
||||||
|
|
||||||
|
self.add_dummy()
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'netns', 'add', 'net-ns-test'])
|
||||||
|
self.path_exists('net-ns-test')
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'netns', 'list']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, "net-ns-test")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'dev', 'dummy-test', 'netns', 'net-ns-test'])
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'netns', 'exec', 'net-ns-test', 'ip', 'link', 'show']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "dummy-test")
|
||||||
|
|
||||||
|
self.addCleanup(subprocess.call, ['ip', 'netns', 'del', 'net-ns-test'])
|
||||||
|
self.addCleanup(subprocess.call, ['ip', 'netns', 'exec', 'net-ns-test', 'ip', 'link', 'del', 'dummy-test'])
|
||||||
|
|
||||||
|
def test_add_veth_interface_to_ns(self):
|
||||||
|
|
||||||
|
self.add_veth()
|
||||||
|
self.link_exists('veth-test')
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'netns', 'add', 'net-ns-test'])
|
||||||
|
self.path_exists('net-ns-test')
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'netns', 'list']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, "net-ns-test")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'dev', 'test-peer', 'netns', 'net-ns-test'])
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'netns', 'exec', 'net-ns-test', 'ip', 'link', 'show']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "test-peer")
|
||||||
|
|
||||||
|
# Setup IP address of veth-test.
|
||||||
|
subprocess.check_output(['ip', 'addr', 'add', '10.200.1.1/24', 'dev', 'veth-test'])
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'veth-test', 'up'])
|
||||||
|
|
||||||
|
# Setup IP address of v-peer1.
|
||||||
|
subprocess.check_output(['ip', 'netns', 'exec', 'net-ns-test', 'ip', 'addr', 'add',' 10.200.1.2/24', 'dev', 'test-peer'])
|
||||||
|
subprocess.check_output(['ip', 'netns', 'exec', 'net-ns-test', 'ip', 'link', 'set', 'test-peer', 'up'])
|
||||||
|
subprocess.check_output(['ip', 'netns', 'exec', 'net-ns-test', 'ip', 'link', 'set', 'lo', 'up'])
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'netns', 'exec', 'net-ns-test', 'ip', 'addr', 'show']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "test-peer")
|
||||||
|
self.assertRegex(output, "lo: <LOOPBACK,UP,LOWER_UP>")
|
||||||
|
self.assertRegex(output, "inet 10.200.1.2/24")
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'netns', 'exec', 'net-ns-test', 'ping', '10.200.1.1', '-c', '5']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
|
||||||
|
self.addCleanup(subprocess.call, ['ip', 'netns', 'del', 'net-ns-test'])
|
||||||
|
self.addCleanup(subprocess.call, ['ip', 'netns', 'exec', 'net-ns-test', 'ip', 'link', 'del', 'test-peer'])
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout,
|
||||||
|
verbosity=2))
|
34
tests/ip-netns-sanity-test/runtest.sh
Executable file
34
tests/ip-netns-sanity-test/runtest.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-Licenetnse-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-netns-sanity-test
|
||||||
|
# Description: Test basic ip netns funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="iproute"
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlAssertRpm $PACKAGE
|
||||||
|
rlRun "cp ip-netns-tests.py /usr/bin"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlLog "ip netns tests"
|
||||||
|
rlRun "/usr/bin/python3 /usr/bin/ip-netns-tests.py"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlRun "rm /usr/bin/ip-netns-tests.py"
|
||||||
|
rlLog "ip netns tests done"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
||||||
|
|
||||||
|
rlGetTestState
|
47
tests/ip-route-sanity-test/Makefile
Normal file
47
tests/ip-route-sanity-test/Makefile
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-route-sanity-test
|
||||||
|
# Description: Test basic ip route funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
export TEST=/CoreOS/iproute/Sanity/ip-route-sanity-test
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
test -x runtest.sh || chmod a+x runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: Susant Sahani <susant@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Test basic ip route funcionality" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 15m" >> $(METADATA)
|
||||||
|
@echo "RunFor: iproute" >> $(METADATA)
|
||||||
|
@echo "Requires: iproute" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
3
tests/ip-route-sanity-test/PURPOSE
Normal file
3
tests/ip-route-sanity-test/PURPOSE
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
PURPOSE of /CoreOS/iproute/Sanity/ip-route-sanity-test
|
||||||
|
Description: Test basic ip route funcionality
|
||||||
|
Author: Susant Sahani <susant@redhat.com>
|
110
tests/ip-route-sanity-test/ip-route-tests.py
Executable file
110
tests/ip-route-sanity-test/ip-route-tests.py
Executable file
@ -0,0 +1,110 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-route-sanity-test
|
||||||
|
# Description: Test basic ip route funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
# ~~~
|
||||||
|
|
||||||
|
import errno
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import unittest
|
||||||
|
import subprocess
|
||||||
|
import signal
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
def setUpModule():
|
||||||
|
|
||||||
|
if shutil.which('ip') is None:
|
||||||
|
raise OSError(errno.ENOENT, 'ip not found')
|
||||||
|
|
||||||
|
class IPLinkUtilities():
|
||||||
|
|
||||||
|
def link_exists(self, link):
|
||||||
|
self.assertTrue(os.path.exists(os.path.join('/sys/class/net', link)))
|
||||||
|
|
||||||
|
def add_dummy(self):
|
||||||
|
""" Setup """
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dummy-test', 'type', 'dummy'])
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
subprocess.check_output(['ip', 'link', 'set', 'dev', 'dummy-test', 'up'])
|
||||||
|
|
||||||
|
def del_dummy(self):
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'dummy-test'])
|
||||||
|
|
||||||
|
class IPRouteTests(unittest.TestCase, IPLinkUtilities):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.add_dummy()
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.del_dummy()
|
||||||
|
|
||||||
|
def test_add_route(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'route', 'add', '192.168.1.0/24', 'dev', 'dummy-test'])
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'route', 'show']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "192.168.1.0/24 dev dummy-test scope link")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'route', 'delete', '192.168.1.0/24', 'dev', 'dummy-test'])
|
||||||
|
|
||||||
|
def test_add_route_table(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'route', 'add', 'table', '555', '192.168.1.0/24', 'dev', 'dummy-test'])
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'route', 'show', 'table', '555']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "192.168.1.0/24 dev dummy-test scope link")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'route', 'delete', '192.168.1.0/24', 'dev', 'dummy-test', 'table', '555'])
|
||||||
|
|
||||||
|
def test_add_blackhole(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'route', 'add', 'blackhole', '192.168.1.0/24'])
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'route', 'show']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "blackhole 192.168.1.0/24")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'route', 'delete', '192.168.1.0/24'])
|
||||||
|
|
||||||
|
def test_add_unreachable(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'route', 'add', 'unreachable', '192.168.1.0/24'])
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'route', 'show']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "unreachable 192.168.1.0/24")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'route', 'delete', '192.168.1.0/24'])
|
||||||
|
|
||||||
|
def test_add_prohibit(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'route', 'add', 'prohibit', '192.168.1.0/24'])
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'route', 'show']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "prohibit 192.168.1.0/24")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'route', 'delete', '192.168.1.0/24'])
|
||||||
|
|
||||||
|
def test_add_throw(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'route', 'add', 'throw', '192.168.1.0/24'])
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'route', 'show']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "throw 192.168.1.0/24")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'route', 'delete', '192.168.1.0/24'])
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout,
|
||||||
|
verbosity=2))
|
34
tests/ip-route-sanity-test/runtest.sh
Executable file
34
tests/ip-route-sanity-test/runtest.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-route-sanity-test
|
||||||
|
# Description: Test basic ip route funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="iproute"
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlAssertRpm $PACKAGE
|
||||||
|
rlRun "cp ip-route-tests.py /usr/bin"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlLog "ip route tests"
|
||||||
|
rlRun "/usr/bin/python3 /usr/bin/ip-route-tests.py"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlRun "rm /usr/bin/ip-route-tests.py"
|
||||||
|
rlLog "ip route tests done"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
||||||
|
|
||||||
|
rlGetTestState
|
63
tests/ip-rule-sanity-test/Makefile
Normal file
63
tests/ip-rule-sanity-test/Makefile
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# Makefile of /CoreOS/iproute/Sanity/ip-rule-sanity-test
|
||||||
|
# Description: Test basic ip rule functionality
|
||||||
|
# Author: Jaroslav Aster <jaster@redhat.com>
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# Copyright (c) 2014 Red Hat, Inc. All rights reserved.
|
||||||
|
#
|
||||||
|
# This copyrighted material is made available to anyone wishing
|
||||||
|
# to use, modify, copy, or redistribute it subject to the terms
|
||||||
|
# and conditions of the GNU General Public License version 2.
|
||||||
|
#
|
||||||
|
# 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, write to the Free
|
||||||
|
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
# Boston, MA 02110-1301, USA.
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
export TEST=/CoreOS/iproute/Sanity/ip-rule-sanity-test
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
test -x runtest.sh || chmod a+x runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: Jaroslav Aster <jaster@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Test basic ip rule funcionality" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 15m" >> $(METADATA)
|
||||||
|
@echo "RunFor: iproute" >> $(METADATA)
|
||||||
|
@echo "Requires: iproute" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
3
tests/ip-rule-sanity-test/PURPOSE
Normal file
3
tests/ip-rule-sanity-test/PURPOSE
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
PURPOSE of /CoreOS/iproute/Sanity/ip-rule-sanity-test
|
||||||
|
Description: Test basic ip rule funcionality
|
||||||
|
Author: Jaroslav Aster <jaster@redhat.com>
|
107
tests/ip-rule-sanity-test/runtest.sh
Normal file
107
tests/ip-rule-sanity-test/runtest.sh
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-rule-sanity-test
|
||||||
|
# Description: Test basic ip rule funcionality
|
||||||
|
# Author: Jaroslav Aster <jaster@redhat.com>
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# Copyright (c) 2014 Red Hat, Inc. All rights reserved.
|
||||||
|
#
|
||||||
|
# This copyrighted material is made available to anyone wishing
|
||||||
|
# to use, modify, copy, or redistribute it subject to the terms
|
||||||
|
# and conditions of the GNU General Public License version 2.
|
||||||
|
#
|
||||||
|
# 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, write to the Free
|
||||||
|
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
# Boston, MA 02110-1301, USA.
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/bin/rhts-environment.sh || exit 1
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="iproute"
|
||||||
|
DEFAULT_IFACE="$(ip route show | grep default | sed 's/.*dev \([^ ]\+\) .*/\1/' | head -n 1)"
|
||||||
|
rlIsRHEL '>=7' && IP_RULE_MANPAGE="ip-rule" || IP_RULE_MANPAGE="ip"
|
||||||
|
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlCheckRpm "$PACKAGE"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest "Basic sanity test"
|
||||||
|
rlRun "ip rule list"
|
||||||
|
|
||||||
|
rlRun "ip rule add from 172.29.0.0/24 to 172.29.1.0/24 table 1110"
|
||||||
|
rlRun "ip rule add not from 172.29.0.0/24 to 172.29.1.0/24 table 1111"
|
||||||
|
rlRun "ip -6 rule add from 2404:6800:4003:801::1015/32 to 2404:6800:4003:801::1014/32 table 1111"
|
||||||
|
rlIsRHEL '>=7' && rlRun "ip rule add oif ${DEFAULT_IFACE} table 1111"
|
||||||
|
rlRun "ip rule add iif ${DEFAULT_IFACE} tos 10 table 1112"
|
||||||
|
rlRun "ip rule add fwmark 123 pref 100 table 1112"
|
||||||
|
rlRun "ip rule add not fwmark 124 pref 101 unreachable"
|
||||||
|
rlRun "ip rule add fwmark 125 pref 102 prohibit"
|
||||||
|
rlRun "ip rule add fwmark 126 pref 103 unicast"
|
||||||
|
rlRun "ip rule add from 172.29.2.0/24 tos 10 blackhole"
|
||||||
|
rlRun "ip rule add from 172.29.0.0/24 tos 6 prio 99 goto 103"
|
||||||
|
|
||||||
|
rlRun "ip rule list"
|
||||||
|
|
||||||
|
rlRun "ip rule list | grep 'from 172.29.0.0/24 to 172.29.1.0/24'"
|
||||||
|
rlRun "ip rule list | grep 'not from 172.29.0.0/24 to 172.29.1.0/24'"
|
||||||
|
rlRun "ip -6 rule list | grep 'from 2404:6800:4003:801::1015/32 to 2404:6800:4003:801::1014/32'"
|
||||||
|
rlIsRHEL '>=7' && rlRun "ip rule list | grep 'oif ${DEFAULT_IFACE}'"
|
||||||
|
! rlIsFedora && rlRun "ip rule list | grep 'tos lowdelay iif ${DEFAULT_IFACE}'"
|
||||||
|
rlRun "ip rule list | grep 'from all fwmark 0x7b'"
|
||||||
|
rlRun "ip rule list | grep 'not from all fwmark 0x7c unreachable'"
|
||||||
|
rlRun "ip rule list | grep 'from all fwmark 0x7d prohibit'"
|
||||||
|
rlRun "ip rule list | grep 'from all fwmark 0x7e'"
|
||||||
|
! rlIsFedora && rlRun "ip rule list | grep 'from 172.29.2.0/24 tos lowdelay blackhole'"
|
||||||
|
rlRun "ip rule list | grep 'from 172.29.0.0/24 tos 0x06 goto 103'"
|
||||||
|
|
||||||
|
rlRun "ip rule list"
|
||||||
|
|
||||||
|
rlRun "ip rule del from 172.29.0.0/24 to 172.29.1.0/24"
|
||||||
|
rlRun "ip rule del not from 172.29.0.0/24 to 172.29.1.0/24"
|
||||||
|
rlRun "ip -6 rule del from 2404:6800:4003:801::1015/32 to 2404:6800:4003:801::1014/32"
|
||||||
|
rlIsRHEL '>=7' && rlRun "ip rule del oif ${DEFAULT_IFACE}"
|
||||||
|
! rlIsFedora && rlRun "ip rule del iif ${DEFAULT_IFACE} tos lowdelay"
|
||||||
|
rlRun "ip rule del fwmark 123 pref 100"
|
||||||
|
rlRun "ip rule del not fwmark 124 pref 101 unreachable"
|
||||||
|
rlRun "ip rule del fwmark 125 pref 102 prohibit"
|
||||||
|
rlRun "ip rule del fwmark 126 pref 103 unicast"
|
||||||
|
rlRun "ip rule del from 172.29.2.0/24 tos 10 blackhole"
|
||||||
|
rlRun "ip rule del from 172.29.0.0/24 tos 6 prio 99 goto 103"
|
||||||
|
|
||||||
|
rlRun "ip rule list"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
if rlIsRHEL '>=7'; then
|
||||||
|
rlPhaseStartTest
|
||||||
|
saved_rule=$(ip rule list | grep '^0' | cut -d : -f 2 | head -n 1)
|
||||||
|
rlRun "ip rule del prio 0" 0 "Removing rule with prio 0."
|
||||||
|
rlRun "ip rule add prio 0 ${saved_rule}" 0 "Re-creating rule with prio 0."
|
||||||
|
rlRun "man ${IP_RULE_MANPAGE} | col -b | grep 'Rule 0 is special. It cannot be deleted or overridden.'" 1
|
||||||
|
rlPhaseEnd
|
||||||
|
fi
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlRun "man ${IP_RULE_MANPAGE} | col -b | grep 'reject'" 1
|
||||||
|
rlRun "ip rule help 2>&1 | grep 'reject'" 1
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
47
tests/ip-token-sanity-test/Makefile
Normal file
47
tests/ip-token-sanity-test/Makefile
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-token-sanity-test
|
||||||
|
# Description: Test basic ip token funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
export TEST=/CoreOS/iproute/Sanity/ip-token-sanity-test
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
test -x runtest.sh || chmod a+x runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: Susant Sahani <susant@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Test basic ip token funcionality" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 15m" >> $(METADATA)
|
||||||
|
@echo "RunFor: iproute" >> $(METADATA)
|
||||||
|
@echo "Requires: iproute" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
3
tests/ip-token-sanity-test/PURPOSE
Normal file
3
tests/ip-token-sanity-test/PURPOSE
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
PURPOSE of /CoreOS/iproute/Sanity/ip-token-sanity-test
|
||||||
|
Description: Test basic ip token funcionality
|
||||||
|
Author: Susant Sahani <susant@redhat.com>
|
59
tests/ip-token-sanity-test/ip-token-tests.py
Executable file
59
tests/ip-token-sanity-test/ip-token-tests.py
Executable file
@ -0,0 +1,59 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-token-sanity-test
|
||||||
|
# Description: Test basic ip token funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
# ~~~
|
||||||
|
|
||||||
|
import errno
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import unittest
|
||||||
|
import subprocess
|
||||||
|
import signal
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
def setUpModule():
|
||||||
|
|
||||||
|
if shutil.which('ip') is None:
|
||||||
|
raise OSError(errno.ENOENT, 'ip not found')
|
||||||
|
|
||||||
|
class IPLinkUtilities():
|
||||||
|
|
||||||
|
def link_exists(self, link):
|
||||||
|
self.assertTrue(os.path.exists(os.path.join('/sys/class/net', link)))
|
||||||
|
|
||||||
|
def add_veth(self):
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'veth-test', 'type', 'veth', 'peer', 'name', 'test-peer'])
|
||||||
|
|
||||||
|
def del_veth(self):
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'veth-test'])
|
||||||
|
|
||||||
|
class IPTokenTests(unittest.TestCase, IPLinkUtilities):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.add_veth()
|
||||||
|
self.link_exists('veth-test')
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.del_veth()
|
||||||
|
|
||||||
|
def test_add_token(self):
|
||||||
|
|
||||||
|
r = subprocess.call("ip token set ::1a:2b:3c:4d/64 dev veth-test", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'token', 'get', 'dev', 'veth-test']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "token ::1a:2b:3c:4d dev veth-test")
|
||||||
|
|
||||||
|
r = subprocess.call("ip token del ::1a:2b:3c:4d/64 dev veth-test", shell=True)
|
||||||
|
self.assertEqual(r, 0)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout,
|
||||||
|
verbosity=2))
|
34
tests/ip-token-sanity-test/runtest.sh
Executable file
34
tests/ip-token-sanity-test/runtest.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-token-sanity-test
|
||||||
|
# Description: Test basic ip token funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="iproute"
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlAssertRpm $PACKAGE
|
||||||
|
rlRun "cp ip-token-tests.py /usr/bin"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlLog "ip token tests"
|
||||||
|
rlRun "/usr/bin/python3 /usr/bin/ip-token-tests.py"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlRun "rm /usr/bin/ip-token-tests.py"
|
||||||
|
rlLog "ip token tests done"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
||||||
|
|
||||||
|
rlGetTestState
|
47
tests/ip-tunnel-sanity-test/Makefile
Normal file
47
tests/ip-tunnel-sanity-test/Makefile
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-tunnel-sanity-test
|
||||||
|
# Description: Test basic ip tunnel funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
export TEST=/CoreOS/iproute/Sanity/ip-tunnel-sanity-test
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
test -x runtest.sh || chmod a+x runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: Susant Sahani <susant@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Test basic ip tunnel funcionality" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 15m" >> $(METADATA)
|
||||||
|
@echo "RunFor: iproute" >> $(METADATA)
|
||||||
|
@echo "Requires: iproute" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
3
tests/ip-tunnel-sanity-test/PURPOSE
Normal file
3
tests/ip-tunnel-sanity-test/PURPOSE
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
PURPOSE of /CoreOS/iproute/Sanity/ip-tunnel-sanity-test
|
||||||
|
Description: Test basic ip tunnel funcionality
|
||||||
|
Author: Susant Sahani <susant@redhat.com>
|
104
tests/ip-tunnel-sanity-test/ip-tunnel-tests.py
Executable file
104
tests/ip-tunnel-sanity-test/ip-tunnel-tests.py
Executable file
@ -0,0 +1,104 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-tunnel-sanity-test
|
||||||
|
# Description: Test basic ip tunnel funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
# ~~~
|
||||||
|
|
||||||
|
import errno
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import unittest
|
||||||
|
import subprocess
|
||||||
|
import signal
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
def setUpModule():
|
||||||
|
|
||||||
|
if shutil.which('ip') is None:
|
||||||
|
raise OSError(errno.ENOENT, 'ip not found')
|
||||||
|
|
||||||
|
class IPLinkUtilities():
|
||||||
|
|
||||||
|
def add_dummy(self):
|
||||||
|
subprocess.check_output(['ip', 'link', 'add', 'dummy-test', 'type', 'dummy'])
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
def del_dummy(self):
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'dummy-test'])
|
||||||
|
|
||||||
|
def link_exists(self, link):
|
||||||
|
self.assertTrue(os.path.exists(os.path.join('/sys/class/net', link)))
|
||||||
|
|
||||||
|
class IPTunnelTests(unittest.TestCase, IPLinkUtilities):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.add_dummy()
|
||||||
|
self.link_exists('dummy-test')
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.del_dummy()
|
||||||
|
|
||||||
|
def test_add_ipip(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'tunnel', 'add', 'ipiptun-test', 'mode', 'ipip', 'local', '10.3.3.3', 'remote', '10.4.4.4', 'ttl', '64', 'dev', 'dummy-test'])
|
||||||
|
self.link_exists('ipiptun-test')
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'tunnel']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "ipiptun-test: ip/ip remote 10.4.4.4 local 10.3.3.3 dev dummy-test ttl 64")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'ipiptun-test'])
|
||||||
|
|
||||||
|
def test_add_gre(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'tunnel', 'add', 'gretun-test', 'mode', 'gre', 'local', '10.3.3.3', 'remote', '10.4.4.4', 'ttl', '64', 'dev', 'dummy-test'])
|
||||||
|
self.link_exists('gretun-test')
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'tunnel']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "gretun-test: gre/ip remote 10.4.4.4 local 10.3.3.3 dev dummy-test ttl 64")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'gretun-test'])
|
||||||
|
|
||||||
|
def test_add_sit(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'tunnel', 'add', 'sittun-test', 'mode', 'sit', 'local', '10.3.3.3', 'remote', '10.4.4.4', 'ttl', '64', 'dev', 'dummy-test'])
|
||||||
|
self.link_exists('sittun-test')
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'tunnel']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "sittun-test: ipv6/ip remote 10.4.4.4 local 10.3.3.3 dev dummy-test ttl 64")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'sittun-test'])
|
||||||
|
|
||||||
|
def test_add_isatap(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'tunnel', 'add', 'isatap-test', 'mode', 'sit', 'local', '10.3.3.3', 'remote', '10.4.4.4', 'ttl', '64', 'dev', 'dummy-test'])
|
||||||
|
self.link_exists('isatap-test')
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'tunnel']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "isatap-test: ipv6/ip remote 10.4.4.4 local 10.3.3.3 dev dummy-test ttl 64")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'isatap-test'])
|
||||||
|
|
||||||
|
def test_add_vti(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'tunnel', 'add', 'vti-test', 'mode', 'sit', 'local', '10.3.3.3', 'remote', '10.4.4.4', 'ttl', '64', 'dev', 'dummy-test'])
|
||||||
|
self.link_exists('vti-test')
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'tunnel']).rstrip().decode('utf-8')
|
||||||
|
print(output)
|
||||||
|
self.assertRegex(output, "vti-test: ipv6/ip remote 10.4.4.4 local 10.3.3.3 dev dummy-test ttl 64")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'vti-test'])
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout,
|
||||||
|
verbosity=2))
|
34
tests/ip-tunnel-sanity-test/runtest.sh
Executable file
34
tests/ip-tunnel-sanity-test/runtest.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-tunnel-sanity-test
|
||||||
|
# Description: Test basic ip tunnel funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="iproute"
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlAssertRpm $PACKAGE
|
||||||
|
rlRun "cp ip-tunnel-tests.py /usr/bin"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlLog "ip tunnel tests"
|
||||||
|
rlRun "/usr/bin/python3 /usr/bin/ip-tunnel-tests.py"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlRun "rm /usr/bin/ip-tunnel-tests.py"
|
||||||
|
rlLog "ip tunnel tests done"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
||||||
|
|
||||||
|
rlGetTestState
|
47
tests/ip-tuntap-sanity-test/Makefile
Normal file
47
tests/ip-tuntap-sanity-test/Makefile
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-tuntap-sanity-test
|
||||||
|
# Description: Test basic ip tuntap funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
export TEST=/CoreOS/iproute/Sanity/ip-tuntap-sanity-test
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) runtest.sh Makefile PURPOSE
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
test -x runtest.sh || chmod a+x runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: Susant Sahani <susant@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Test basic ip tuntap funcionality" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 15m" >> $(METADATA)
|
||||||
|
@echo "RunFor: iproute" >> $(METADATA)
|
||||||
|
@echo "Requires: iproute" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
3
tests/ip-tuntap-sanity-test/PURPOSE
Normal file
3
tests/ip-tuntap-sanity-test/PURPOSE
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
PURPOSE of /CoreOS/iproute/Sanity/ip-tuntap-sanity-test
|
||||||
|
Description: Test basic ip tuntap funcionality
|
||||||
|
Author: Susant Sahani <susant@redhat.com>
|
65
tests/ip-tuntap-sanity-test/ip-tuntap-tests.py
Executable file
65
tests/ip-tuntap-sanity-test/ip-tuntap-tests.py
Executable file
@ -0,0 +1,65 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-tuntap-sanity-test
|
||||||
|
# Description: Test basic ip tuntap funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
# ~~~
|
||||||
|
|
||||||
|
import errno
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import unittest
|
||||||
|
import subprocess
|
||||||
|
import signal
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
def setUpModule():
|
||||||
|
|
||||||
|
if shutil.which('ip') is None:
|
||||||
|
raise OSError(errno.ENOENT, 'ip not found')
|
||||||
|
|
||||||
|
class IPLinkUtilities():
|
||||||
|
|
||||||
|
def link_exists(self, link):
|
||||||
|
self.assertTrue(os.path.exists(os.path.join('/sys/class/net', link)))
|
||||||
|
|
||||||
|
class IPTuntapTests(unittest.TestCase, IPLinkUtilities):
|
||||||
|
|
||||||
|
def test_add_tap(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'tuntap', 'add', 'name', 'tap-test', 'mode', 'tap'])
|
||||||
|
self.link_exists('tap-test')
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'tuntap', 'show', 'dev', 'tap-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, "tap-test: tap")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'tap-test'])
|
||||||
|
|
||||||
|
def test_add_tun(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'tuntap', 'add', 'name', 'tun-test', 'mode', 'tun'])
|
||||||
|
self.link_exists('tun-test')
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'tuntap', 'show', 'dev', 'tun-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, "tun-test: tun")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'tun-test'])
|
||||||
|
|
||||||
|
def test_add_tun_user_group(self):
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'tuntap', 'add', 'name', 'tun-test', 'mode', 'tun', 'user', 'root', 'group', 'root'])
|
||||||
|
self.link_exists('tun-test')
|
||||||
|
|
||||||
|
output=subprocess.check_output(['ip', 'tuntap', 'show', 'dev', 'tun-test']).rstrip().decode('utf-8')
|
||||||
|
self.assertRegex(output, "tun-test: tun")
|
||||||
|
self.assertRegex(output, "user 0 group 0")
|
||||||
|
|
||||||
|
subprocess.check_output(['ip', 'link', 'del', 'tun-test'])
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout,
|
||||||
|
verbosity=2))
|
34
tests/ip-tuntap-sanity-test/runtest.sh
Executable file
34
tests/ip-tuntap-sanity-test/runtest.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of /CoreOS/iproute/Sanity/ip-tuntap-sanity-test
|
||||||
|
# Description: Test basic ip tuntap funcionality
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="iproute"
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlAssertRpm $PACKAGE
|
||||||
|
rlRun "cp ip-tuntap-tests.py /usr/bin"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlLog "ip tuntap tests"
|
||||||
|
rlRun "/usr/bin/python3 /usr/bin/ip-tuntap-tests.py"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlRun "rm /usr/bin/ip-tuntap-tests.py"
|
||||||
|
rlLog "ip tuntap tests done"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
||||||
|
|
||||||
|
rlGetTestState
|
27
tests/tests.yml
Normal file
27
tests/tests.yml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
# Tests that run in all contexts
|
||||||
|
- hosts: localhost
|
||||||
|
roles:
|
||||||
|
- role: standard-test-beakerlib
|
||||||
|
tags:
|
||||||
|
- classic
|
||||||
|
- atomic
|
||||||
|
tests:
|
||||||
|
- ip-neigh-sanity-test
|
||||||
|
- ip-rule-sanity-test
|
||||||
|
- bridge-utility
|
||||||
|
- ip-link-sanity-test
|
||||||
|
- ip-address-sanity-test
|
||||||
|
- ip-address-label-sanity-test
|
||||||
|
- ip-fou-sanity-test
|
||||||
|
- ip-token-sanity-test
|
||||||
|
- ip-tuntap-sanity-test
|
||||||
|
- ip-tunnel-sanity-test
|
||||||
|
- ip-l2tp-sanity-test
|
||||||
|
- ip-netns-sanity-test
|
||||||
|
- ip-route-sanity-test
|
||||||
|
- ip-neighbor-sanity-test
|
||||||
|
required_packages:
|
||||||
|
- iproute
|
||||||
|
- bridge-utils
|
||||||
|
- python3
|
Loading…
Reference in New Issue
Block a user