History log of /src/sys/netmpls/mpls_ttl.c |
Revision | | Date | Author | Comments |
1.15 |
| 27-Dec-2018 |
maxv | Remove M_COPY_PKTHDR, M_MOVE_PKTHDR, M_ALIGN and MH_ALIGN.
|
1.14 |
| 03-Sep-2018 |
riastradh | Rename min/max -> uimin/uimax for better honesty.
These functions are defined on unsigned int. The generic name min/max should not silently truncate to 32 bits on 64-bit systems. This is purely a name change -- no functional change intended.
HOWEVER! Some subsystems have
#define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b))
even though our standard name for that is MIN/MAX. Although these may invite multiple evaluation bugs, these do _not_ cause integer truncation.
To avoid `fixing' these cases, I first changed the name in libkern, and then compile-tested every file where min/max occurred in order to confirm that it failed -- and thus confirm that nothing shadowed min/max -- before changing it.
I have left a handful of bootloaders that are too annoying to compile-test, and some dead code:
cobalt ews4800mips hp300 hppa ia64 luna68k vax acorn32/if_ie.c (not included in any kernels) macppc/if_gm.c (superseded by gem(4))
It should be easy to fix the fallout once identified -- this way of doing things fails safe, and the goal here, after all, is to _avoid_ silent integer truncations, not introduce them.
Maybe one day we can reintroduce min/max as type-generic things that never silently truncate. But we should avoid doing that for a while, so that existing code has a chance to be detected by the compiler for conversion to uimin/uimax without changing the semantics until we can properly audit it all. (Who knows, maybe in some cases integer truncation is actually intended!)
|
1.13 |
| 11-May-2018 |
maxv | branches: 1.13.2; Retire ICMPPRINTFS, it's annoying and it doesn't build.
|
1.12 |
| 11-Apr-2018 |
maxv | Add one more XXX in the list.
|
1.11 |
| 19-Jan-2018 |
maxv | branches: 1.11.2; Add XXX.
|
1.10 |
| 19-Jan-2018 |
maxv | Move the ICMP Extension structures from mpls_ttl.c to ip_icmp.h; that's part of the ICMP protocol (per RFC4884), and not specific to MPLS. Also add ih_exthdr in struct icmp, the 'length' field appeared.
While here, style in MPLS.
|
1.9 |
| 08-Dec-2017 |
maxv | Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now.
|
1.8 |
| 10-Jun-2016 |
ozaki-r | branches: 1.8.10; Avoid storing a pointer of an interface in a mbuf
Having a pointer of an interface in a mbuf isn't safe if we remove big kernel locks; an interface object (ifnet) can be destroyed anytime in any packet processing and accessing such object via a pointer is racy. Instead we have to get an object from the interface collection (ifindex2ifnet) via an interface index (if_index) that is stored to a mbuf instead of an pointer.
The change provides two APIs: m_{get,put}_rcvif_psref that use psref(9) for sleep-able critical sections and m_{get,put}_rcvif that use pserialize(9) for other critical sections. The change also adds another API called m_get_rcvif_NOMPSAFE, that is NOT MP-safe and for transition moratorium, i.e., it is intended to be used for places where are not planned to be MP-ified soon.
The change adds some overhead due to psref to performance sensitive paths, however the overhead is not serious, 2% down at worst.
Proposed on tech-kern and tech-net.
|
1.7 |
| 10-Jun-2016 |
ozaki-r | Introduce m_set_rcvif and m_reset_rcvif
The API is used to set (or reset) a received interface of a mbuf. They are counterpart of m_get_rcvif, which will come in another commit, hide internal of rcvif operation, and reduce the diff of the upcoming change.
No functional change.
|
1.6 |
| 26-Apr-2016 |
ozaki-r | Sweep unnecessary route.h inclusions
|
1.5 |
| 24-Aug-2015 |
pooka | sprinkle _KERNEL_OPT
|
1.4 |
| 07-Aug-2013 |
kefren | branches: 1.4.4; 1.4.6; 1.4.8; 1.4.12; reserve space for ICMP header accordingly to RFC4884
|
1.3 |
| 05-Jul-2010 |
kefren | branches: 1.3.2; 1.3.4; 1.3.12; 1.3.18; 1.3.22; 1.3.24; 1.3.26; 1.3.32; do some rudimentary checks on ip4 header before passing packet to mpls_icmp_error
|
1.2 |
| 02-Jul-2010 |
kefren | branches: 1.2.2; * correct packet size * fix crash when cluster was involved * extension offset is constant * fix endianess issues in BoS loop * free cluster if INET not defined but icmp_respond sysctl != 1
|
1.1 |
| 26-Jun-2010 |
kefren | Add MPLS support, proposed on tech-net@ a couple of days ago
Welcome to 5.99.33
|
1.2.2.3 |
| 05-Mar-2011 |
rmind | sync with head
|
1.2.2.2 |
| 03-Jul-2010 |
rmind | sync with head
|
1.2.2.1 |
| 02-Jul-2010 |
rmind | file mpls_ttl.c was added on branch rmind-uvmplock on 2010-07-03 01:20:00 +0000
|
1.3.32.1 |
| 13-Mar-2018 |
snj | Pull up following revision(s) (requested by uwe in ticket #1534): sys/net/if_mpls.c: 1.31-1.33 via patch sys/netmpls/mpls_ttl.c: 1.9 via patch Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now. -- Kick MPLS packets earlier. -- Several changes: * In mpls_unlabel_inet, copy the label locally. It's not incorrect to keep a pointer on the mbuf, but it's bug-friendly. * In mpls_label_inetX, fix the length check. Meanwhile add an XXX: we just want to make sure that m_copydata won't fail, but if we were guaranteed that m has M_PKTHDR set, we could simply check the length against m->m_pkthdr.len.
|
1.3.26.1 |
| 28-Aug-2013 |
rmind | sync with head
|
1.3.24.1 |
| 13-Mar-2018 |
snj | Pull up following revision(s) (requested by uwe in ticket #1534): sys/net/if_mpls.c: 1.31-1.33 via patch sys/netmpls/mpls_ttl.c: 1.9 via patch Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now. -- Kick MPLS packets earlier. -- Several changes: * In mpls_unlabel_inet, copy the label locally. It's not incorrect to keep a pointer on the mbuf, but it's bug-friendly. * In mpls_label_inetX, fix the length check. Meanwhile add an XXX: we just want to make sure that m_copydata won't fail, but if we were guaranteed that m has M_PKTHDR set, we could simply check the length against m->m_pkthdr.len.
|
1.3.22.2 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.3.22.1 |
| 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.3.18.1 |
| 13-Mar-2018 |
snj | Pull up following revision(s) (requested by uwe in ticket #1534): sys/net/if_mpls.c: 1.31-1.33 via patch sys/netmpls/mpls_ttl.c: 1.9 via patch Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now. -- Kick MPLS packets earlier. -- Several changes: * In mpls_unlabel_inet, copy the label locally. It's not incorrect to keep a pointer on the mbuf, but it's bug-friendly. * In mpls_label_inetX, fix the length check. Meanwhile add an XXX: we just want to make sure that m_copydata won't fail, but if we were guaranteed that m has M_PKTHDR set, we could simply check the length against m->m_pkthdr.len.
|
1.3.12.1 |
| 22-May-2014 |
yamt | sync with head.
for a reference, the tree before this commit was tagged as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
|
1.3.4.2 |
| 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
1.3.4.1 |
| 05-Jul-2010 |
uebayasi | file mpls_ttl.c was added on branch uebayasi-xip on 2010-08-17 06:47:49 +0000
|
1.3.2.2 |
| 11-Aug-2010 |
yamt | sync with head.
|
1.3.2.1 |
| 05-Jul-2010 |
yamt | file mpls_ttl.c was added on branch yamt-nfs-mp on 2010-08-11 22:54:58 +0000
|
1.4.12.1 |
| 24-Feb-2018 |
snj | Pull up following revision(s) (requested by maxv in ticket #1571): sys/net/if_mpls.c: 1.31-1.33 via patch sys/netmpls/mpls_ttl.c: 1.9 Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now. -- Kick MPLS packets earlier. -- Several changes: * Declare TRIM_LABEL as a function. * In mpls_unlabel_inet, copy the label locally. It's not incorrect to keep a pointer on the mbuf, but it's bug-friendly. * In mpls_label_inetX, fix the length check. Meanwhile add an XXX: we just want to make sure that m_copydata won't fail, but if we were guaranteed that m has M_PKTHDR set, we could simply check the length against m->m_pkthdr.len.
|
1.4.8.1 |
| 24-Feb-2018 |
snj | Pull up following revision(s) (requested by maxv in ticket #1571): sys/net/if_mpls.c: 1.31-1.33 via patch sys/netmpls/mpls_ttl.c: 1.9 Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now. -- Kick MPLS packets earlier. -- Several changes: * Declare TRIM_LABEL as a function. * In mpls_unlabel_inet, copy the label locally. It's not incorrect to keep a pointer on the mbuf, but it's bug-friendly. * In mpls_label_inetX, fix the length check. Meanwhile add an XXX: we just want to make sure that m_copydata won't fail, but if we were guaranteed that m has M_PKTHDR set, we could simply check the length against m->m_pkthdr.len.
|
1.4.6.3 |
| 09-Jul-2016 |
skrll | Sync with HEAD
|
1.4.6.2 |
| 29-May-2016 |
skrll | Sync with HEAD
|
1.4.6.1 |
| 22-Sep-2015 |
skrll | Sync with HEAD
|
1.4.4.1 |
| 24-Feb-2018 |
snj | Pull up following revision(s) (requested by maxv in ticket #1571): sys/net/if_mpls.c: 1.31-1.33 via patch sys/netmpls/mpls_ttl.c: 1.9 Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now. -- Kick MPLS packets earlier. -- Several changes: * Declare TRIM_LABEL as a function. * In mpls_unlabel_inet, copy the label locally. It's not incorrect to keep a pointer on the mbuf, but it's bug-friendly. * In mpls_label_inetX, fix the length check. Meanwhile add an XXX: we just want to make sure that m_copydata won't fail, but if we were guaranteed that m has M_PKTHDR set, we could simply check the length against m->m_pkthdr.len.
|
1.8.10.1 |
| 12-Feb-2018 |
snj | Pull up following revision(s) (requested by maxv in ticket #546): sys/net/if_mpls.c: 1.31-1.33 sys/netmpls/mpls_ttl.c: 1.9-1.11 Style, and fix several bugs: - ip4_check(), mpls_unlabel_inet() and mpls_unlabel_inet6() perform pullups, so we need to pass the updated pointers back - in mpls_lse() the route is not always freed Looks a little better now. -- Kick MPLS packets earlier. -- Several changes: * Declare TRIM_LABEL as a function. * In mpls_unlabel_inet, copy the label locally. It's not incorrect to keep a pointer on the mbuf, but it's bug-friendly. * In mpls_label_inetX, fix the length check. Meanwhile add an XXX: we just want to make sure that m_copydata won't fail, but if we were guaranteed that m has M_PKTHDR set, we could simply check the length against m->m_pkthdr.len. -- Style in MPLS. -- Add XXX.
|
1.11.2.4 |
| 18-Jan-2019 |
pgoyette | Synch with HEAD
|
1.11.2.3 |
| 06-Sep-2018 |
pgoyette | Sync with HEAD
Resolve a couple of conflicts (result of the uimin/uimax changes)
|
1.11.2.2 |
| 21-May-2018 |
pgoyette | Sync with HEAD
|
1.11.2.1 |
| 16-Apr-2018 |
pgoyette | Sync with HEAD, resolve some conflicts
|
1.13.2.1 |
| 10-Jun-2019 |
christos | Sync with HEAD
|