#
a2fcd3af |
|
20-Jan-2024 |
Gordon Bergling <gbe@FreeBSD.org> |
net: Fix two typos in source code comments - s/strucutres/structures/ MFC after: 3 days
|
#
29363fb4 |
|
23-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove ancient SCCS tags. Remove ancient SCCS tags from the tree, automated scripting, with two minor fixup to keep things compiling. All the common forms in the tree were removed with a perl script. Sponsored by: Netflix
|
#
2ff63af9 |
|
16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .h pattern Remove /^\s*\*+\s*\$FreeBSD\$.*$\n/
|
#
7ff9ae90 |
|
03-Aug-2023 |
Marius Strobl <marius@FreeBSD.org> |
iflib(9): Remove support for cloning pseudo interfaces This code was used by the first incarnation of wg(4) and is dead ever since f187d6dfbf633665ba6740fe22742aec60ce02a2 has removed the latter again. Moreover, this code matched iflib(4) like a square peg fits in a round hole, was incomplete and despite some hacks still tailored to VPC and wg(4) but not generic. In effect, this reverts the following: 09f6ff4f1a47c3009dc16fdc609a44f2341bc7ac (w/ its "ancillary changes") 9aeca21324f481f57f2ecb7009f461f4f51b62b3 1f93e931d9f0c688f43f98ef777e04636a325526 0f9544d03e89d180f94a7a84b110ec7d2b6c625a 0dd691b41276ce13d25ffb1443af27f85038aa3f Reviewed by: erj, kbowling Differential Revision: <https://reviews.freebsd.org/D41196>
|
#
c344eff9 |
|
16-Jun-2023 |
Alexander V. Chernikov <melifaro@FreeBSD.org> |
netlink: dump interface capabilities with other interface data. This change exports interface capabilities using the standard Netlink attribute type, bitset, and switches `ifconfig(8)` to use it when displaying interface data. Bitset comes in two representations. The first one is "compact", where the bits are exported via two arrays - "mask" listing the "valid" bits and "values, providing the values for those bits. The second one is more verbose, listing each bit as a separate item, with its name, id and value. The latter option is handy when submitting update requests. The support for setting capabilities will be added in the upcoming diffs. Differential Revision: https://reviews.freebsd.org/D40331
|
#
616a6c9f |
|
16-May-2023 |
Konstantin Belousov <kib@FreeBSD.org> |
net/if.h: fix style of if_t definition Reviewed by: jhibbits Sponsored by: NVidia networking Differential revision: https://reviews.freebsd.org/D40125
|
#
a6b55ee6 |
|
17-Apr-2023 |
Gleb Smirnoff <glebius@FreeBSD.org> |
net: replace IFF_KNOWSEPOCH with IFF_NEEDSEPOCH Expect that drivers call into the network stack with the net epoch entered. This has already been the fact since early 2020. The net interrupts, that are marked with INTR_TYPE_NET, were entering epoch since 511d1afb6bf. For the taskqueues there is NET_TASK_INIT() and all drivers that were known back in 2020 we marked with it in 6c3e93cb5a4. However in e87c4940156 we took conservative approach and preferred to opt-in rather than opt-out for the epoch. This change not only reverts e87c4940156 but adds a safety belt to avoid panicing with INVARIANTS if there is a missed driver. With INVARIANTS we will run in_epoch() check, print a warning and enter the net epoch. A driver that prints can be quickly fixed with the IFF_NEEDSEPOCH flag, but better be augmented to properly enter the epoch itself. Note on TCP LRO: it is a backdoor to enter the TCP stack bypassing some layers of net stack, ignoring either old IFF_KNOWSEPOCH or the new IFF_NEEDSEPOCH. But the tcp_lro_flush_all() asserts the presence of network epoch. Indeed, all NIC drivers that support LRO already provide the epoch, either with help of INTR_TYPE_NET or just running NET_EPOCH_ENTER() in their code. Reviewed by: zlei, gallatin, erj Differential Revision: https://reviews.freebsd.org/D39510
|
#
ae330108 |
|
12-Jan-2023 |
Justin Hibbits <jhibbits@FreeBSD.org> |
Revert "ifnet/API: Move the IfAPI from if_var.h to if.h" <net/if.h> should be a fully user-facing header, so these APIs don't belong there. Revert and will find another approach. This reverts commit fe33e0ab83d1fbc3c5cd4a2591ba0036e47b1fec. Fixes: fe33e0ab83d1 Sponsored by: Juniper Networks, Inc.
|
#
fe33e0ab |
|
11-Jan-2023 |
Justin Hibbits <jhibbits@FreeBSD.org> |
ifnet/API: Move the IfAPI from if_var.h to if.h Summary: The "public" KPI for ifnet belongs in net/if.h, with net/if_var.h being implementation details for the netstack. This is the next step in enforcing that separation. Reviewed by: melifaro Sponsored by: Juniper Networks, Inc. Differential Revision: https://reviews.freebsd.org/D38030
|
#
11905a0b |
|
04-Jan-2023 |
Justin Hibbits <jhibbits@FreeBSD.org> |
ifnet: Expose if_t to userspace <net/if_var.h> should be a kernel-only header, but it's included elsewhere. Until that's addressed expose if_t to userspace to fix the build. Fixes: be4315dcbb8 Sponsored by: Juniper Networks, Inc.
|
#
be4315dc |
|
21-Dec-2022 |
Justin Hibbits <jhibbits@FreeBSD.org> |
ifnet/DrvAPI: Move if_t typedef to a better place Summary: <net/if_var.h> should really be used by the netstack only, not by drivers. Eventually all the accessors will be moved to <net/if.h> as well, but for now just move the typedef while the KPI gets sorted and drivers get converted. Sponsored by: Juniper Networks, Inc. Reviewed By: melifaro, glebius Differential Revision: https://reviews.freebsd.org/D37784
|
#
01143ba1 |
|
23-Dec-2022 |
Konstantin Belousov <kib@FreeBSD.org> |
ifcapnv: fix IFCAP2 usage IFCAP2_XXX constants are integers, they do not need shift for the definition. But their usage as bitmask for if_capenable2 does require shift. Add convenience macro IFCAP2_BIT() for consumers. Fix the only existing consumer, mlx5(4) RXTLS enable bits. Reported by: jhb Reviewed by: jhb, jhibbits, hselasky Coverity CID: 1501659 Sponsored by: NVIDIA networking Differential revision: https://reviews.freebsd.org/D37862
|
#
eb1da3e5 |
|
09-Dec-2022 |
Justin Hibbits <jhibbits@FreeBSD.org> |
DrvAPI: Extend driver KPI with more accessors Summary: Add the following accessors to hide some more netstack details: * if_get/setcapabilities2 and *bits analogue * if_setdname * if_getxname * if_transmit - wrapper for call to ifp->if_transmit() - This required changing the existing if_transmit to if_transmit_default, since that's its purpose. * if_getalloctype * if_getindex * if_foreach_addr_type - Like if_foreach_lladdr() but for any address family type. Used by some drivers to iterate over all AF_INET addresses. * if_init() - wrapper for ifp->if_init() call * if_setinputfn * if_setsndtagallocfn * if_togglehwassist Reviewers: #transport, #network, glebius, melifaro Reviewed by: #network, melifaro Sponsored by: Juniper Networks, Inc. Differential Revision: https://reviews.freebsd.org/D37664
|
#
1bcd230f |
|
03-Dec-2022 |
Alexander V. Chernikov <melifaro@FreeBSD.org> |
netlink: add interface notification on link status / flags change. * Add link-state change notifications by subscribing to ifnet_link_event. In the Linux netlink model, link state is reported in 2 places: first is the IFLA_OPERSTATE, which stores state per RFC2863. The second is an IFF_LOWER_UP interface flag. As many applications rely on the latter, reserve 1 bit from if_flags, named as IFF_NETLINK_1. This flag is mapped to IFF_LOWER_UP in the netlink headers. This is done to avoid making applications think this flag is actually supported / presented in non-netlink outputs. * Add flag change notifications, by hooking into rt_ifmsg(). In the netlink model, notification should include the bitmask for the change flags. Update rt_ifmsg() to include such bitmask. Differential Revision: https://reviews.freebsd.org/D37597
|
#
c9a5c48a |
|
27-May-2022 |
Konrad Sewiłło-Jopek <kjopek@gmail.com> |
arp: Implement sticky ARP mode for interfaces. Provide sticky ARP flag for network interface which marks it as the "sticky" one similarly to what we have for bridges. Once interface is marked sticky, any address resolved using the ARP will be saved as a static one in the ARP table. Such functionality may be used to prevent ARP spoofing or to decrease latencies in Ethernet networks. The drawbacks include potential limitations in usage of ARP-based load-balancers and high-availability solutions such as carp(4). The implemented option is disabled by default, therefore should not impact the default behaviour of the networking stack. Sponsored by: Conclusive Engineering sp. z o.o. Reviewed By: melifaro, pauamma_gundo.com Differential Revision: https://reviews.freebsd.org/D35314 MFC after: 2 weeks
|
#
6a311e6f |
|
14-Dec-2021 |
Konstantin Belousov <kib@FreeBSD.org> |
Add ifcap2 names for RXTLS4 and RXTLS6 interface capabilities and corresponding nvlist capabilities name strings. Reviewed by: hselasky, jhb, kp (previous version) Sponsored by: NVIDIA Networking MFC after: 3 weeks Differential revision: https://reviews.freebsd.org/D32551
|
#
051e7d78 |
|
17-Oct-2021 |
Konstantin Belousov <kib@FreeBSD.org> |
Kernel-side infrastructure to implement nvlist-based set/get ifcaps Reviewed by: hselasky, jhb, kp (previous version) Sponsored by: NVIDIA Networking MFC after: 3 weeks Differential revision: https://reviews.freebsd.org/D32551
|
#
01e9cbc4 |
|
05-May-2021 |
John Baldwin <jhb@FreeBSD.org> |
Use thunks for compat ioctls using struct ifgroupreq. Reviewed by: brooks, kib Obtained from: CheriBSD Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D29893
|
#
6d2a10d9 |
|
08-Feb-2021 |
Kristof Provost <kp@FreeBSD.org> |
Widen ifnet_detach_sxlock coverage Widen the ifnet_detach_sxlock to cover the entire vnet sysuninit code. This ensures that we can't end up having the vnet_sysuninit free the UDP pcb while the detach code is running and trying to purge the UDP pcb. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D28530
|
#
3f43ada9 |
|
28-Jan-2021 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Catch up with 6edfd179c86: mechanically rename IFCAP_NOMAP to IFCAP_MEXTPG. Originally IFCAP_NOMAP meant that the mbuf has external storage pointer that points to unmapped address. Then, this was extended to array of such pointers. Then, such mbufs were augmented with header/trailer. Basically, extended mbufs are extended, and set of features is subject to change. The new name should be generic enough to avoid further renaming.
|
#
f3f2ee76 |
|
10-Dec-2020 |
Brooks Davis <brooks@FreeBSD.org> |
style(9): Correct whitespace in struct definitions struct ifconf and struct ifreq use the odd style "struct<tab>foo". struct ifdrv seems to have tried to follow this but was committed with spaces in place of most tabs resulting in "struct<space><space>ifdrv". MFC after: 3 days
|
#
521eac97 |
|
28-Oct-2020 |
John Baldwin <jhb@FreeBSD.org> |
Support hardware rate limiting (pacing) with TLS offload. - Add a new send tag type for a send tag that supports both rate limiting (packet pacing) and TLS offload (mostly similar to D22669 but adds a separate structure when allocating the new tag type). - When allocating a send tag for TLS offload, check to see if the connection already has a pacing rate. If so, allocate a tag that supports both rate limiting and TLS offload rather than a plain TLS offload tag. - When setting an initial rate on an existing ifnet KTLS connection, set the rate in the TCP control block inp and then reset the TLS send tag (via ktls_output_eagain) to reallocate a TLS + ratelimit send tag. This allocates the TLS send tag asynchronously from a task queue, so the TLS rate limit tag alloc is always sleepable. - When modifying a rate on a connection using KTLS, look for a TLS send tag. If the send tag is only a plain TLS send tag, assume we failed to allocate a TLS ratelimit tag (either during the TCP_TXTLS_ENABLE socket option, or during the send tag reset triggered by ktls_output_eagain) and ignore the new rate. If the send tag is a ratelimit TLS send tag, change the rate on the TLS tag and leave the inp tag alone. - Lock the inp lock when setting sb_tls_info for a socket send buffer so that the routines in tcp_ratelimit can safely dereference the pointer without needing to grab the socket buffer lock. - Add an IFCAP_TXTLS_RTLMT capability flag and associated administrative controls in ifconfig(8). TLS rate limit tags are only allocated if this capability is enabled. Note that TLS offload (whether unlimited or rate limited) always requires IFCAP_TXTLS[46]. Reviewed by: gallatin, hselasky Relnotes: yes Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D26691
|
#
cefdb895 |
|
07-Oct-2020 |
Konstantin Belousov <kib@FreeBSD.org> |
Fix typo. Sponsored by: Mellanox Technologies/NVIDIA Networking MFC after: 3 days
|
#
830edb45 |
|
17-Sep-2020 |
Navdeep Parhar <np@FreeBSD.org> |
Add two new ifnet capabilities for hw checksumming and TSO for VXLAN traffic. These are similar to the existing VLAN capabilities. Reviewed by: kib@ Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D25873
|
#
662c1305 |
|
01-Sep-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
net: clean up empty lines in .c and .h files
|
#
e87c4940 |
|
24-Feb-2020 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Although most of the NIC drivers are epoch ready, due to peer pressure switch over to opt-in instead of opt-out for epoch. Instead of IFF_NEEDSEPOCH, provide IFF_KNOWSEPOCH. If driver marks itself with IFF_KNOWSEPOCH, then ether_input() would not enter epoch when processing its packets. Now this will create recursive entrance in epoch in >90% network drivers, but will guarantee safeness of the transition. Mark several tested drivers as IFF_KNOWSEPOCH. Reviewed by: hselasky, jeff, bz, gallatin Differential Revision: https://reviews.freebsd.org/D23674
|
#
0921628d |
|
22-Jan-2020 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Introduce flag IFF_NEEDSEPOCH that marks Ethernet interfaces that supposedly may call into ether_input() without network epoch. They all need to be reviewed before 13.0-RELEASE. Some may need be fixed. The flag is not planned to be used in the kernel for a long time.
|
#
247cf566 |
|
17-Sep-2019 |
Konstantin Belousov <kib@FreeBSD.org> |
Add SIOCGIFDOWNREASON. The ioctl(2) is intended to provide more details about the cause of the down for the link. Eventually we might define a comprehensive list of codes for the situations. But interface also allows the driver to provide free-form null-terminated ASCII string to provide arbitrary non-formalized information. Sample implementation exists for mlx5(4), where the string is fetched from firmware controlling the port. Reviewed by: hselasky, rrs Sponsored by: Mellanox Technologies MFC after: 1 week Differential revision: https://reviews.freebsd.org/D21527
|
#
b2e60773 |
|
26-Aug-2019 |
John Baldwin <jhb@FreeBSD.org> |
Add kernel-side support for in-kernel TLS. KTLS adds support for in-kernel framing and encryption of Transport Layer Security (1.0-1.2) data on TCP sockets. KTLS only supports offload of TLS for transmitted data. Key negotation must still be performed in userland. Once completed, transmit session keys for a connection are provided to the kernel via a new TCP_TXTLS_ENABLE socket option. All subsequent data transmitted on the socket is placed into TLS frames and encrypted using the supplied keys. Any data written to a KTLS-enabled socket via write(2), aio_write(2), or sendfile(2) is assumed to be application data and is encoded in TLS frames with an application data type. Individual records can be sent with a custom type (e.g. handshake messages) via sendmsg(2) with a new control message (TLS_SET_RECORD_TYPE) specifying the record type. At present, rekeying is not supported though the in-kernel framework should support rekeying. KTLS makes use of the recently added unmapped mbufs to store TLS frames in the socket buffer. Each TLS frame is described by a single ext_pgs mbuf. The ext_pgs structure contains the header of the TLS record (and trailer for encrypted records) as well as references to the associated TLS session. KTLS supports two primary methods of encrypting TLS frames: software TLS and ifnet TLS. Software TLS marks mbufs holding socket data as not ready via M_NOTREADY similar to sendfile(2) when TLS framing information is added to an unmapped mbuf in ktls_frame(). ktls_enqueue() is then called to schedule TLS frames for encryption. In the case of sendfile_iodone() calls ktls_enqueue() instead of pru_ready() leaving the mbufs marked M_NOTREADY until encryption is completed. For other writes (vn_sendfile when pages are available, write(2), etc.), the PRUS_NOTREADY is set when invoking pru_send() along with invoking ktls_enqueue(). A pool of worker threads (the "KTLS" kernel process) encrypts TLS frames queued via ktls_enqueue(). Each TLS frame is temporarily mapped using the direct map and passed to a software encryption backend to perform the actual encryption. (Note: The use of PHYS_TO_DMAP could be replaced with sf_bufs if someone wished to make this work on architectures without a direct map.) KTLS supports pluggable software encryption backends. Internally, Netflix uses proprietary pure-software backends. This commit includes a simple backend in a new ktls_ocf.ko module that uses the kernel's OpenCrypto framework to provide AES-GCM encryption of TLS frames. As a result, software TLS is now a bit of a misnomer as it can make use of hardware crypto accelerators. Once software encryption has finished, the TLS frame mbufs are marked ready via pru_ready(). At this point, the encrypted data appears as regular payload to the TCP stack stored in unmapped mbufs. ifnet TLS permits a NIC to offload the TLS encryption and TCP segmentation. In this mode, a new send tag type (IF_SND_TAG_TYPE_TLS) is allocated on the interface a socket is routed over and associated with a TLS session. TLS records for a TLS session using ifnet TLS are not marked M_NOTREADY but are passed down the stack unencrypted. The ip_output_send() and ip6_output_send() helper functions that apply send tags to outbound IP packets verify that the send tag of the TLS record matches the outbound interface. If so, the packet is tagged with the TLS send tag and sent to the interface. The NIC device driver must recognize packets with the TLS send tag and schedule them for TLS encryption and TCP segmentation. If the the outbound interface does not match the interface in the TLS send tag, the packet is dropped. In addition, a task is scheduled to refresh the TLS send tag for the TLS session. If a new TLS send tag cannot be allocated, the connection is dropped. If a new TLS send tag is allocated, however, subsequent packets will be tagged with the correct TLS send tag. (This latter case has been tested by configuring both ports of a Chelsio T6 in a lagg and failing over from one port to another. As the connections migrated to the new port, new TLS send tags were allocated for the new port and connections resumed without being dropped.) ifnet TLS can be enabled and disabled on supported network interfaces via new '[-]txtls[46]' options to ifconfig(8). ifnet TLS is supported across both vlan devices and lagg interfaces using failover, lacp with flowid enabled, or lacp with flowid enabled. Applications may request the current KTLS mode of a connection via a new TCP_TXTLS_MODE socket option. They can also use this socket option to toggle between software and ifnet TLS modes. In addition, a testing tool is available in tools/tools/switch_tls. This is modeled on tcpdrop and uses similar syntax. However, instead of dropping connections, -s is used to force KTLS connections to switch to software TLS and -i is used to switch to ifnet TLS. Various sysctls and counters are available under the kern.ipc.tls sysctl node. The kern.ipc.tls.enable node must be set to true to enable KTLS (it is off by default). The use of unmapped mbufs must also be enabled via kern.ipc.mb_use_ext_pgs to enable KTLS. KTLS is enabled via the KERN_TLS kernel option. This patch is the culmination of years of work by several folks including Scott Long and Randall Stewart for the original design and implementation; Drew Gallatin for several optimizations including the use of ext_pgs mbufs, the M_NOTREADY mechanism for TLS records awaiting software encryption, and pluggable software crypto backends; and John Baldwin for modifications to support hardware TLS offload. Reviewed by: gallatin, hselasky, rrs Obtained from: Netflix Sponsored by: Netflix, Chelsio Communications Differential Revision: https://reviews.freebsd.org/D21277
|
#
82334850 |
|
28-Jun-2019 |
John Baldwin <jhb@FreeBSD.org> |
Add an external mbuf buffer type that holds multiple unmapped pages. Unmapped mbufs allow sendfile to carry multiple pages of data in a single mbuf, without mapping those pages. It is a requirement for Netflix's in-kernel TLS, and provides a 5-10% CPU savings on heavy web serving workloads when used by sendfile, due to effectively compressing socket buffers by an order of magnitude, and hence reducing cache misses. For this new external mbuf buffer type (EXT_PGS), the ext_buf pointer now points to a struct mbuf_ext_pgs structure instead of a data buffer. This structure contains an array of physical addresses (this reduces cache misses compared to an earlier version that stored an array of vm_page_t pointers). It also stores additional fields needed for in-kernel TLS such as the TLS header and trailer data that are currently unused. To more easily detect these mbufs, the M_NOMAP flag is set in m_flags in addition to M_EXT. Various functions like m_copydata() have been updated to safely access packet contents (using uiomove_fromphys()), to make things like BPF safe. NIC drivers advertise support for unmapped mbufs on transmit via a new IFCAP_NOMAP capability. This capability can be toggled via the new 'nomap' and '-nomap' ifconfig(8) commands. For NIC drivers that only transmit packet contents via DMA and use bus_dma, adding the capability to if_capabilities and if_capenable should be all that is required. If a NIC does not support unmapped mbufs, they are converted to a chain of mapped mbufs (using sf_bufs to provide the mapping) in ip_output or ip6_output. If an unmapped mbuf requires software checksums, it is also converted to a chain of mapped mbufs before computing the checksum. Submitted by: gallatin (earlier version) Reviewed by: gallatin, hselasky, rrs Discussed with: ae, kp (firewalls) Relnotes: yes Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D20616
|
#
d25f8522 |
|
26-Nov-2018 |
Mark Johnston <markj@FreeBSD.org> |
Plug routing sysctl leaks. Various structures exported by sysctl_rtsock() contain padding fields which were not being zeroed. Reported by: Thomas Barabosch, Fraunhofer FKIE Reviewed by: ae MFC after: 3 days Security: kernel memory disclosure Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D18333
|
#
09f6ff4f |
|
11-May-2018 |
Matt Macy <mmacy@FreeBSD.org> |
iflib(9): Add support for cloning pseudo interfaces Part 3 of many ... The VPC framework relies heavily on cloning pseudo interfaces (vmnics, vpc switch, vcpswitch port, hostif, vxlan if, etc). This pulls in that piece. Some ancillary changes get pulled in as a side effect. Reviewed by: shurd@ Approved by: sbruno@ Sponsored by: Joyent, Inc. Differential Revision: https://reviews.freebsd.org/D15347
|
#
756181b8 |
|
05-Apr-2018 |
Brooks Davis <brooks@FreeBSD.org> |
Add 32-bit compat for ioctls that take struct ifgroupreq. Use an accessor to access ifgr_group and ifgr_groups. Use an macro CASE_IOC_IFGROUPREQ(cmd) in place of case statements such as "case SIOCAIFGROUP:". This avoids poluting the switch statements with large numbers of #ifdefs. Reviewed by: kib Obtained from: CheriBSD MFC after: 1 week Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D14960
|
#
541d96aa |
|
30-Mar-2018 |
Brooks Davis <brooks@FreeBSD.org> |
Use an accessor function to access ifr_data. This fixes 32-bit compat (no ioctl command defintions are required as struct ifreq is the same size). This is believed to be sufficent to fully support ifconfig on 32-bit systems. Reviewed by: kib Obtained from: CheriBSD MFC after: 1 week Relnotes: yes Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D14900
|
#
86d2ef16 |
|
27-Mar-2018 |
Brooks Davis <brooks@FreeBSD.org> |
Fix access to ifru_buffer on freebsd32. Make all kernel accesses to ifru_buffer go via access functions which take the process ABI into account and use an appropriate union to access members in the correct place in struct ifreq. Reviewed by: kib Obtained from: CheriBSD MFC after: 1 week Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D14846
|
#
f1379734 |
|
27-Mar-2018 |
Konstantin Belousov <kib@FreeBSD.org> |
Allow to specify PCP on packets not belonging to any VLAN. According to 802.1Q-2014, VLAN tagged packets with VLAN id 0 should be considered as untagged, and only PCP and DEI values from the VLAN tag are meaningful. See for instance https://www.cisco.com/c/en/us/td/docs/switches/connectedgrid/cg-switch-sw-master/software/configuration/guide/vlan0/b_vlan_0.html. Make it possible to specify PCP value for outgoing packets on an ethernet interface. When PCP is supplied, the tag is appended, VLAN id set to 0, and PCP is filled by the supplied value. The code to do VLAN tag encapsulation is refactored from the if_vlan.c and moved into if_ethersubr.c. Drivers might have issues with filtering VID 0 packets on receive. This bug should be fixed for each driver. Reviewed by: ae (previous version), hselasky, melifaro Sponsored by: Mellanox Technologies MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D14702
|
#
17eea320 |
|
06-Dec-2017 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Garbage collect IFCAP_POLLING_NOCOUNT. It wasn't used since very beginning of polling(4). The module always ignored return value from driver polling handler.
|
#
51369649 |
|
20-Nov-2017 |
Pedro F. Giffuni <pfg@FreeBSD.org> |
sys: further adoption of SPDX licensing ID tags. Mainly focus on files that use BSD 3-Clause license. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts. Special thanks to Wind River for providing access to "The Duke of Highlander" tool: an older (2014) run over FreeBSD tree was useful as a starting point.
|
#
3cf8254f |
|
07-Nov-2017 |
Konstantin Belousov <kib@FreeBSD.org> |
Add a place for a driver to report rx timestamps in nanoseconds from boot for the received packets. The rcv_tstmp field overlaps the place of Ln header length indicators, not used by received packets. The basic pkthdr rearrangement change in sys/mbuf.h was provided by gallatin. There are two accompanying M_ flags: M_TSTMP means that there is the timestamp (and it was generated by hardware). Another flag M_TSTMP_HPREC indicates that the timestamp is high-precision. Practically M_TSTMP_HPREC means that hardware provided additional precision comparing with the stamps when the flag is not set. E.g., for ConnectX all packets are stamped by hardware when PCIe transaction to write out the completion descriptor is performed, but PTP packet are stamped on port. For Intel cards, when PTP assist is enabled, only PTP packets are stamped in the limited number of registers, so if Intel cards ever start support this mechanism, they would always set M_TSTMP | M_TSTMP_HPREC if hardware timestamp is present for the given packet. Add IFCAP_HWRXTSTMP interface capability to indicate the support for hardware rx timestamping, and ifconfig(8) command to toggle it. Based on the patch by: gallatin Reviewed by: gallatin (previous version), hselasky Sponsored by: Mellanox Technologies MFC after: 2 weeks (? mbuf KBI issue) X-Differential revision: https://reviews.freebsd.org/D12638
|
#
0f3af041 |
|
04-Sep-2017 |
Sepherosa Ziehau <sephe@FreeBSD.org> |
if: Add ioctls to get RSS key and hash type/function. It will be needed by hn(4) to configure its RSS key and hash type/function in the transparent VF mode in order to match VF's RSS settings. The description of the transparent VF mode and the RSS hash value issue are here: https://svnweb.freebsd.org/base?view=revision&revision=322299 https://svnweb.freebsd.org/base?view=revision&revision=322485 These are generic enough to promise two independent IOCs instead of abusing SIOCGDRVSPEC. Setting RSS key and hash type/function is a different story, which probably requires more discussion. Comment about UDP_{IPV4,IPV6,IPV6_EX} were only in the patch in the review request; these hash types are standardized now. Reviewed by: gallatin MFC after: 1 week Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D12174
|
#
fbbd9655 |
|
28-Feb-2017 |
Warner Losh <imp@FreeBSD.org> |
Renumber copyright clause 4 Renumber cluase 4 to 3, per what everybody else did when BSD granted them permission to remove clause 3. My insistance on keeping the same numbering for legal reasons is too pedantic, so give up on that point. Submitted by: Jan Schaumann <jschauma@stevens.edu> Pull Request: https://github.com/freebsd/freebsd/pull/96
|
#
f3e7afe2 |
|
18-Jan-2017 |
Hans Petter Selasky <hselasky@FreeBSD.org> |
Implement kernel support for hardware rate limited sockets. - Add RATELIMIT kernel configuration keyword which must be set to enable the new functionality. - Add support for hardware driven, Receive Side Scaling, RSS aware, rate limited sendqueues and expose the functionality through the already established SO_MAX_PACING_RATE setsockopt(). The API support rates in the range from 1 to 4Gbytes/s which are suitable for regular TCP and UDP streams. The setsockopt(2) manual page has been updated. - Add rate limit function callback API to "struct ifnet" which supports the following operations: if_snd_tag_alloc(), if_snd_tag_modify(), if_snd_tag_query() and if_snd_tag_free(). - Add support to ifconfig to view, set and clear the IFCAP_TXRTLMT flag, which tells if a network driver supports rate limiting or not. - This patch also adds support for rate limiting through VLAN and LAGG intermediate network devices. - How rate limiting works: 1) The userspace application calls setsockopt() after accepting or making a new connection to set the rate which is then stored in the socket structure in the kernel. Later on when packets are transmitted a check is made in the transmit path for rate changes. A rate change implies a non-blocking ifp->if_snd_tag_alloc() call will be made to the destination network interface, which then sets up a custom sendqueue with the given rate limitation parameter. A "struct m_snd_tag" pointer is returned which serves as a "snd_tag" hint in the m_pkthdr for the subsequently transmitted mbufs. 2) When the network driver sees the "m->m_pkthdr.snd_tag" different from NULL, it will move the packets into a designated rate limited sendqueue given by the snd_tag pointer. It is up to the individual drivers how the rate limited traffic will be rate limited. 3) Route changes are detected by the NIC drivers in the ifp->if_transmit() routine when the ifnet pointer in the incoming snd_tag mismatches the one of the network interface. The network adapter frees the mbuf and returns EAGAIN which causes the ip_output() to release and clear the send tag. Upon next ip_output() a new "snd_tag" will be tried allocated. 4) When the PCB is detached the custom sendqueue will be released by a non-blocking ifp->if_snd_tag_free() call to the currently bound network interface. Reviewed by: wblock (manpages), adrian, gallatin, scottl (network) Differential Revision: https://reviews.freebsd.org/D3687 Sponsored by: Mellanox Technologies MFC after: 3 months
|
#
2ccbbd06 |
|
06-Jun-2016 |
Marcelo Araujo <araujo@FreeBSD.org> |
Add support to priority code point (PCP) that is an 3-bit field which refers to IEEE 802.1p class of service and maps to the frame priority level. Values in order of priority are: 1 (Background (lowest)), 0 (Best effort (default)), 2 (Excellent effort), 3 (Critical applications), 4 (Video, < 100ms latency), 5 (Video, < 10ms latency), 6 (Internetwork control) and 7 (Network control (highest)). Example of usage: root# ifconfig em0.1 create root# ifconfig em0.1 vlanpcp 3 Note: The review D801 includes the pf(4) part, but as discussed with kristof, we won't commit the pf(4) bits for now. The credits of the original code is from rwatson. Differential Revision: https://reviews.freebsd.org/D801 Reviewed by: gnn, adrian, loos Discussed with: rwatson, glebius, kristof Tested by: many including Matthew Grooms <mgrooms__shrew.net> Obtained from: pfSense Relnotes: Yes
|
#
ea463f2d |
|
29-Aug-2014 |
Alexander V. Chernikov <melifaro@FreeBSD.org> |
* Add SIOCGI2C driver ioctl used to retrieve i2c info. * Convert ixgbe to use this ioctl * Convert ifconfig to use generic i2c handler for "ix" interfaces. Approved by: Eric Joyner (ixgbe part) MFC after: 2 weeks Sponsored by: Yandex LLC
|
#
9753faf5 |
|
29-Jul-2014 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Garbage collect couple of unused fields from struct ifaddr: - ifa_claim_addr() unused since removal of NetAtalk - ifa_metric seems to be never utilized, always a copy of if_metric
|
#
b245f96c |
|
12-Mar-2014 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Since 32-bit if_baudrate isn't enough to describe a baud rate of a 10 Gbit interface, in the r241616 a crutch was provided. It didn't work well, and finally we decided that it is time to break ABI and simply make if_baudrate a 64-bit value. Meanwhile, the entire struct if_data was reviewed. o Remove the if_baudrate_pf crutch. o Make all fields of struct if_data fixed machine independent size. The notion of data (packet counters, etc) are by no means MD. And it is a bug that on amd64 we've got a 64-bit counters, while on i386 32-bit, which at modern speeds overflow within a second. This also removes quite a lot of COMPAT_FREEBSD32 code. o Give 16 bit for the ifi_datalen field. This field was provided to make future changes to if_data less ABI breaking. Unfortunately the 8 bit size of it had effectively limited sizeof if_data to 256 bytes. o Give 32 bits to ifi_mtu and ifi_metric. o Give 64 bits to the rest of fields, since they are counters. __FreeBSD_version bumped. Discussed with: emax Sponsored by: Netflix Sponsored by: Nginx, Inc.
|
#
555036b5 |
|
10-Nov-2013 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Remove never used ioctls that originate from KAME. The proof of their zero usage was exp-run from misc/183538.
|
#
77b89ad8 |
|
06-Nov-2013 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Provide compat layer for OSIOCAIFADDR.
|
#
af50ea38 |
|
04-Nov-2013 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Axe IFF_SMART. Fortunately this layering violating flag was never used, it was just declared.
|
#
5fb009bd |
|
05-Nov-2013 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Drop support for historic ioctls and also undefine them, so that code that checks their presence via ifdef, won't use them. Bump __FreeBSD_version as safety measure.
|
#
c29e1ad9 |
|
28-Oct-2013 |
Gleb Smirnoff <glebius@FreeBSD.org> |
- Make the prophecy from 1997 happen and remove if_var.h inclusion from if.h. - Remove unnecessary includes and declarations from if.h - Remove unnecessary includes and declarations from if_var.h [1] - Mark some declarations that are about to be removed in near future with comments, explaning why this declaration is still necessary. - Protect eventhandler declarations with #ifdef SYS_EVENTHANDLER_H. Obtained from: bdeBSD [1] Sponsored by: Netflix Sponsored by: Nginx, Inc.
|
#
4cdc1f54 |
|
09-Oct-2013 |
Gleb Smirnoff <glebius@FreeBSD.org> |
There are some high performance NICs that count statistics in hardware, and there are ifnets, that do that via counter(9). Provide a flag that would skip cache line trashing '+=' operation in ether_input(). Sponsored by: Netflix Sponsored by: Nginx, Inc. Reviewed by: melifaro, adrian Approved by: re (marius)
|
#
1b4381af |
|
24-Aug-2013 |
Andre Oppermann <andre@FreeBSD.org> |
Restructure the mbuf pkthdr to make it fit for upcoming capabilities and features. The changes in particular are: o Remove rarely used "header" pointer and replace it with a 64bit protocol/ layer specific union PH_loc for local use. Protocols can flexibly overlay their own 8 to 64 bit fields to store information while the packet is worked on. o Mechanically convert IP reassembly, IGMP/MLD and ATM to use pkthdr.PH_loc instead of pkthdr.header. o Extend csum_flags to 64bits to allow for additional future offload information to be carried (e.g. iSCSI, IPsec offload, and others). o Move the RSS hash type enumerator from abusing m_flags to its own 8bit rsstype field. Adjust accessor macros. o Add cosqos field to store Class of Service / Quality of Service information with the packet. It is not yet supported in any drivers but allows us to get on par with Cisco/Juniper in routing applications (plus MPLS QoS) with a modernized ALTQ. o Add four 8 bit fields l[2-5]hlen to store the relative header offsets from the start of the packet. This is important for various offload capabilities and to relieve the drivers from having to parse the packet and protocol headers to find out location of checksums and other information. Header parsing in drivers is a lot of copy-paste and unhandled corner cases which we want to avoid. o Add another flexible 64bit union to map various additional persistent packet information, like ether_vtag, tso_segsz and csum fields. Depending on the csum_flags settings some fields may have different usage making it very flexible and adaptable to future capabilities. o Restructure the CSUM flags to better signify their outbound (down the stack) and inbound (up the stack) use. The CSUM flags used to be a bit chaotic and rather poorly documented leading to incorrect use in many places. Bring clarity into their use through better naming. Compatibility mappings are provided to preserve the API. The drivers can be corrected one by one and MFC'd without issue. o The size of pkthdr stays the same at 48/56bytes (32/64bit architectures). Sponsored by: The FreeBSD Foundation
|
#
608ae712 |
|
17-Oct-2012 |
Maksim Yevmenkin <emax@FreeBSD.org> |
provide helper if_initbaudrate() to set if_baudrate_pf and if_baudrate_pf. again, use ixgbe(4) as an example of how to use new helper function. Reviewed by: jhb MFC after: 1 week
|
#
0fef97fe |
|
16-Oct-2012 |
Maksim Yevmenkin <emax@FreeBSD.org> |
introduce concept of ifi_baudrate power factor. the idea is to work around the problem where high speed interfaces (such as ixgbe(4)) are not able to report real ifi_baudrate. bascially, take a spare byte from struct if_data and use it to store ifi_baudrate power factor. in other words, real ifi_baudrate = ifi_baudrate * 10 ^ ifi_baudrate power factor this should be backwards compatible with old binaries. use ixgbe(4) as an example on how drivers would set ifi_baudrate power factor Discussed with: kib, scottl, glebius MFC after: 1 week
|
#
304050dd |
|
29-Jun-2012 |
John Baldwin <jhb@FreeBSD.org> |
Hold GIF_LOCK() for almost all of gif_start(). It is required to be held across in_gif_output() and in6_gif_output() anyway, and once it is held across those it might as well be held for the entire loop. This simplifies the code and removes the need for the custom IFF_GIF_WANTED flag (which belonged in the softc and not as an IFF_* flag anyway). Tested by: Vincent Hoffman vince unsane co uk
|
#
6f17e3a3 |
|
11-Jun-2012 |
Randall Stewart <rrs@FreeBSD.org> |
Opps forgot to commit the flag.
|
#
356ab07e |
|
28-May-2012 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
It turns out that too many drivers are not only parsing the L2/3/4 headers for TSO but also for generic checksum offloading. Ideally we would only have one common function shared amongst all drivers, and perhaps when updating them for IPv6 we should introduce that. Eventually we should provide the meta information along with mbufs to avoid (re-)parsing entirely. To not break IPv6 (checksums and offload) and to be able to MFC the changes without risking to hurt 3rd party drivers, duplicate the v4 framework, as other OSes have done as well. Introduce interface capability flags for TX/RX checksum offload with IPv6, to allow independent toggling (where possible). Add CSUM_*_IPV6 flags for UDP/TCP over IPv6, and reserve further for SCTP, and IPv6 fragmentation. Define CSUM_DELAY_DATA_IPV6 as we do for legacy IP and add an alias for CSUM_DATA_VALID_IPV6. This pretty much brings IPv6 handling in line with IPv4. TSO is still handled in a different way and not via if_hwassist. Update ifconfig to allow (un)setting of the new capability flags. Update loopback to announce the new capabilities and if_hwassist flags. Individual driver updates will have to follow, as will SCTP. Reported by: gallatin, dim, .. Reviewed by: gallatin (glanced at?) MFC after: 3 days X-MFC with: r235961,235959,235958
|
#
6d076ae8 |
|
10-Feb-2012 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
Introduce a new NET_RT_IFLISTL API to query the address list. It works on extended and extensible structs if_msghdrl and ifa_msghdrl. This will allow us to extend both the msghdrl structs and eventually if_data in the future without breaking the ABI. Bump __FreeBSD_version to allow ports to more easily detect the new API. Reviewed by: glebius, brooks MFC after: 3 days
|
#
e82cf13b |
|
10-Feb-2012 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
Backout changes from r228571. Remove if_data from struct ifa_msghdr again. While this breaks carp on HEAD temporary, it restores the upgrade path from stable, and head before 20111215. Reviewed by: glebius, brooks
|
#
71212473 |
|
20-Dec-2011 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Provide ABI compatibility shim to enable configuring of addresses with ifconfig(8) prior to r228571. Requested by: brooks
|
#
08b68b0e |
|
15-Dec-2011 |
Gleb Smirnoff <glebius@FreeBSD.org> |
A major overhaul of the CARP implementation. The ip_carp.c was started from scratch, copying needed functionality from the old implemenation on demand, with a thorough review of all code. The main change is that interface layer has been removed from the CARP. Now redundant addresses are configured exactly on the interfaces, they run on. The CARP configuration itself is, as before, configured and read via SIOCSVH/SIOCGVH ioctls. A new prefix created with SIOCAIFADDR or SIOCAIFADDR_IN6 may now be configured to a particular virtual host id, which makes the prefix redundant. ifconfig(8) semantics has been changed too: now one doesn't need to clone carpXX interface, he/she should directly configure a vhid on a Ethernet interface. To supply vhid data from the kernel to an application the getifaddrs(8) function had been changed to pass ifam_data with each address. [1] The new implementation definitely closes all PRs related to carp(4) being an interface, and may close several others. It also allows to run a single redundant IP per interface. Big thanks to Bjoern Zeeb for his help with inet6 part of patch, for idea on using ifam_data and for several rounds of reviewing! PR: kern/117000, kern/126945, kern/126714, kern/120130, kern/117448 Reviewed by: bz Submitted by: bz [1]
|
#
cf05e311 |
|
20-Oct-2011 |
Ed Schouten <ed@FreeBSD.org> |
Add missing #includes. According to POSIX, these two header files should be able to be included by themselves, not depending on other headers. The <net/if.h> header uses struct sockaddr when __BSD_VISIBLE=1, while <netinet/tcp.h> uses integer datatypes (u_int32_t, u_short, etc). MFC after: 2 months
|
#
35fd7bc0 |
|
02-Jul-2011 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
Add infrastructure to allow all frames/packets received on an interface to be assigned to a non-default FIB instance. You may need to recompile world or ports due to the change of struct ifnet. Submitted by: cjsp Submitted by: Alexander V. Chernikov (melifaro ipfw.ru) (original versions) Reviewed by: julian Reviewed by: Alexander V. Chernikov (melifaro ipfw.ru) MFC after: 2 weeks X-MFC: use spare in struct ifnet
|
#
c9d658e9 |
|
13-Jun-2011 |
Luigi Rizzo <luigi@FreeBSD.org> |
Grab one of the ifcap bits for netmap, and enable printing in ifconfig. Document the fact that we might want an IFCAP_CANTCHANGE mask, even though the value is not yet used in sys/net/if.c (asked on -current a week ago, no feedback so i assume no objection).
|
#
c5649739 |
|
07-Dec-2010 |
Weongyo Jeong <weongyo@FreeBSD.org> |
Adds IFF_CANTCONFIG to IFF_CANTCHANGE that it shouldn't happen through ioctl(2).
|
#
6e3cb000 |
|
07-Dec-2010 |
Weongyo Jeong <weongyo@FreeBSD.org> |
Introduces IFF_CANTCONFIG interface flag to point that the interface isn't configurable in a meaningful way. This is for ifconfig(8) or other tools not to change code whenever IFT_USB-like interfaces are registered at the interface list. Reviewed by: brooks No objections: gavin, jkim
|
#
9af74f3d |
|
21-Oct-2010 |
Sergey Kandaurov <pluknet@FreeBSD.org> |
Reshuffle SIOCGIFCONF32 handler from r155224. - move all the chunks into one file, which allows to hide SIOCGIFCONF32 global definition as well. - replace __amd64__ with proper COMPAT_FREEBSD32 around. - handle 32bit capacity before going into the handler itself instead of doing internal 32bit specific changes within it (e.g. as it's done for SIOCGDEFIFACE32_IN6). - use explicitely sized types for ABI compat. Approved by: kib (mentor) MFC after: 2 weeks
|
#
a7d5f7eb |
|
19-Oct-2010 |
Jamie Gritton <jamie@FreeBSD.org> |
A new jail(8) with a configuration file, to replace the work currently done by /etc/rc.d/jail.
|
#
94190b39 |
|
01-Apr-2010 |
Qing Li <qingli@FreeBSD.org> |
MFC 205222 Verify interface up status using its link state only if the interface has such capability. The interface capability flag indicates whether such capability exists. This approach is much more backward compatible. Physical device driver changes will be part of another commit. Also updated the ifconfig utility to show the LINKSTATE capability if present. Reviewed by: rwatson, imp, juli
|
#
d5eda01f |
|
18-Mar-2010 |
Pyun YongHyeon <yongari@FreeBSD.org> |
MFC r204149: Add TSO support on VLANs. Intentionally separated IFCAP_VLAN_HWTSO from IFCAP_VLAN_HWTAGGING. I think some hardwares may be able to TSO over VLAN without VLAN hardware tagging. Driver changes and userland support will follow.
|
#
6b533b5d |
|
16-Mar-2010 |
Qing Li <qingli@FreeBSD.org> |
Verify interface up status using its link state only if the interface has such capability. The interface capability flag indicates whether such capability exists. This approach is much more backward compatible. Physical device driver changes will be part of another commit. Also updated the ifconfig utility to show the LINKSTATE capability if present. Reviewed by: rwatson, imp, juli MFC after: 3 days
|
#
a5a931b3 |
|
25-Feb-2010 |
Xin LI <delphij@FreeBSD.org> |
MFC 203052: Add interface description capability as inspired by OpenBSD. Thanks for rwatson@, jhb@, brooks@ and others for feedback to the old implementation! Sponsored by: iXsystems, Inc.
|
#
9b76d9cb |
|
20-Feb-2010 |
Pyun YongHyeon <yongari@FreeBSD.org> |
Add TSO support on VLANs. Intentionally separated IFCAP_VLAN_HWTSO from IFCAP_VLAN_HWTAGGING. I think some hardwares may be able to TSO over VLAN without VLAN hardware tagging. Driver changes and userland support will follow. Reviewed by: thompsa
|
#
215940b3 |
|
26-Jan-2010 |
Xin LI <delphij@FreeBSD.org> |
Revised revision 199201 (add interface description capability as inspired by OpenBSD), based on comments from many, including rwatson, jhb, brooks and others. Sponsored by: iXsystems, Inc. MFC after: 1 month
|
#
02bcb7ec |
|
05-Jan-2010 |
John Baldwin <jhb@FreeBSD.org> |
MFC 201196: Change vlan interfaces to cope more usefully with the parent interface being renamed. Previously the vlan interfaces would lose their configuration as if the parent interface had been physically removed. Now vlan interfaces ignore rename events. - Add a new ifnet flag (IFF_RENAMING) that is set while an ifnet is being renamed. This flag can be checked in ifnet departure/arrival event handlers to treat rename events differently. - Change the ifnet departure event handler in the if_vlan(4) driver to ignore departure events due to a trunk interface being renamed.
|
#
5428776e |
|
29-Dec-2009 |
John Baldwin <jhb@FreeBSD.org> |
Change vlan interfaces to cope more usefully with the parent interface being renamed. Previously the vlan interfaces would lose their configuration as if the parent interface had been physically removed. Now vlan interfaces ignore rename events. - Add a new ifnet flag (IFF_RENAMING) that is set while an ifnet is being renamed. This flag can be checked in ifnet departure/arrival event handlers to treat rename events differently. - Change the ifnet departure event handler in the if_vlan(4) driver to ignore departure events due to a trunk interface being renamed. Reviewed by: brooks, rwatson MFC after: 1 week
|
#
1a9d4dda |
|
12-Nov-2009 |
Xin LI <delphij@FreeBSD.org> |
Revert revision 199201 for now as it has introduced a kernel vulnerability and requires more polishing.
|
#
41c8c6e8 |
|
11-Nov-2009 |
Xin LI <delphij@FreeBSD.org> |
Add interface description capability as inspired by OpenBSD. MFC after: 3 months
|
#
679e1390 |
|
15-Jun-2009 |
Jamie Gritton <jamie@FreeBSD.org> |
Manage vnets via the jail system. If a jail is given the boolean parameter "vnet" when it is created, a new vnet instance will be created along with the jail. Networks interfaces can be moved between prisons with an ioctl similar to the one that moves them between vimages. For now vnets will co-exist under both jails and vimages, but soon struct vimage will be going away. Reviewed by: zec, julian Approved by: bz (mentor)
|
#
1abcdbd1 |
|
30-May-2009 |
Attilio Rao <attilio@FreeBSD.org> |
When user_frac in the polling subsystem is low it is going to busy the CPU for too long period than necessary. Additively, interfaces are kept polled (in the tick) even if no more packets are available. In order to avoid such situations a new generic mechanism can be implemented in proactive way, keeping track of the time spent on any packet and fragmenting the time for any tick, stopping the processing as soon as possible. In order to implement such mechanism, the polling handler needs to change, returning the number of packets processed. While the intended logic is not part of this patch, the polling KPI is broken by this commit, adding an int return value and the new flag IFCAP_POLLING_NOCOUNT (which will signal that the return value is meaningless for the installed handler and checking should be skipped). Bump __FreeBSD_version in order to signal such situation. Reviewed by: emaste Sponsored by: Sandvine Incorporated
|
#
242a8e72 |
|
23-Apr-2009 |
Robert Watson <rwatson@FreeBSD.org> |
Add a new interface flag, IFF_DYING, which is set when a device driver calls if_free(), and remains set if the refcount is elevated. IF_DYING skips the bit in the if_flags bitmask previously used by IFF_NEEDSGIANT, so that an MFC can be done without changing which bit is used, as IFF_NEEDSGIANT is still present in 7.x. ifnet_byindex_ref() checks for IFF_DYING and returns NULL if it is set, preventing new references from by acquired by index, preventing monitoring sysctls from seeing it. Other lookup mechanisms currently do not check IFF_DYING, but may need to in the future. MFC after: 3 weeks
|
#
04ac2960 |
|
18-Apr-2009 |
Robert Watson <rwatson@FreeBSD.org> |
Remove IFF_NEEDSGIANT interface flag: we no longer provide ifnet-layer infrastructure to support non-MPSAFE network device drivers.
|
#
a1d4f19c |
|
16-Feb-2009 |
Luigi Rizzo <luigi@FreeBSD.org> |
remove unnecessary forward declaration
|
#
d7f03759 |
|
19-Oct-2008 |
Ulf Lilleengen <lulf@FreeBSD.org> |
- Import the HEAD csup code which is the basis for the cvsmode work.
|
#
22893351 |
|
28-Aug-2008 |
Jack F Vogel <jfv@FreeBSD.org> |
Fix to bug kern/126850. Only dispatch event hander if the interface had a parent (was attached). Reviewed by: EvilSam MFC after: 1 week
|
#
feaed6c5 |
|
30-Jul-2008 |
John Baldwin <jhb@FreeBSD.org> |
Trim some noise from some #ifdef's. This had leaked into the compat32 support for bpf(4) due to hacks in the Y! tree for a truss32 binary (since superseded by native support for 32-bit binaries in truss itself). MFC after: 1 week
|
#
f5f15253 |
|
27-Mar-2008 |
Ian Dowse <iedowse@FreeBSD.org> |
Add IFF_NEEDSGIANT to IFF_CANTCHANGE, to prevent user-level code from clearing the IFF_NEEDSGIANT flag on Giant-locked interfaces. In particular, wpa_supplicant was doing this on USB interfaces, causing panics when Giant-locked code was then called without Giant. Submitted by: Alexey Popov Reviewed by: rwatson MFC after: 3 days
|
#
4c908c35 |
|
15-Dec-2007 |
Kip Macy <kmacy@FreeBSD.org> |
fix bonehead cut and paste error in last commit
|
#
a0d231fb |
|
15-Dec-2007 |
Kip Macy <kmacy@FreeBSD.org> |
Create separate capability flags for TCP over IPv4 and TCP over IPv6
|
#
835a6f12 |
|
15-Dec-2007 |
Kip Macy <kmacy@FreeBSD.org> |
add interface capability for TOE
|
#
de0abf19 |
|
09-Dec-2007 |
Sam Leffler <sam@FreeBSD.org> |
Wake On Lan (WOL) infrastructure Submitted by: Stefan Sperling <stsp@stsp.name> Reviewed by: brooks
|
#
db24121c |
|
11-Jun-2007 |
Andre Oppermann <andre@FreeBSD.org> |
Add IFCAP_LRO flag for drivers to announce their TCP Large Receive Offload capabilities.
|
#
bec59525 |
|
16-May-2007 |
Brooks Davis <brooks@FreeBSD.org> |
The struct if_data members ifi_recvquota and ifi_xmitquota have been unused for ages. Rename them to ifi_spare_char1 and ifi_spare_char2 respectively to indicate this face.
|
#
d562befc |
|
02-May-2007 |
Yaroslav Tykhiy <ytykhiy@gmail.com> |
Fix a couple of typos in a comment.
|
#
233dcce1 |
|
06-Sep-2006 |
Andre Oppermann <andre@FreeBSD.org> |
First step of TSO (TCP segmentation offload) support in our network stack. o add IFCAP_TSO[46] for drivers to announce this capability for IPv4 and IPv6 o add CSUM_TSO flag to mbuf pkthdr csum_flags field o add tso_segsz field to mbuf pkthdr o enhance ip_output() packet length check to allow for large TSO packets o extend tcp_maxmtu[46]() with a flag pointer to pass interface capabilities o adjust all callers of tcp_maxmtu[46]() accordingly Discussed on: -current, -net Sponsored by: TCP/IP Optimization Fundraise 2005
|
#
60d4ab7a |
|
06-Sep-2006 |
Andre Oppermann <andre@FreeBSD.org> |
Improve description of if_capabilities, if_capenable and ifi_hwassist. Sponsored by: TCP/IP Optimization Fundraise 2005
|
#
0dad3f0e |
|
19-Jun-2006 |
Max Laier <mlaier@FreeBSD.org> |
Import interface groups from OpenBSD. This allows to group interfaces in order to - for example - apply firewall rules to a whole group of interfaces. This is required for importing pf from OpenBSD 3.9 Obtained from: OpenBSD (with changes) Discussed on: -net (back in April)
|
#
73dbd3da |
|
11-May-2006 |
John Baldwin <jhb@FreeBSD.org> |
Remove various bits of conditional Alpha code and fixup a few comments.
|
#
19cf0498 |
|
02-Feb-2006 |
Paul Saab <ps@FreeBSD.org> |
Implement SIOCGIFCONF for 32bit binaries.
|
#
75ee267c |
|
30-Jan-2006 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Merge the //depot/user/yar/vlan branch into CVS. It contains some collective work by yar, thompsa and myself. The checksum offloading part also involves work done by Mihail Balikov. The most important changes: o Instead of global linked list of all vlan softc use a per-trunk hash. The size of hash is dynamically adjusted, depending on number of entries. This changes struct ifnet, replacing counter of vlans with a pointer to trunk structure. This change is an improvement for setups with big number of VLANs, several interfaces and several CPUs. It is a small regression for a setup with a single VLAN interface. An alternative to dynamic hash is a per-trunk static array with 4096 entries, which is a compile time option - VLAN_ARRAY. In my experiments the array is not an improvement, probably because such a big trunk structure doesn't fit into CPU cache. o Introduce an UMA zone for VLAN tags. Since drivers depend on it, the zone is declared in kern_mbuf.c, not in optional vlan(4) driver. This change is a big improvement for any setup utilizing vlan(4). o Use rwlock(9) instead of mutex(9) for locking. We are the first ones to do this! :) o Some drivers can do hardware VLAN tagging + hardware checksum offloading. Add an infrastructure for this. Whenever vlan(4) is attached to a parent or parent configuration is changed, the flags on vlan(4) interface are updated. In collaboration with: yar, thompsa In collaboration with: Mihail Balikov <mihail.balikov interbgc.com>
|
#
40929967 |
|
01-Oct-2005 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Big polling(4) cleanup. o Axe poll in trap. o Axe IFF_POLLING flag from if_flags. o Rework revision 1.21 (Giant removal), in such a way that poll_mtx is not dropped during call to polling handler. This fixes problem with idle polling. o Make registration and deregistration from polling in a functional way, insted of next tick/interrupt. o Obsolete kern.polling.enable. Polling is turned on/off with ifconfig. Detailed kern_poll.c changes: - Remove polling handler flags, introduced in 1.21. The are not needed now. - Forget and do not check if_flags, if_capenable and if_drv_flags. - Call all registered polling handlers unconditionally. - Do not drop poll_mtx, when entering polling handlers. - In ether_poll() NET_LOCK_GIANT prior to locking poll_mtx. - In netisr_poll() axe the block, where polling code asks drivers to unregister. - In netisr_poll() and ether_poll() do polling always, if any handlers are present. - In ether_poll_[de]register() remove a lot of error hiding code. Assert that arguments are correct, instead. - In ether_poll_[de]register() use standard return values in case of error or success. - Introduce poll_switch() that is a sysctl handler for kern.polling.enable. poll_switch() goes through interface list and enabled/disables polling. A message that kern.polling.enable is deprecated is printed. Detailed driver changes: - On attach driver announces IFCAP_POLLING in if_capabilities, but not in if_capenable. - On detach driver calls ether_poll_deregister() if polling is enabled. - In polling handler driver obtains its lock and checks IFF_DRV_RUNNING flag. If there is no, then unlocks and returns. - In ioctl handler driver checks for IFCAP_POLLING flag requested to be set or cleared. Driver first calls ether_poll_[de]register(), then obtains driver lock and [dis/en]ables interrupts. - In interrupt handler driver checks IFCAP_POLLING flag in if_capenable. If present, then returns.This is important to protect from spurious interrupts. Reviewed by: ru, sam, jhb
|
#
fc574570 |
|
08-Aug-2005 |
Robert Watson <rwatson@FreeBSD.org> |
For each interface flag, indicate whether or not it is owned by the device driver, owned by the network stack, or initialized by the device driver before attach and read-only from then on. Not all device drivers and network stack components currently follow these rules, especially with respect to IFF_UP, and a few exceptions with IFF_ALLMULTI. MFC after: 7 days
|
#
292ee7be |
|
09-Aug-2005 |
Robert Watson <rwatson@FreeBSD.org> |
Rename IFF_RUNNING to IFF_DRV_RUNNING, IFF_OACTIVE to IFF_DRV_OACTIVE, and move both flags from ifnet.if_flags to ifnet.if_drv_flags, making and documenting the locking of these flags the responsibility of the device driver, not the network stack. The flags for these two fields will be mutually exclusive so that they can be exposed to user space as though they were stored in the same variable. Provide #defines to provide the old names #ifndef _KERNEL, so that user applications (such as ifconfig) can use the old flag names. Using the old names in a device driver will result in a compile error in order to help device driver writers adopt the new model. When exposing the interface flags to user space, via interface ioctls or routing sockets, or the two fields together. Since the driver flags cannot currently be set for user space, no new logic is currently required to handle this case. Add some assertions that general purpose network stack routines, such as if_setflags(), are not improperly used on driver-owned flags. With this change, a large number of very minor network stack races are closed, subject to correct device driver locking. Most were likely never triggered. Driver sweep to follow; many thanks to pjd and bz for the line-by-line review they gave this patch. Reviewed by: pjd, bz MFC after: 7 days
|
#
8f867517 |
|
04-Jun-2005 |
Andrew Thompson <thompsa@FreeBSD.org> |
Add hooks into the networking layer to support if_bridge. This changes struct ifnet so a buildworld is necessary. Approved by: mlaier (mentor) Obtained from: NetBSD
|
#
bc9d2991 |
|
25-Feb-2005 |
Brooks Davis <brooks@FreeBSD.org> |
Change the definition of struct if_data's member ifi_epoch from wall clock time to uptime because wall clock time may go backwards. This is a change in the API which will impact SNMP agents who are using ifi_epoch to set RFC2233's ifCounterDiscontinuityTime. None are know to exist today. This will not impact applications that are using the <index, epoch> tuple to verify interface uniqueness except that it eliminates a race which could lead to a false assumption of uniqueness. Because this is a behavior change, bump __FreeBSD_version. Discussed with: re (jhb, scottl) MFC after: 3 days Pointed out by: pkh (way back at EuroBSDCon) Pointy hat: brooks
|
#
c398230b |
|
06-Jan-2005 |
Warner Losh <imp@FreeBSD.org> |
/* -> /*- for license, minor formatting changes
|
#
1f48dc25 |
|
17-Nov-2004 |
John-Mark Gurney <jmg@FreeBSD.org> |
sync comment on IFF_OACTIVE with reality.. IFF_OACTIVE is set when the hardware cannot take anymore packets, and so will supress the calling of the device's if_start method... Submitted by: bde
|
#
55287f2a |
|
07-Sep-2004 |
Brooks Davis <brooks@FreeBSD.org> |
Re-add ifi_epoch, to struct if_data, this time replacing ifi_unused to avoid ABI changes. It is set to the last time the interface counters were zeroed, currently the time if_attach() was called. It is intentended to be a valid value for RFC2233's ifCounterDiscontinuityTime and to make it easier for applications to verify that the interface they find at a given index is the one that was there last time they looked. Due to space constraints ifi_epoch is a time_t rather then a struct timeval. SNMP would prefer higher precision, but this unlikely to be useful in practice.
|
#
4ff62bd9 |
|
01-Sep-2004 |
Brooks Davis <brooks@FreeBSD.org> |
Back out ifi_epoch. The ABI breakage is too disruptive this close to 5-STABLE. ifi_epoch will shortly be reintroduced with less precistion using the space currently allocated to ifi_unused.
|
#
9e734b44 |
|
01-Sep-2004 |
Brooks Davis <brooks@FreeBSD.org> |
Use a spare byte in struct if_data to store the structure size without increasing it. Add code to ifconfig to use this size to find the sockaddr_dl after the struct if_data in the routing message. This allows struct if_data to grow (up to 255 bytes) without breaking ifconfig. Submitted by: peter
|
#
1fc4519b |
|
30-Aug-2004 |
Brooks Davis <brooks@FreeBSD.org> |
Add a new variable, ifi_epoch, to struct if_data. It is set to the last time the interface counters were zeroed, currently the time if_attach() was called. It is indentended to be a valid value for RFC2233's ifCounterDiscontinuityTime and to make it easier for applications to verify that the interface they find at a given index is the one that was there last time they looked. An if_epoch "compatability" macro has not been created as ifi_epoch has never been a member of struct ifnet. Approved by: andre, bms, wollman
|
#
af5e59bf |
|
27-Jul-2004 |
Robert Watson <rwatson@FreeBSD.org> |
Add a new network interface flag, IFF_NEEDSGIANT, which will allow device drivers to declare that the ifp->if_start() method implemented by the driver requires Giant in order to operate correctly. Add a 'struct task' to 'struct ifnet' that can be used to execute a deferred ifp->if_start() in the event that if_start needs to be called in a Giant-free environment. To do this, introduce if_start(), a wrapper function for ifp->if_start(). If the interface can run MPSAFE, it directly dispatches into the interface start routine. If it can't run MPSAFE, we're running with debug.mpsafenet != 0, and Giant isn't currently held, the task is queued to execute in a swi holding Giant via if_start_deferred(). Modify if_handoff() to use if_start() instead of direct dispatch. Modify 802.11 to use if_start() instead of direct dispatch. This is intended to provide increased compatibility for non-MPSAFE network device drivers in the presence of Giant-free operation via asynchronous dispatch. However, this commit does not mark any network interfaces as IFF_NEEDSGIANT.
|
#
f889d2ef |
|
22-Jun-2004 |
Brooks Davis <brooks@FreeBSD.org> |
Major overhaul of pseudo-interface cloning. Highlights include: - Split the code out into if_clone.[ch]. - Locked struct if_clone. [1] - Add a per-cloner match function rather then simply matching names of the form <name><unit> and <name>. - Use the match function to allow creation of <interface>.<tag> vlan interfaces. The old way is preserved unchanged! - Also the match function to allow creation of stf(4) interfaces named stf0, stf, or 6to4. This is the only major user visible change in that "ifconfig stf" creates the interface stf rather then stf0 and does not print "stf0" to stdout. - Allow destroy functions to fail so they can refuse to delete interfaces. Currently, we forbid the deletion of interfaces which were created in the init function, particularly lo0, pflog0, and pfsync0. In the case of lo0 this was a panic implementation so it does not count as a user visiable change. :-) - Since most interfaces do not need the new functionality, an family of wrapper functions, ifc_simple_*(), were created to wrap old style cloner functions. - The IF_CLONE_INITIALIZER macro is replaced with a new incompatible IFC_CLONE_INITIALIZER and ifc_simple consumers use IFC_SIMPLE_DECLARE instead. Submitted by: Maurycy Pawlowski-Wieronski <maurycy at fouk.org> [1] Reviewed by: andre, mlaier Discussed on: net
|
#
127d7b2d |
|
03-May-2004 |
Andre Oppermann <andre@FreeBSD.org> |
Link state change notification of ethernet media to the routing socket. o Extend the if_data structure with an ifi_link_state field and provide the corresponding defines for the valid states. o The mii_linkchg() callback updates the ifi_link_state field and calls rt_ifmsg() to notify listeners on the routing socket in addition to the kqueue KNOTE. o If vlans are configured on a physical interface notify and update all vlan pseudo devices as well with the vlan_link_state() callback. No objections by: sam, wpaul, ru, bms Brucification by: bde
|
#
3a3b019a |
|
11-Apr-2004 |
Ruslan Ermilov <ru@FreeBSD.org> |
Added the new interface capability option for drivers that implement user-configurable polling(4) support. Make ifconfig(8) aware of it. Suggested by: luigi
|
#
f36cfd49 |
|
07-Apr-2004 |
Warner Losh <imp@FreeBSD.org> |
Remove advertising clause from University of California Regent's license, per letter dated July 22, 1999 and email from Peter Wemm, Alan Cox and Robert Watson. Approved by: core, peter, alc, rwatson
|
#
9bf40ede |
|
31-Oct-2003 |
Brooks Davis <brooks@FreeBSD.org> |
Replace the if_name and if_unit members of struct ifnet with new members if_xname, if_dname, and if_dunit. if_xname is the name of the interface and if_dname/unit are the driver name and instance. This change paves the way for interface renaming and enhanced pseudo device creation and configuration symantics. Approved By: re (in principle) Reviewed By: njl, imp Tested On: i386, amd64, sparc64 Obtained From: NetBSD (if_xname)
|
#
deb62e28 |
|
01-Oct-2003 |
Ruslan Ermilov <ru@FreeBSD.org> |
By popular demand, added the "static ARP" per-interface option.
|
#
bb68f0af |
|
14-Nov-2002 |
Sam Leffler <sam@FreeBSD.org> |
o add IF_*bps macros for netbsd compatibility o add interface capabilities for vlan use and to signal jumbo frame support Reviewed by: many Approved by: re
|
#
edfcad95 |
|
02-Oct-2002 |
Mike Barcroft <mike@FreeBSD.org> |
style(9): o Align members of struct if_nameindex. o Align and sort function prototypes.
|
#
f2ba8326 |
|
02-Oct-2002 |
Mike Barcroft <mike@FreeBSD.org> |
Use standards visibility conditionals to conditionalize most of this header (details on how the visibility conditionals work are available in <sys/cdefs.h>). Use standard types instead of BSD specific ones, so that this header compiles in the standards case (specifically this means changing `u_int' to `unsigned int').
|
#
afbe3a0f |
|
27-Sep-2002 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add the "Monitor" interface flag. Setting this flag on an ethernet interface blocks transmission of packets and discards incoming packets after BPF processing. This is useful if you want to monitor network trafic but not interact with the network in question. Sponsored by: http://www.babeltech.dk
|
#
9717c34c |
|
28-Aug-2002 |
Maxim Sobolev <sobomax@FreeBSD.org> |
Add IFF_POLLING into the list of flags which are protected from changing via ioctl(SIOCSIFFLAGS). MFC after: 1 day
|
#
ffb079be |
|
19-Aug-2002 |
Maxim Sobolev <sobomax@FreeBSD.org> |
Implement user-setable promiscuous mode (a new `promisc' flag for ifconfig(8)). Also, for all interfaces in this mode pass all ethernet frames to upper layer, even those not addressed to our own MAC, which allows packets encapsulated in those frames be processed with packet filters (ipfw(8) et al). Emphatically requested by: Anton Turygin <pa3op@ukr-link.net> Valuable suggestions by: fenner
|
#
62f76486 |
|
18-Aug-2002 |
Maxim Sobolev <sobomax@FreeBSD.org> |
Increase size of ifnet.if_flags from 16 bits (short) to 32 bits (int). To avoid breaking application ABI use unused ifreq.ifru_flags[1] for upper 16 bits in SIOCSIFFLAGS and SIOCGIFFLAGS ioctl's. Reviewed by: -hackers, -net
|
#
ae5a19be |
|
25-May-2002 |
Brooks Davis <brooks@FreeBSD.org> |
Move all unit number management cloned interfaces into the cloning code. The reverts the API change which made the <if>_clone_destory() functions return an int instead of void bringing us into closer alignment with NetBSD. Reviewed by: net (a long time ago)
|
#
d497e878 |
|
20-May-2002 |
Ian Dowse <iedowse@FreeBSD.org> |
Avoid exposing struct if_clone and the sys/queue.h macros to userland programs by restricting these to the case where _KERNEL is defined. Reviewed by: brooks (ages ago)
|
#
929ddbbb |
|
19-Mar-2002 |
Alfred Perlstein <alfred@FreeBSD.org> |
Remove __P.
|
#
3b16e7b2 |
|
11-Mar-2002 |
Maxime Henrion <mux@FreeBSD.org> |
Simplify the interface cloning framework by handling unit unit allocation with a bitmap in the generic layer. This allows us to get rid of the duplicated rman code in every clonable interface. Reviewed by: brooks Approved by: phk
|
#
b75496fe |
|
04-Mar-2002 |
Brooks Davis <brooks@FreeBSD.org> |
Change the network interface cloning API so the destroy function returns an int errorcode instead of void in preperation for merging cloning of the loopback device. Submitted by: mux MFC after: 2 weeks
|
#
7b6edd04 |
|
18-Jan-2002 |
Ruslan Ermilov <ru@FreeBSD.org> |
Introduce an interface announcement message for the routing socket so that routing daemons and other interested parties know when an interface is attached/detached. PR: kern/33747 Obtained from: NetBSD MFC after: 2 weeks
|
#
e4fc250c |
|
14-Dec-2001 |
Luigi Rizzo <luigi@FreeBSD.org> |
Device Polling code for -current. Non-SMP, i386-only, no polling in the idle loop at the moment. To use this code you must compile a kernel with options DEVICE_POLLING and at runtime enable polling with sysctl kern.polling.enable=1 The percentage of CPU reserved to userland can be set with sysctl kern.polling.user_frac=NN (default is 50) while the remainder is used by polling device drivers and netisr's. These are the only two variables that you should need to touch. There are a few more parameters in kern.polling but the default values are adequate for all purposes. See the code in kern_poll.c for more details on them. Polling in the idle loop will be implemented shortly by introducing a kernel thread which does the job. Until then, the amount of CPU dedicated to polling will never exceed (100-user_frac). The equivalent (actually, better) code for -stable is at http://info.iet.unipi.it/~luigi/polling/ and also supports polling in the idle loop. NOTE to Alpha developers: There is really nothing in this code that is i386-specific. If you move the 2 lines supporting the new option from sys/conf/{files,options}.i386 to sys/conf/{files,options} I am pretty sure that this should work on the Alpha as well, just that I do not have a suitable test box to try it. If someone feels like trying it, I would appreciate it. NOTE to other developers: sure some things could be done better, and as always I am open to constructive criticism, which a few of you have already given and I greatly appreciated. However, before proposing radical architectural changes, please take some time to possibly try out this code, or at the very least read the comments in kern_poll.c, especially re. the reason why I am using a soft netisr and cannot (I believe) replace it with a simple timeout. Quick description of files touched by this commit: sys/conf/files.i386 new file kern/kern_poll.c sys/conf/options.i386 new option sys/i386/i386/trap.c poll in trap (disabled by default) sys/kern/kern_clock.c initialization and hardclock hooks. sys/kern/kern_intr.c minor swi_net changes sys/kern/kern_poll.c the bulk of the code. sys/net/if.h new flag sys/net/if_var.h declaration for functions used in device drivers. sys/net/netisr.h NETISR_POLL sys/dev/fxp/if_fxp.c sys/dev/fxp/if_fxpvar.h sys/pci/if_dc.c sys/pci/if_dcreg.h sys/pci/if_sis.c sys/pci/if_sisreg.h device driver modifications
|
#
de593450 |
|
17-Oct-2001 |
Jonathan Lemon <jlemon@FreeBSD.org> |
Add a SIOCGIFINDEX ioctl, which returns the index of a named interface. This will be used to more efficiently support if_nametoindex(3).
|
#
f7d86692 |
|
18-Sep-2001 |
Jonathan Lemon <jlemon@FreeBSD.org> |
Split HWCSUM into two components: RX and TX, for the benefit of drivers which can only do checksum offloading in one direction.
|
#
016da741 |
|
18-Sep-2001 |
Jonathan Lemon <jlemon@FreeBSD.org> |
Add two fields to the ifnet structure indicating what extra capabilities a network device has, and which ones are enabled.
|
#
b40ce416 |
|
12-Sep-2001 |
Julian Elischer <julian@FreeBSD.org> |
KSE Milestone 2 Note ALL MODULES MUST BE RECOMPILED make the kernel aware that there are smaller units of scheduling than the process. (but only allow one thread per process at this time). This is functionally equivalent to teh previousl -current except that there is a thread associated with each process. Sorry john! (your next MFC will be a doosie!) Reviewed by: peter@freebsd.org, dillon@freebsd.org X-MFC after: ha ha ha ha
|
#
30aad87d |
|
02-Jul-2001 |
Brooks Davis <brooks@FreeBSD.org> |
Add kernel infrastructure for network device cloning. Reviewed by: ru, ume Obtained from: NetBSD MFC after: 1 week
|
#
91421ba2 |
|
20-Feb-2001 |
Robert Watson <rwatson@FreeBSD.org> |
o Move per-process jail pointer (p->pr_prison) to inside of the subject credential structure, ucred (cr->cr_prison). o Allow jail inheritence to be a function of credential inheritence. o Abstract prison structure reference counting behind pr_hold() and pr_free(), invoked by the similarly named credential reference management functions, removing this code from per-ABI fork/exit code. o Modify various jail() functions to use struct ucred arguments instead of struct proc arguments. o Introduce jailed() function to determine if a credential is jailed, rather than directly checking pointers all over the place. o Convert PRISON_CHECK() macro to prison_check() function. o Move jail() function prototypes to jail.h. o Emulate the P_JAILED flag in fill_kinfo_proc() and no longer set the flag in the process flags field itself. o Eliminate that "const" qualifier from suser/p_can/etc to reflect mutex use. Notes: o Some further cleanup of the linux/jail code is still required. o It's now possible to consider resolving some of the process vs credential based permission checking confusion in the socket code. o Mutex protection of struct prison is still not present, and is required to protect the reference count plus some fields in the structure. Reviewed by: freebsd-arch Obtained from: TrustedBSD Project
|
#
2fa72ea7 |
|
05-Feb-2001 |
Jeroen Ruigrok van der Werven <asmodai@FreeBSD.org> |
Fix typo: compatability -> compatibility. Compatability is not an existing english word.
|
#
db4f9cc7 |
|
27-Mar-2000 |
Jonathan Lemon <jlemon@FreeBSD.org> |
Add support for offloading IP/TCP/UDP checksums to NIC hardware which supports them.
|
#
664a31e4 |
|
28-Dec-1999 |
Peter Wemm <peter@FreeBSD.org> |
Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" is an application space macro and the applications are supposed to be free to use it as they please (but cannot). This is consistant with the other BSD's who made this change quite some time ago. More commits to come.
|
#
76429de4 |
|
05-Nov-1999 |
Yoshinobu Inoue <shin@FreeBSD.org> |
KAME related header files additions and merges. (only those which don't affect c source files so much) Reviewed by: cvs-committers Obtained from: KAME project
|
#
c3aac50f |
|
27-Aug-1999 |
Peter Wemm <peter@FreeBSD.org> |
$Id$ -> $FreeBSD$
|
#
712020a1 |
|
04-Jul-1999 |
Bruce Evans <bde@FreeBSD.org> |
Fixed English errors, spelling errors and formatting errors in rev.1.51 and rev.1.53.
|
#
413dd0ba |
|
19-Jun-1999 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add a new interface ioctl, to return "aux status". This is inteded for to allow ifconfig to print various unstructured information from an interface. The data is returned from the kernel in ASCII form, see the comment in if.h for some technicalities. Canonical cut&paste example to be found in if_tun.c Initial use: Now tun* interfaces tell the PID of the process which opened them. Future uses could be (volounteers welcome!): Have ppp/slip interfaces tell which tty they use. Make sync interfaces return their media state: red/yellow/blue alarm, timeslot assignment and so on. Make ethernets warn about missing heartbeats and/or cables
|
#
cf4b9371 |
|
06-Jun-1999 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Introduce IFF_SMART bit. This means that the driver will add/delete routes when it knows it is up/down, rather than have the generic code belive it is up if configured. This is probably most useful for serial lines, although many PHY chips could probably tell us if we're connected to the cable/hub as well.
|
#
cb40a67f |
|
08-May-1999 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Fix some disordering I introduced with the jail code.
|
#
75c13541 |
|
28-Apr-1999 |
Poul-Henning Kamp <phk@FreeBSD.org> |
This Implements the mumbled about "Jail" feature. This is a seriously beefed up chroot kind of thing. The process is jailed along the same lines as a chroot does it, but with additional tough restrictions imposed on what the superuser can do. For all I know, it is safe to hand over the root bit inside a prison to the customer living in that prison, this is what it was developed for in fact: "real virtual servers". Each prison has an ip number associated with it, which all IP communications will be coerced to use and each prison has its own hostname. Needless to say, you need more RAM this way, but the advantage is that each customer can run their own particular version of apache and not stomp on the toes of their neighbors. It generally does what one would expect, but setting up a jail still takes a little knowledge. A few notes: I have no scripts for setting up a jail, don't ask me for them. The IP number should be an alias on one of the interfaces. mount a /proc in each jail, it will make ps more useable. /proc/<pid>/status tells the hostname of the prison for jailed processes. Quotas are only sensible if you have a mountpoint per prison. There are no privisions for stopping resource-hogging. Some "#ifdef INET" and similar may be missing (send patches!) If somebody wants to take it from here and develop it into more of a "virtual machine" they should be most welcome! Tools, comments, patches & documentation most welcome. Have fun... Sponsored by: http://www.rndassociates.com/ Run for almost a year by: http://www.servetheweb.com/
|
#
4add131e |
|
19-Feb-1999 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Since ifru_flags is a short, we can fit in a copy of the flags before they got changed. This can help eliminate much of the gymnastics drivers do in their ioctl routines to figure this out. Remove commented out IFF_NOTRAILERS
|
#
09410d0f |
|
21-Mar-1998 |
Peter Wemm <peter@FreeBSD.org> |
On most other systems "out there", <net/if.h> does not require the caller to #include <sys/time.h> first. I've lost count of the number of times I've had to patch this in porting code. The problem is the "struct timeval ifi_lastchange" in the mib stats. (most other systems don't have this, until 4.4bsd anyway).
|
#
906f09bc |
|
12-Jan-1998 |
Garrett Wollman <wollman@FreeBSD.org> |
Add a macro to accurately calculate the length of a struct ifreq when it contains an address. This can replace all the myriad (wrong) ways in which this task is performed in the current system. As an added bonus, since it's a macro, then third-party software vendors have an easy way to tell whether it's there or not. (This will become necessary when sizeof(struct sockaddr) is increaased, and also when additional fields are added to struct ifreq.)
|
#
a1c995b6 |
|
12-Oct-1997 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Last major round (Unless Bruce thinks of somthing :-) of malloc changes. Distribute all but the most fundamental malloc types. This time I also remembered the trick to making things static: Put "static" in front of them. A couple of finer points by: bde
|
#
a912e453 |
|
03-May-1997 |
Peter Wemm <peter@FreeBSD.org> |
add SIOC{S,G}IFMEDIA ioctl support
|
#
6875d254 |
|
22-Feb-1997 |
Peter Wemm <peter@FreeBSD.org> |
Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not ready for it yet.
|
#
1130b656 |
|
14-Jan-1997 |
Jordan K. Hubbard <jkh@FreeBSD.org> |
Make the long-awaited change from $Id$ to $FreeBSD$ This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long. Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
|
#
477180fb |
|
13-Jan-1997 |
Garrett Wollman <wollman@FreeBSD.org> |
Use the new if_multiaddrs list for multicast addresses rather than the previous hackery involving struct in_ifaddr and arpcom. Get rid of the abominable multi_kludge. Update all network interfaces to use the new machanism. Distressingly few Ethernet drivers program the multicast filter properly (assuming the hardware has one, which it usually does).
|
#
19ff91c6 |
|
03-Jan-1997 |
Garrett Wollman <wollman@FreeBSD.org> |
Separate kernel-internal data structures from exposed user interface to interfaces. (Amazing nobody had done this!) More commits to fix up user-land to follow.
|
#
59562606 |
|
13-Dec-1996 |
Garrett Wollman <wollman@FreeBSD.org> |
Convert the interface address and IP interface address structures to TAILQs. Fix places which referenced these for no good reason that I can see (the references remain, but were fixed to compile again; they are still questionable).
|
#
29412182 |
|
11-Dec-1996 |
Garrett Wollman <wollman@FreeBSD.org> |
Use queue macros for the list of interfaces. Next stop: ifaddrs!
|
#
4963f4cd |
|
11-Dec-1996 |
Garrett Wollman <wollman@FreeBSD.org> |
Include <net/if_arp.h> in the one header that requires it, <netinet/if_ether.h>, rather than in <net/if.h>, most of whose callers have no need of it. Pointed-out-by: bde
|
#
662f33aa |
|
10-Dec-1996 |
Garrett Wollman <wollman@FreeBSD.org> |
Finally, after six years, remove the ``quick hack for SNMP'' that was ``going away soon''.
|
#
fb583156 |
|
10-Dec-1996 |
David Greenman <dg@FreeBSD.org> |
1) Implement SIOCSIFMTU in ether_ioctl(), and change ether_ioctl's return type to be int so that errors can be returned. 2) Use the new SIOCSIFMTU ether_ioctl support in the few drivers that are using ether_ioctl(). 3) In if_fxp.c: treat if_bpf as a token, not as a pointer. Don't bother testing for FXP_NTXSEG being reached in fxp_start()...just check for non-NULL 'm'. Change fxp_ioctl() to use ether_ioctl().
|
#
a73356a1 |
|
21-Oct-1996 |
Bill Fenner <fenner@FreeBSD.org> |
Fix comments, which appear to have been mangled long ago and far away.
|
#
4458ac71 |
|
12-Oct-1996 |
Bruce Evans <bde@FreeBSD.org> |
Removed nested include if <sys/socket.h> from <net/if.h> and <net/if_arp.h> and fixed the things that depended on it. The nested include just allowed unportable programs to compile and made my simple #include checking program report that networking code doesn't need to include <sys/socket.h>.
|
#
aba926bd |
|
26-Aug-1996 |
Julian Elischer <julian@FreeBSD.org> |
correct a field comment that someone must have accidentally spammed as it's still used for what the original BSD4.4 comment says it's for.
|
#
30106f6a |
|
04-Aug-1996 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add a callback pointer to the interfaces "init" routine. Add ether_ioctl() which can take care of the SIOC[SG]IFADDR cases for most (ethernet) drivers.
|
#
bbd17bf8 |
|
30-Jul-1996 |
Garrett Wollman <wollman@FreeBSD.org> |
Add better support for retrieving management information from network interfaces. This creates two new tables in the net.link.generic branch of the MIB; one contains (essentially) `ifdata' structures, and the other contains a blob provided by the interface (and presumably used to implement link-layer-specific MIB variables). A number of things have been moved around in the `ifnet' and `ifdata' structures, so NEW VERSIONS OF ifconfig(8) AND routed(8) ARE REQUIRED. (A simple recompile is all that's necessary.) I have a sample program which uses this interface for those interested in making use of it.
|
#
f12c3c93 |
|
23-Jul-1996 |
Garrett Wollman <wollman@FreeBSD.org> |
Fix a spelling error I forgot to bring over from my personal version of the last (IF_ENQ_DROP) commit.
|
#
6f866391 |
|
22-Jul-1996 |
Garrett Wollman <wollman@FreeBSD.org> |
Add a new, better mechanism for sticking packets onto ifqueues. The old system had the misfeature that the only policy it could implement was tail-drop; the new IF_ENQ_DROP macro/function makes it possible to implement more sophisticated queueing policies on a system-wide basis. No code actually uses this yet (although on my machine I have converted the ethernet and (polled) loopback to use it).
|
#
e39a0280 |
|
10-Jun-1996 |
Gary Palmer <gpalmer@FreeBSD.org> |
Change the use if ifnet.if_lastchange to be more in line with SNMP requirements. Update description of ifnet.if_lastchange in if.h to indicate this.
|
#
9b44ff22 |
|
06-Feb-1996 |
Garrett Wollman <wollman@FreeBSD.org> |
Clean up Ethernet drivers: - fill in and use ifp->if_softc - use if_bpf rather than private cookie variables - change bpf interface to take advantage of this - call ether_ifattach() directly from Ethernet drivers - delete kludge in if_attach() that did this indirectly
|
#
7c399a89 |
|
26-Jan-1996 |
Garrett Wollman <wollman@FreeBSD.org> |
Delete the if_private[] array in struct ifnet; this turned out to be of limited utility. In their place, add bunch of pointers which will eventually be needed by the polled-interrupt scheme we're working here. (It will probably be a while before the code is written and committed here.) At the same time, a `void *if_softc' field was added to the beginning of the structure to make certain driver writers happier. The practical upshot of all this is that you need to recompile utilities such as netstat which manipulate struct ifnet.
|
#
18b7be40 |
|
26-Jan-1996 |
Poul-Henning Kamp <phk@FreeBSD.org> |
The last part of the ether_sprint -> %6D change. Sorry for the delay. (%D is for hexdumping.)
|
#
3bda9f9b |
|
09-Dec-1995 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Staticize, clean lint.
|
#
4a5f1499 |
|
04-Dec-1995 |
David Greenman <dg@FreeBSD.org> |
all: Removed ifnet.if_init and ifnet.if_reset as they are generally unused. Change the parameter passed to if_watchdog to be a ifnet * rather than a unit number. All of this is an attempt to move toward not needing an array of softc pointers (which is usually static in size) to point to the driver softc. if_ed.c: Changed some of the argument passing to some functions to make a little more sense. if_ep.c, if_vx.c: Killed completely bogus use of if_timer. It was being set in such a way that the interface was being reset once per second (blech!).
|
#
233b60ce |
|
13-Oct-1995 |
Garrett Wollman <wollman@FreeBSD.org> |
Say goodbye to IFF_NOTRAILERS. Support for trailers was officially dropped for 4.4, but for some reason this flag lived on. (Until today, that is.)
|
#
9e52b982 |
|
03-Oct-1995 |
Garrett Wollman <wollman@FreeBSD.org> |
Import of 4.4-Lite-2 sys/net to make merge and examination easier. Since we are not on the vendor branch for any of these files, the conflicts shown make no matter. Obtained from: 4.4BSD-Lite-2
|
#
a5d3a8f9 |
|
31-Aug-1995 |
Garrett Wollman <wollman@FreeBSD.org> |
Add a few hooks (in the form of an array of four void *'s) to allow various bits of software to save some data in the ifnet structure without having to constantly change the declaration thereof.
|
#
b6f5c0b8 |
|
29-Aug-1995 |
Bruce Evans <bde@FreeBSD.org> |
Fix several sysinit functions that had the wrong type and unnecessarily external linkage. Remove useless comments saying that SYSINIT() does system initialization.
|
#
bf25be48 |
|
16-Aug-1995 |
Bruce Evans <bde@FreeBSD.org> |
Make everything except the unsupported network sources compile cleanly with -Wnested-externs.
|
#
6f64074e |
|
09-Jul-1995 |
Joerg Wunsch <joerg@FreeBSD.org> |
Move some struct definitions outside of struct's, so their scopes for C++ will match the scopes for C. Submitted by: Warner Losh
|
#
9b2e5354 |
|
30-May-1995 |
Rodney W. Grimes <rgrimes@FreeBSD.org> |
Remove trailing whitespace.
|
#
f5fea3dd |
|
26-Apr-1995 |
Paul Traina <pst@FreeBSD.org> |
Cleanup loopback interface support. Reviewed by: wollman
|
#
b5e8ce9f |
|
16-Mar-1995 |
Bruce Evans <bde@FreeBSD.org> |
Add and move declarations to fix all of the warnings from `gcc -Wimplicit' (except in netccitt, netiso and netns) and most of the warnings from `gcc -Wnested-externs'. Fix all the bugs found. There were no serious ones.
|
#
73c2ab46 |
|
29-Dec-1994 |
David Greenman <dg@FreeBSD.org> |
Moved declaration of ifnet pointer out of the header file and into the .c file where it belongs. Bezeroed some uninitialized malloc data.
|
#
511cdd16 |
|
22-Dec-1994 |
David Greenman <dg@FreeBSD.org> |
Removed bogus semicolon at end of a #define line.
|
#
074c4a4e |
|
21-Dec-1994 |
Garrett Wollman <wollman@FreeBSD.org> |
Add generic part of generic multiple-physical-interface support (the successor of IFF_ALTPHYS).
|
#
b30cbe4a |
|
21-Dec-1994 |
Garrett Wollman <wollman@FreeBSD.org> |
Add a #define for if_rawoutput(), which isn't used now, but eventually will be.
|
#
995add1a |
|
13-Dec-1994 |
Garrett Wollman <wollman@FreeBSD.org> |
Add support for two separate cloning flags, one set by the lower layers, and one set by the protocol family. Also add another parameter to rtalloc1() to allow for any interface flags to be ignored; currently this is only useful for RTF_PRCLONING. Get rid of rt_prflags and re-unite with rt_flags. Add T/TCP ``route metrics''. NB: YOU MUST RECOMPILE `route' AND OTHER RELATED PROGRAMS AS A RESULT OF THIS CHANGE. This also adds a new interface parameter, `ifi_physical', which will eventually replace IFF_ALTPHYS as the mechanism for specifying the particular physical connection desired on a multiple-connection card. NB: YOU MUST RECOMPILE `ifconfig' AND OTHER RELATED PROGRAMS AS A RESULT OF THIS CHANGE.
|
#
6c4b1b79 |
|
15-Nov-1994 |
Poul-Henning Kamp <phk@FreeBSD.org> |
#include <socket.h> -> <sys/socket.h>
|
#
df708ff1 |
|
15-Nov-1994 |
Bruce Evans <bde@FreeBSD.org> |
Include <sys/socket.h> for declaration of struct sockaddr. This helps genassym compile when KERNEL is not defined. Uniformize idempotency ifdef.
|
#
67df6ed3 |
|
14-Nov-1994 |
Bruce Evans <bde@FreeBSD.org> |
if.h: Declare a complete prototype for the function pointer *ifa_rtrequest. radix.h: Declare a complete prototype for the function pointer *rnh_walktree and for the function rn_walktree. Uniformize idempotency ifdef.
|
#
37be1da8 |
|
01-Oct-1994 |
Garrett Wollman <wollman@FreeBSD.org> |
Define IFF_ALTPHYS to be IFF_LINK2. Gross, but effective. (There aren't any more bits left in if_flags and I don't want to make it a long this late in the release cycle.)
|
#
cea1da3b |
|
20-Aug-1994 |
Paul Richards <paul@FreeBSD.org> |
Make idempotent. Submitted by: Paul
|
#
f23b4c91 |
|
18-Aug-1994 |
Garrett Wollman <wollman@FreeBSD.org> |
Fix up some sloppy coding practices: - Delete redundant declarations. - Add -Wredundant-declarations to Makefile.i386 so they don't come back. - Delete sloppy COMMON-style declarations of uninitialized data in header files. - Add a few prototypes. - Clean up warnings resulting from the above. NB: ioconf.c will still generate a redundant-declaration warning, which is unavoidable unless somebody volunteers to make `config' smarter.
|
#
a7028af7 |
|
08-Aug-1994 |
David Greenman <dg@FreeBSD.org> |
Added ioctl support for SIOCGIFMTU and SIOCSIFMTU. These set the per- interface MTU.
|
#
3c4dd356 |
|
02-Aug-1994 |
David Greenman <dg@FreeBSD.org> |
Added $Id$
|
#
26f9a767 |
|
25-May-1994 |
Rodney W. Grimes <rgrimes@FreeBSD.org> |
The big 4.4BSD Lite to FreeBSD 2.0.0 (Development) patch. Reviewed by: Rodney W. Grimes Submitted by: John Dyson and David Greenman
|
#
df8bae1d |
|
24-May-1994 |
Rodney W. Grimes <rgrimes@FreeBSD.org> |
BSD 4.4 Lite Kernel Sources
|