ƒ»h178867 112 239 181 128 120 144 306 254 132 257 238 295 295 241 114 176 222 139 373 218 10079 9998 10303 136 140 144 118 205 141 124 182 130 258 143 177 258 277 169 146 299 505 249 263 136 121 287 107 437 476 157 171 898 194 215 182 276 222 705 152 267 162 252 525 320 271 147 199 445 250 137 181 400 164 118 234 141 188 267 131 153 161 300 156 411 246 143 125 226 153 148 137 772 478 142 288 140 124 188 158 370 109 340 246 277 260 195 268 150 146 407 456 131 288 K 10 svn:author V 5 rafan K 8 svn:date V 27 2008-05-09T02:28:12.000000Z K 7 svn:log V 144 This commit was generated by cvs2svn to compensate for changes in r178866, which included commits to RCS files with non-trunk default branches. END K 10 svn:author V 7 cvs2svn K 8 svn:date V 27 2008-05-09T02:28:13.000000Z K 7 svn:log V 85 This commit was manufactured by cvs2svn to create tag 'ncurses-vendor-v5_6_20080503'. END K 10 svn:author V 5 rafan K 8 svn:date V 27 2008-05-09T02:28:52.000000Z K 7 svn:log V 34 - Update for ncurses 5.6-20080509 END K 10 svn:author V 5 rafan K 8 svn:date V 27 2008-05-09T02:30:24.000000Z K 7 svn:log V 26 - Update for 5.6-20080503 END K 10 svn:author V 5 rafan K 8 svn:date V 27 2008-05-09T06:53:03.000000Z K 7 svn:log V 50 - Last commit should be "update for 5.6-20080503" END K 10 svn:author V 3 pjd K 8 svn:date V 27 2008-05-09T07:42:02.000000Z K 7 svn:log V 213 - Export HZ value via kern.hz sysctl (this is the same name as for the loader tunable). - Document other sysctls in this file and also mark them as loader tunable via CTLFLAG_RDTUN flag. Reviewed by: roberto END K 10 svn:author V 3 dfr K 8 svn:date V 27 2008-05-09T10:34:23.000000Z K 7 svn:log V 161 When blocking on an F_FLOCK style lock request which is upgrading a shared lock to exclusive, drop the shared lock before deadlock detection. MFC after: 2 days END K 10 svn:author V 3 dfr K 8 svn:date V 27 2008-05-09T13:27:20.000000Z K 7 svn:log V 40 Update magic sed script for heimdal-1.1 END K 10 svn:author V 3 alc K 8 svn:date V 27 2008-05-09T16:48:07.000000Z K 7 svn:log V 164 Introduce pmap_align_superpage(). It increases the starting virtual address of the given mapping if a different alignment might result in more superpage mappings. END K 10 svn:author V 3 jhb K 8 svn:date V 27 2008-05-09T18:20:35.000000Z K 7 svn:log V 145 MFC: Add 'fbsdcoreops_suppress_target' to support kgdb having its own coredump target and adjust core dump target's long name and documentation. END K 10 svn:author V 3 jhb K 8 svn:date V 27 2008-05-09T18:41:36.000000Z K 7 svn:log V 202 MFC: Rework how kgdb manages kernel and vmcore files to be a bit more gdb-ish. Specifically, you can now use the 'file' and 'core' commands. Also, the kernel module stuff now works for remote targets. END K 10 svn:author V 3 jhb K 8 svn:date V 27 2008-05-09T18:47:10.000000Z K 7 svn:log V 202 MFC: Rework how kgdb manages kernel and vmcore files to be a bit more gdb-ish. Specifically, you can now use the 'file' and 'core' commands. Also, the kernel module stuff now works for remote targets. END K 10 svn:author V 3 jhb K 8 svn:date V 27 2008-05-09T18:59:50.000000Z K 7 svn:log V 148 MFC: Enable use of 'tid' for remote targets and use gdb_thread_select() for 'tid' and 'proc' so they provide UI feedback like the 'thread' command. END K 10 svn:author V 3 jhb K 8 svn:date V 27 2008-05-09T19:00:40.000000Z K 7 svn:log V 22 Trim unneeded header. END K 10 svn:author V 3 jhb K 8 svn:date V 27 2008-05-09T19:03:55.000000Z K 7 svn:log V 84 MFC: Fix a few edge cases with error handling in cpufreq(4)'s CPUFREQ_GET() method. END K 10 svn:author V 3 jhb K 8 svn:date V 27 2008-05-09T19:29:08.000000Z K 7 svn:log V 129 Set D_TRACKCLOSE to avoid a race in devfs that could lead to orphaned bpf devices never getting fully closed. MFC after: 3 days END K 10 svn:author V 7 rwatson K 8 svn:date V 27 2008-05-09T20:38:25.000000Z K 7 svn:log V 43 Trim trailing whitespace at ends of lines. END K 10 svn:author V 7 rwatson K 8 svn:date V 27 2008-05-09T20:39:48.000000Z K 7 svn:log V 276 Merge if_loop.c:1.115,1.116 from HEAD to RELENG_7: Coerce if_loop.c in the general direction of style(9): - Use ANSI function declarations - Remove use of 'register' keyword - Prefer style(9) return parens, white space - Trim trailing whitespace at ends of lines. END K 10 svn:author V 7 rwatson K 8 svn:date V 27 2008-05-09T20:40:47.000000Z K 7 svn:log V 121 Merge tcp_input.c:1.374 from HEAD to RELENG_7: Add further TCP inpcb locking assertions to some TCP input code paths. END K 10 svn:author V 6 julian K 8 svn:date V 27 2008-05-09T23:00:21.000000Z K 7 svn:log V 9982 Add code to allow the system to handle multiple routing tables. This particular implementation is designed to be fully backwards compatible and to be MFC-able to 7.x (and 6.x) Currently the only protocol that can make use of the multiple tables is IPv4 Similar functionality exists in OpenBSD and Linux. From my notes: ----- One thing where FreeBSD has been falling behind, and which by chance I have some time to work on is "policy based routing", which allows different packet streams to be routed by more than just the destination address. Constraints: ------------ I want to make some form of this available in the 6.x tree (and by extension 7.x) , but FreeBSD in general needs it so I might as well do it in -current and back port the portions I need. One of the ways that this can be done is to have the ability to instantiate multiple kernel routing tables (which I will now refer to as "Forwarding Information Bases" or "FIBs" for political correctness reasons). Which FIB a particular packet uses to make the next hop decision can be decided by a number of mechanisms. The policies these mechanisms implement are the "Policies" referred to in "Policy based routing". One of the constraints I have if I try to back port this work to 6.x is that it must be implemented as a EXTENSION to the existing ABIs in 6.x so that third party applications do not need to be recompiled in timespan of the branch. This first version will not have some of the bells and whistles that will come with later versions. It will, for example, be limited to 16 tables in the first commit. Implementation method, Compatible version. (part 1) ------------------------------- For this reason I have implemented a "sufficient subset" of a multiple routing table solution in Perforce, and back-ported it to 6.x. (also in Perforce though not always caught up with what I have done in -current/P4). The subset allows a number of FIBs to be defined at compile time (8 is sufficient for my purposes in 6.x) and implements the changes needed to allow IPV4 to use them. I have not done the changes for ipv6 simply because I do not need it, and I do not have enough knowledge of ipv6 (e.g. neighbor discovery) needed to do it. Other protocol families are left untouched and should there be users with proprietary protocol families, they should continue to work and be oblivious to the existence of the extra FIBs. To understand how this is done, one must know that the current FIB code starts everything off with a single dimensional array of pointers to FIB head structures (One per protocol family), each of which in turn points to the trie of routes available to that family. The basic change in the ABI compatible version of the change is to extent that array to be a 2 dimensional array, so that instead of protocol family X looking at rt_tables[X] for the table it needs, it looks at rt_tables[Y][X] when for all protocol families except ipv4 Y is always 0. Code that is unaware of the change always just sees the first row of the table, which of course looks just like the one dimensional array that existed before. The entry points rtrequest(), rtalloc(), rtalloc1(), rtalloc_ign() are all maintained, but refer only to the first row of the array, so that existing callers in proprietary protocols can continue to do the "right thing". Some new entry points are added, for the exclusive use of ipv4 code called in_rtrequest(), in_rtalloc(), in_rtalloc1() and in_rtalloc_ign(), which have an extra argument which refers the code to the correct row. In addition, there are some new entry points (currently called rtalloc_fib() and friends) that check the Address family being looked up and call either rtalloc() (and friends) if the protocol is not IPv4 forcing the action to row 0 or to the appropriate row if it IS IPv4 (and that info is available). These are for calling from code that is not specific to any particular protocol. The way these are implemented would change in the non ABI preserving code to be added later. One feature of the first version of the code is that for ipv4, the interface routes show up automatically on all the FIBs, so that no matter what FIB you select you always have the basic direct attached hosts available to you. (rtinit() does this automatically). You CAN delete an interface route from one FIB should you want to but by default it's there. ARP information is also available in each FIB. It's assumed that the same machine would have the same MAC address, regardless of which FIB you are using to get to it. This brings us as to how the correct FIB is selected for an outgoing IPV4 packet. Firstly, all packets have a FIB associated with them. if nothing has been done to change it, it will be FIB 0. The FIB is changed in the following ways. Packets fall into one of a number of classes. 1/ locally generated packets, coming from a socket/PCB. Such packets select a FIB from a number associated with the socket/PCB. This in turn is inherited from the process, but can be changed by a socket option. The process in turn inherits it on fork. I have written a utility call setfib that acts a bit like nice.. setfib -3 ping target.example.com # will use fib 3 for ping. It is an obvious extension to make it a property of a jail but I have not done so. It can be achieved by combining the setfib and jail commands. 2/ packets received on an interface for forwarding. By default these packets would use table 0, (or possibly a number settable in a sysctl(not yet)). but prior to routing the firewall can inspect them (see below). (possibly in the future you may be able to associate a FIB with packets received on an interface.. An ifconfig arg, but not yet.) 3/ packets inspected by a packet classifier, which can arbitrarily associate a fib with it on a packet by packet basis. A fib assigned to a packet by a packet classifier (such as ipfw) would over-ride a fib associated by a more default source. (such as cases 1 or 2). 4/ a tcp listen socket associated with a fib will generate accept sockets that are associated with that same fib. 5/ Packets generated in response to some other packet (e.g. reset or icmp packets). These should use the FIB associated with the packet being reponded to. 6/ Packets generated during encapsulation. gif, tun and other tunnel interfaces will encapsulate using the FIB that was in effect withthe proces that set up the tunnel. thus setfib 1 ifconfig gif0 [tunnel instructions] will set the fib for the tunnel to use to be fib 1. Routing messages would be associated with their process, and thus select one FIB or another. messages from the kernel would be associated with the fib they refer to and would only be received by a routing socket associated with that fib. (not yet implemented) In addition Netstat has been edited to be able to cope with the fact that the array is now 2 dimensional. (It looks in system memory using libkvm (!)). Old versions of netstat see only the first FIB. In addition two sysctls are added to give: a) the number of FIBs compiled in (active) b) the default FIB of the calling process. Early testing experience: ------------------------- Basically our (IronPort's) appliance does this functionality already using ipfw fwd but that method has some drawbacks. For example, It can't fully simulate a routing table because it can't influence the socket's choice of local address when a connect() is done. Testing during the generating of these changes has been remarkably smooth so far. Multiple tables have co-existed with no notable side effects, and packets have been routes accordingly. ipfw has grown 2 new keywords: setfib N ip from anay to any count ip from any to any fib N In pf there seems to be a requirement to be able to give symbolic names to the fibs but I do not have that capacity. I am not sure if it is required. SCTP has interestingly enough built in support for this, called VRFs in Cisco parlance. it will be interesting to see how that handles it when it suddenly actually does something. Where to next: -------------------- After committing the ABI compatible version and MFCing it, I'd like to proceed in a forward direction in -current. this will result in some roto-tilling in the routing code. Firstly: the current code's idea of having a separate tree per protocol family, all of the same format, and pointed to by the 1 dimensional array is a bit silly. Especially when one considers that there is code that makes assumptions about every protocol having the same internal structures there. Some protocols don't WANT that sort of structure. (for example the whole idea of a netmask is foreign to appletalk). This needs to be made opaque to the external code. My suggested first change is to add routing method pointers to the 'domain' structure, along with information pointing the data. instead of having an array of pointers to uniform structures, there would be an array pointing to the 'domain' structures for each protocol address domain (protocol family), and the methods this reached would be called. The methods would have an argument that gives FIB number, but the protocol would be free to ignore it. When the ABI can be changed it raises the possibilty of the addition of a fib entry into the "struct route". Currently, the structure contains the sockaddr of the desination, and the resulting fib entry. To make this work fully, one could add a fib number so that given an address and a fib, one can find the third element, the fib entry. Interaction with the ARP layer/ LL layer would need to be revisited as well. Qing Li has been working on this already. This work was sponsored by Ironport Systems/Cisco PR: Reviewed by: several including rwatson, bz and mlair (parts each) Approved by: Obtained from: Ironport systems/Cisco MFC after: Security: PR: Submitted by: Reviewed by: Approved by: Obtained from: MFC after: Security: END K 10 svn:author V 6 julian K 8 svn:date V 27 2008-05-09T23:00:22.000000Z K 7 svn:log V 9901 Add code to allow the system to handle multiple routing tables. This particular implementation is designed to be fully backwards compatible and to be MFC-able to 7.x (and 6.x) Currently the only protocol that can make use of the multiple tables is IPv4 Similar functionality exists in OpenBSD and Linux. From my notes: ----- One thing where FreeBSD has been falling behind, and which by chance I have some time to work on is "policy based routing", which allows different packet streams to be routed by more than just the destination address. Constraints: ------------ I want to make some form of this available in the 6.x tree (and by extension 7.x) , but FreeBSD in general needs it so I might as well do it in -current and back port the portions I need. One of the ways that this can be done is to have the ability to instantiate multiple kernel routing tables (which I will now refer to as "Forwarding Information Bases" or "FIBs" for political correctness reasons). Which FIB a particular packet uses to make the next hop decision can be decided by a number of mechanisms. The policies these mechanisms implement are the "Policies" referred to in "Policy based routing". One of the constraints I have if I try to back port this work to 6.x is that it must be implemented as a EXTENSION to the existing ABIs in 6.x so that third party applications do not need to be recompiled in timespan of the branch. This first version will not have some of the bells and whistles that will come with later versions. It will, for example, be limited to 16 tables in the first commit. Implementation method, Compatible version. (part 1) ------------------------------- For this reason I have implemented a "sufficient subset" of a multiple routing table solution in Perforce, and back-ported it to 6.x. (also in Perforce though not always caught up with what I have done in -current/P4). The subset allows a number of FIBs to be defined at compile time (8 is sufficient for my purposes in 6.x) and implements the changes needed to allow IPV4 to use them. I have not done the changes for ipv6 simply because I do not need it, and I do not have enough knowledge of ipv6 (e.g. neighbor discovery) needed to do it. Other protocol families are left untouched and should there be users with proprietary protocol families, they should continue to work and be oblivious to the existence of the extra FIBs. To understand how this is done, one must know that the current FIB code starts everything off with a single dimensional array of pointers to FIB head structures (One per protocol family), each of which in turn points to the trie of routes available to that family. The basic change in the ABI compatible version of the change is to extent that array to be a 2 dimensional array, so that instead of protocol family X looking at rt_tables[X] for the table it needs, it looks at rt_tables[Y][X] when for all protocol families except ipv4 Y is always 0. Code that is unaware of the change always just sees the first row of the table, which of course looks just like the one dimensional array that existed before. The entry points rtrequest(), rtalloc(), rtalloc1(), rtalloc_ign() are all maintained, but refer only to the first row of the array, so that existing callers in proprietary protocols can continue to do the "right thing". Some new entry points are added, for the exclusive use of ipv4 code called in_rtrequest(), in_rtalloc(), in_rtalloc1() and in_rtalloc_ign(), which have an extra argument which refers the code to the correct row. In addition, there are some new entry points (currently called rtalloc_fib() and friends) that check the Address family being looked up and call either rtalloc() (and friends) if the protocol is not IPv4 forcing the action to row 0 or to the appropriate row if it IS IPv4 (and that info is available). These are for calling from code that is not specific to any particular protocol. The way these are implemented would change in the non ABI preserving code to be added later. One feature of the first version of the code is that for ipv4, the interface routes show up automatically on all the FIBs, so that no matter what FIB you select you always have the basic direct attached hosts available to you. (rtinit() does this automatically). You CAN delete an interface route from one FIB should you want to but by default it's there. ARP information is also available in each FIB. It's assumed that the same machine would have the same MAC address, regardless of which FIB you are using to get to it. This brings us as to how the correct FIB is selected for an outgoing IPV4 packet. Firstly, all packets have a FIB associated with them. if nothing has been done to change it, it will be FIB 0. The FIB is changed in the following ways. Packets fall into one of a number of classes. 1/ locally generated packets, coming from a socket/PCB. Such packets select a FIB from a number associated with the socket/PCB. This in turn is inherited from the process, but can be changed by a socket option. The process in turn inherits it on fork. I have written a utility call setfib that acts a bit like nice.. setfib -3 ping target.example.com # will use fib 3 for ping. It is an obvious extension to make it a property of a jail but I have not done so. It can be achieved by combining the setfib and jail commands. 2/ packets received on an interface for forwarding. By default these packets would use table 0, (or possibly a number settable in a sysctl(not yet)). but prior to routing the firewall can inspect them (see below). (possibly in the future you may be able to associate a FIB with packets received on an interface.. An ifconfig arg, but not yet.) 3/ packets inspected by a packet classifier, which can arbitrarily associate a fib with it on a packet by packet basis. A fib assigned to a packet by a packet classifier (such as ipfw) would over-ride a fib associated by a more default source. (such as cases 1 or 2). 4/ a tcp listen socket associated with a fib will generate accept sockets that are associated with that same fib. 5/ Packets generated in response to some other packet (e.g. reset or icmp packets). These should use the FIB associated with the packet being reponded to. 6/ Packets generated during encapsulation. gif, tun and other tunnel interfaces will encapsulate using the FIB that was in effect withthe proces that set up the tunnel. thus setfib 1 ifconfig gif0 [tunnel instructions] will set the fib for the tunnel to use to be fib 1. Routing messages would be associated with their process, and thus select one FIB or another. messages from the kernel would be associated with the fib they refer to and would only be received by a routing socket associated with that fib. (not yet implemented) In addition Netstat has been edited to be able to cope with the fact that the array is now 2 dimensional. (It looks in system memory using libkvm (!)). Old versions of netstat see only the first FIB. In addition two sysctls are added to give: a) the number of FIBs compiled in (active) b) the default FIB of the calling process. Early testing experience: ------------------------- Basically our (IronPort's) appliance does this functionality already using ipfw fwd but that method has some drawbacks. For example, It can't fully simulate a routing table because it can't influence the socket's choice of local address when a connect() is done. Testing during the generating of these changes has been remarkably smooth so far. Multiple tables have co-existed with no notable side effects, and packets have been routes accordingly. ipfw has grown 2 new keywords: setfib N ip from anay to any count ip from any to any fib N In pf there seems to be a requirement to be able to give symbolic names to the fibs but I do not have that capacity. I am not sure if it is required. SCTP has interestingly enough built in support for this, called VRFs in Cisco parlance. it will be interesting to see how that handles it when it suddenly actually does something. Where to next: -------------------- After committing the ABI compatible version and MFCing it, I'd like to proceed in a forward direction in -current. this will result in some roto-tilling in the routing code. Firstly: the current code's idea of having a separate tree per protocol family, all of the same format, and pointed to by the 1 dimensional array is a bit silly. Especially when one considers that there is code that makes assumptions about every protocol having the same internal structures there. Some protocols don't WANT that sort of structure. (for example the whole idea of a netmask is foreign to appletalk). This needs to be made opaque to the external code. My suggested first change is to add routing method pointers to the 'domain' structure, along with information pointing the data. instead of having an array of pointers to uniform structures, there would be an array pointing to the 'domain' structures for each protocol address domain (protocol family), and the methods this reached would be called. The methods would have an argument that gives FIB number, but the protocol would be free to ignore it. When the ABI can be changed it raises the possibilty of the addition of a fib entry into the "struct route". Currently, the structure contains the sockaddr of the desination, and the resulting fib entry. To make this work fully, one could add a fib number so that given an address and a fib, one can find the third element, the fib entry. Interaction with the ARP layer/ LL layer would need to be revisited as well. Qing Li has been working on this already. This work was sponsored by Ironport Systems/Cisco PR: Reviewed by: several including rwatson, bz and mlair (parts each) Approved by: Obtained from: Ironport systems/Cisco MFC after: Security: END K 10 svn:author V 6 julian K 8 svn:date V 27 2008-05-09T23:03:00.000000Z K 7 svn:log V 10205 Add code to allow the system to handle multiple routing tables. This particular implementation is designed to be fully backwards compatible and to be MFC-able to 7.x (and 6.x) Currently the only protocol that can make use of the multiple tables is IPv4 Similar functionality exists in OpenBSD and Linux. From my notes: ----- One thing where FreeBSD has been falling behind, and which by chance I have some time to work on is "policy based routing", which allows different packet streams to be routed by more than just the destination address. Constraints: ------------ I want to make some form of this available in the 6.x tree (and by extension 7.x) , but FreeBSD in general needs it so I might as well do it in -current and back port the portions I need. One of the ways that this can be done is to have the ability to instantiate multiple kernel routing tables (which I will now refer to as "Forwarding Information Bases" or "FIBs" for political correctness reasons). Which FIB a particular packet uses to make the next hop decision can be decided by a number of mechanisms. The policies these mechanisms implement are the "Policies" referred to in "Policy based routing". One of the constraints I have if I try to back port this work to 6.x is that it must be implemented as a EXTENSION to the existing ABIs in 6.x so that third party applications do not need to be recompiled in timespan of the branch. This first version will not have some of the bells and whistles that will come with later versions. It will, for example, be limited to 16 tables in the first commit. Implementation method, Compatible version. (part 1) ------------------------------- For this reason I have implemented a "sufficient subset" of a multiple routing table solution in Perforce, and back-ported it to 6.x. (also in Perforce though not always caught up with what I have done in -current/P4). The subset allows a number of FIBs to be defined at compile time (8 is sufficient for my purposes in 6.x) and implements the changes needed to allow IPV4 to use them. I have not done the changes for ipv6 simply because I do not need it, and I do not have enough knowledge of ipv6 (e.g. neighbor discovery) needed to do it. Other protocol families are left untouched and should there be users with proprietary protocol families, they should continue to work and be oblivious to the existence of the extra FIBs. To understand how this is done, one must know that the current FIB code starts everything off with a single dimensional array of pointers to FIB head structures (One per protocol family), each of which in turn points to the trie of routes available to that family. The basic change in the ABI compatible version of the change is to extent that array to be a 2 dimensional array, so that instead of protocol family X looking at rt_tables[X] for the table it needs, it looks at rt_tables[Y][X] when for all protocol families except ipv4 Y is always 0. Code that is unaware of the change always just sees the first row of the table, which of course looks just like the one dimensional array that existed before. The entry points rtrequest(), rtalloc(), rtalloc1(), rtalloc_ign() are all maintained, but refer only to the first row of the array, so that existing callers in proprietary protocols can continue to do the "right thing". Some new entry points are added, for the exclusive use of ipv4 code called in_rtrequest(), in_rtalloc(), in_rtalloc1() and in_rtalloc_ign(), which have an extra argument which refers the code to the correct row. In addition, there are some new entry points (currently called rtalloc_fib() and friends) that check the Address family being looked up and call either rtalloc() (and friends) if the protocol is not IPv4 forcing the action to row 0 or to the appropriate row if it IS IPv4 (and that info is available). These are for calling from code that is not specific to any particular protocol. The way these are implemented would change in the non ABI preserving code to be added later. One feature of the first version of the code is that for ipv4, the interface routes show up automatically on all the FIBs, so that no matter what FIB you select you always have the basic direct attached hosts available to you. (rtinit() does this automatically). You CAN delete an interface route from one FIB should you want to but by default it's there. ARP information is also available in each FIB. It's assumed that the same machine would have the same MAC address, regardless of which FIB you are using to get to it. This brings us as to how the correct FIB is selected for an outgoing IPV4 packet. Firstly, all packets have a FIB associated with them. if nothing has been done to change it, it will be FIB 0. The FIB is changed in the following ways. Packets fall into one of a number of classes. 1/ locally generated packets, coming from a socket/PCB. Such packets select a FIB from a number associated with the socket/PCB. This in turn is inherited from the process, but can be changed by a socket option. The process in turn inherits it on fork. I have written a utility call setfib that acts a bit like nice.. setfib -3 ping target.example.com # will use fib 3 for ping. It is an obvious extension to make it a property of a jail but I have not done so. It can be achieved by combining the setfib and jail commands. 2/ packets received on an interface for forwarding. By default these packets would use table 0, (or possibly a number settable in a sysctl(not yet)). but prior to routing the firewall can inspect them (see below). (possibly in the future you may be able to associate a FIB with packets received on an interface.. An ifconfig arg, but not yet.) 3/ packets inspected by a packet classifier, which can arbitrarily associate a fib with it on a packet by packet basis. A fib assigned to a packet by a packet classifier (such as ipfw) would over-ride a fib associated by a more default source. (such as cases 1 or 2). 4/ a tcp listen socket associated with a fib will generate accept sockets that are associated with that same fib. 5/ Packets generated in response to some other packet (e.g. reset or icmp packets). These should use the FIB associated with the packet being reponded to. 6/ Packets generated during encapsulation. gif, tun and other tunnel interfaces will encapsulate using the FIB that was in effect withthe proces that set up the tunnel. thus setfib 1 ifconfig gif0 [tunnel instructions] will set the fib for the tunnel to use to be fib 1. Routing messages would be associated with their process, and thus select one FIB or another. messages from the kernel would be associated with the fib they refer to and would only be received by a routing socket associated with that fib. (not yet implemented) In addition Netstat has been edited to be able to cope with the fact that the array is now 2 dimensional. (It looks in system memory using libkvm (!)). Old versions of netstat see only the first FIB. In addition two sysctls are added to give: a) the number of FIBs compiled in (active) b) the default FIB of the calling process. Early testing experience: ------------------------- Basically our (IronPort's) appliance does this functionality already using ipfw fwd but that method has some drawbacks. For example, It can't fully simulate a routing table because it can't influence the socket's choice of local address when a connect() is done. Testing during the generating of these changes has been remarkably smooth so far. Multiple tables have co-existed with no notable side effects, and packets have been routes accordingly. ipfw has grown 2 new keywords: setfib N ip from anay to any count ip from any to any fib N In pf there seems to be a requirement to be able to give symbolic names to the fibs but I do not have that capacity. I am not sure if it is required. SCTP has interestingly enough built in support for this, called VRFs in Cisco parlance. it will be interesting to see how that handles it when it suddenly actually does something. Where to next: -------------------- After committing the ABI compatible version and MFCing it, I'd like to proceed in a forward direction in -current. this will result in some roto-tilling in the routing code. Firstly: the current code's idea of having a separate tree per protocol family, all of the same format, and pointed to by the 1 dimensional array is a bit silly. Especially when one considers that there is code that makes assumptions about every protocol having the same internal structures there. Some protocols don't WANT that sort of structure. (for example the whole idea of a netmask is foreign to appletalk). This needs to be made opaque to the external code. My suggested first change is to add routing method pointers to the 'domain' structure, along with information pointing the data. instead of having an array of pointers to uniform structures, there would be an array pointing to the 'domain' structures for each protocol address domain (protocol family), and the methods this reached would be called. The methods would have an argument that gives FIB number, but the protocol would be free to ignore it. When the ABI can be changed it raises the possibilty of the addition of a fib entry into the "struct route". Currently, the structure contains the sockaddr of the desination, and the resulting fib entry. To make this work fully, one could add a fib number so that given an address and a fib, one can find the third element, the fib entry. Interaction with the ARP layer/ LL layer would need to be revisited as well. Qing Li has been working on this already. This work was sponsored by Ironport Systems/Cisco Reviewed by: several including rwatson, bz and mlair (parts each) Obtained from: Ironport systems/Cisco END K 10 svn:author V 6 julian K 8 svn:date V 27 2008-05-09T23:08:40.000000Z K 7 svn:log V 41 setfib.2 got left out of the last commit END K 10 svn:author V 6 julian K 8 svn:date V 27 2008-05-09T23:09:56.000000Z K 7 svn:log V 45 Add setfib.2 to the list of man pages to add END K 10 svn:author V 6 julian K 8 svn:date V 27 2008-05-09T23:14:01.000000Z K 7 svn:log V 49 Add a note about multiple routing tables support END K 10 svn:author V 6 julian K 8 svn:date V 27 2008-05-09T23:15:56.000000Z K 7 svn:log V 23 bump __FreeBSD_version END K 10 svn:author V 3 alc K 8 svn:date V 27 2008-05-09T23:31:42.000000Z K 7 svn:log V 112 Add a stub for pmap_align_superpage() on machines that don't (yet) implement pmap-level support for superpages. END K 10 svn:author V 6 julian K 8 svn:date V 27 2008-05-09T23:53:01.000000Z K 7 svn:log V 46 Max's changes got left out of the MRT commit. END K 10 svn:author V 6 julian K 8 svn:date V 27 2008-05-10T00:43:13.000000Z K 7 svn:log V 29 allow setfib to be compiled. END K 10 svn:author V 7 delphij K 8 svn:date V 27 2008-05-10T01:27:23.000000Z K 7 svn:log V 86 Add support for LSI 1078DE (ServeRAID-AR10is SAS/SATA Controller) MFC after: 2 weeks END K 10 svn:author V 6 julian K 8 svn:date V 27 2008-05-10T04:15:21.000000Z K 7 svn:log V 35 undef MAXFIBS before redefining it END K 10 svn:author V 6 julian K 8 svn:date V 27 2008-05-10T04:32:58.000000Z K 7 svn:log V 162 move a #define from a place it shouldn't have been to a place it should have been. Basically my testign didn't ocver one case that this broke. thanks tinderbox! END K 10 svn:author V 8 kientzle K 8 svn:date V 27 2008-05-10T06:12:06.000000Z K 7 svn:log V 46 MFC: Include space for the trailing NUL byte. END K 10 svn:author V 8 brueffer K 8 svn:date V 27 2008-05-10T06:37:10.000000Z K 7 svn:log V 80 MFC: rev. 1.2 Bring this manpage more in line with other wlan driver manpages. END K 10 svn:author V 8 kientzle K 8 svn:date V 27 2008-05-10T06:42:59.000000Z K 7 svn:log V 160 MFC 1.2: Minor portability improvement. Not every platform has S_IXUSR, S_IXGRP, S_IXOTH defines, but the values never change, so just hardcode the constants. END K 10 svn:author V 8 kientzle K 8 svn:date V 27 2008-05-10T06:45:23.000000Z K 7 svn:log V 179 MFC 1.25: Portability: on platforms that don't have timegm, don't have tm_gmtoff and can't reset the timezone to force mktime to use UTC, just give up and use unadorned mktime(). END K 10 svn:author V 8 kientzle K 8 svn:date V 27 2008-05-10T06:46:09.000000Z K 7 svn:log V 72 MFC: Add the useful archive_string_sprintf() function for internal use. END K 10 svn:author V 8 brueffer K 8 svn:date V 27 2008-05-10T06:46:58.000000Z K 7 svn:log V 49 Remove extraneous .Ed, correct SEE ALSO section. END K 10 svn:author V 8 kientzle K 8 svn:date V 27 2008-05-10T06:49:13.000000Z K 7 svn:log V 201 MFC: Stop using ARCHIVE_DEFAULT_BYTES_PER_BLOCK to set the default block size. The default setting here is arbitrary and shouldn't be published. Someday, we should be smarter about the default here. END K 10 svn:author V 8 kientzle K 8 svn:date V 27 2008-05-10T06:57:04.000000Z K 7 svn:log V 407 MFC: Set the archive format code and name in the generic portion of the archive structure, not the write-specific portion. (This is a bungle from back when the generic and write-specific portions were first separated and the write-specific part accidentally ended up with copies of some of the generic fields.) In particular, archive_format() and archive_format_name() now work correctly on write handles. END K 10 svn:author V 8 kientzle K 8 svn:date V 27 2008-05-10T07:03:18.000000Z K 7 svn:log V 151 MFC: The read side doesn't use the 'nulls' convenience value, so get rid of it. We also don't need to set the block size here, since we don't use it. END K 10 svn:author V 8 kientzle K 8 svn:date V 27 2008-05-10T07:05:14.000000Z K 7 svn:log V 165 MFC: Eliminate a bunch of unused fields from the read structure. Most are write-specific values that are leftovers from when read and write used a shared structure. END K 10 svn:author V 8 brueffer K 8 svn:date V 27 2008-05-10T07:31:34.000000Z K 7 svn:log V 39 Misc mdoc improvements and a typo fix. END K 10 svn:author V 8 brueffer K 8 svn:date V 27 2008-05-10T07:36:47.000000Z K 7 svn:log V 24 Misc mdoc improvements. END K 10 svn:author V 8 simokawa K 8 svn:date V 27 2008-05-10T09:22:06.000000Z K 7 svn:log V 189 - Disable interrupts on suspend to eliminate excessive 'device physically ejected?' message on resume. - Fix memory leak on resume reported by kiyohara at netbsd.org. MFC after: 2 weeks END K 10 svn:author V 7 delphij K 8 svn:date V 27 2008-05-10T09:22:17.000000Z K 7 svn:log V 11 Fix build. END K 10 svn:author V 3 kib K 8 svn:date V 27 2008-05-10T11:35:32.000000Z K 7 svn:log V 344 The kqueue_close() encountering the KN_INFLUX knotes on the kq being closed is the legitimate situation. For instance, filedescriptor with registered events may be closed in parallel with closing the kqueue. Properly handle the case instead of asserting that this cannot happen. Reported and tested by: pho Reviewed by: jmg MFC after: 2 weeks END K 10 svn:author V 3 kib K 8 svn:date V 27 2008-05-10T11:37:05.000000Z K 7 svn:log V 383 Kqueue_scan() may sleep when encountered the influx knotes. On the other hand, it may cause other threads to sleep since kqueue_scan() may mark some knotes as infux. This could lead to the deadlock. Before kqueue_scan() sleeps, wakeup the threads that are waiting for the influx knotes produced by this thread. Tested by: pho (previous version) Reviewed by: jmg MFC after: 2 weeks END K 10 svn:author V 8 simokawa K 8 svn:date V 27 2008-05-10T13:40:42.000000Z K 7 svn:log V 60 - Fix panic on detach. - Fix a comment. MFC after: 2 weeks END K 10 svn:author V 6 julian K 8 svn:date V 27 2008-05-10T15:02:56.000000Z K 7 svn:log V 76 Change two variables to size_t to improve portability. Submitted by: Xin Li END K 10 svn:author V 7 rwatson K 8 svn:date V 27 2008-05-10T17:21:20.000000Z K 7 svn:log V 801 Merge uipc_syscalls.c:1.271 from HEAD to RELENG_7: When writing trailers in sendfile(2), don't call kern_writev() while holding the socket buffer lock. These leads to an immediate panic due to recursing the socket buffer lock. This bug was introduced in uipc_syscalls.c:1.240, but masked by another bug until that was fixed in uipc_syscalls.c:1.269. Note that the current fix isn't perfect, but better than panicking: normally we guarantee that simultaneous invocations of a system call to write on a stream socket won't be interlaced, which is ensured by use of the socket buffer sleep lock. This is guaranteed for the sendfile headers, but not trailers. In practice, this is likely not a problem, but should be fixed. Pointy hat to: andre (1.240), cperciva (1.269) END K 10 svn:author V 7 rwatson K 8 svn:date V 27 2008-05-10T17:30:57.000000Z K 7 svn:log V 98 Merge audit.h:1.17 from HEAD to RELENG_7: Fix include guard spelling. Submitted by: diego END K 10 svn:author V 7 rwatson K 8 svn:date V 27 2008-05-10T17:31:53.000000Z K 7 svn:log V 118 Merge sctp_generic_recvmsg.2:1.4, sctp_peeloff.2:1.4 from HEAD to RELENG_7: Correct minor typos in SCTP man pages. END K 10 svn:author V 7 antoine K 8 svn:date V 27 2008-05-10T18:33:38.000000Z K 7 svn:log V 86 Add missing braces in #if 0ed code. Approved by: rwatson (mentor) MFC after: 1 month END K 10 svn:author V 7 antoine K 8 svn:date V 27 2008-05-10T18:39:20.000000Z K 7 svn:log V 179 Remove useless call to getdtablesize(2) in fdopen(3) and its useless variable nofile. PR: 123109 Submitted by: Christoph Mallon Approved by: rwatson (mentor) MFC after: 1 month END K 10 svn:author V 7 rwatson K 8 svn:date V 27 2008-05-10T18:39:53.000000Z K 7 svn:log V 125 Merge ddb.8:1.4, ddb.c:1.3 from HEAD to RELENG_7: - Normalize usage(), add "ddb pathname" syntax. - Revise the manpage. END K 10 svn:author V 7 rwatson K 8 svn:date V 27 2008-05-10T18:43:11.000000Z K 7 svn:log V 608 Merge MAkefile:1.2, ddb.8:1.5, ddb.c:1.4, ddb.h:1.2, ddb_capture.c:1.1 from HEAD to RELENG_7: Add "ddb capture print" and "ddb capture status" commands do ddb(8), alowing the DDB output capture buffer to be easily extracted from user space. Both of these commands include -M/-N arguments, allowing them to be used with kernel crash dumps (or /dev/mem). This makes it easier to use DDB scripting and output capture with minidumps or full dumps rather than with text dumps, allowing DDB output (scripted or otherwise) to be easily extracted from a crash dump. Discussed with: brooks, jhb END K 10 svn:author V 7 antoine K 8 svn:date V 27 2008-05-10T18:43:22.000000Z K 7 svn:log V 56 Add more obsolete files. Approved by: rwatson (mentor) END K 10 svn:author V 7 rwatson K 8 svn:date V 27 2008-05-10T18:43:57.000000Z K 7 svn:log V 170 Merge Makefile:1.348 from HEAD to RELENG_7: Mention -U and -ai arguments to mergemaster in a comment for the general mergemaster line. Suggested by: Ben Laurie END K 10 svn:author V 7 rwatson K 8 svn:date V 27 2008-05-10T18:45:30.000000Z K 7 svn:log V 66 Merge ip_fw.h:1.113 from HEAD to RELENG_7: Fix a comment typo. END K 10 svn:author V 7 antoine K 8 svn:date V 27 2008-05-10T18:50:45.000000Z K 7 svn:log V 155 Document freebsd extensions to netcat a bit better: - sort the options - document -o and -O everywhere Reviewed by: delphij Approved by: rwatson (mentor) END K 10 svn:author V 3 alc K 8 svn:date V 27 2008-05-10T18:55:35.000000Z K 7 svn:log V 432 Generalize vm_map_find(9)'s parameter "find_space". Specifically, add support for VMFS_ALIGNED_SPACE, which requests the allocation of an address range best suited to superpages. The old options TRUE and FALSE are mapped to VMFS_ANY_SPACE and VMFS_NO_SPACE, so that there is no immediate need to update all of vm_map_find(9)'s callers. While I'm here, correct a misstatement about vm_map_find(9)'s return values in the man page. END K 10 svn:author V 7 thompsa K 8 svn:date V 27 2008-05-10T20:07:00.000000Z K 7 svn:log V 223 Partially revert the last rev. Do call ndis_setstate_80211() when we up the interface but break out the associate code into a separate function. This fixes association with an 11b Apple Airport. Reported by: Ted Lindgreen END K 10 svn:author V 7 thompsa K 8 svn:date V 27 2008-05-10T20:12:43.000000Z K 7 svn:log V 174 - Associate from a taskq as we can deadlock on the ndis hal and the com lock. - Remove double vap init (ieee80211_start_all) - Keep ic_curchan in sync with the scan results. END K 10 svn:author V 7 thompsa K 8 svn:date V 27 2008-05-10T20:25:59.000000Z K 7 svn:log V 51 Only start the vaps if the init routine completed. END K 10 svn:author V 4 ache K 8 svn:date V 27 2008-05-10T20:46:07.000000Z K 7 svn:log V 105 Add -mno-sse3 for amd64 case too PR: 123518 Submitted by: Marc Olzheim END K 10 svn:author V 3 alc K 8 svn:date V 27 2008-05-10T21:46:20.000000Z K 7 svn:log V 352 Introduce a new parameter "superpage_align" to kmem_suballoc() that is used to request superpage alignment for the submap. Request superpage alignment for the kmem_map. Pass VMFS_ANY_SPACE instead of TRUE to vm_map_find(). (They are currently equivalent but VMFS_ANY_SPACE is the new preferred spelling.) Remove a stale comment from kmem_malloc(). END K 10 svn:author V 8 kientzle K 8 svn:date V 27 2008-05-10T23:27:22.000000Z K 7 svn:log V 152 MFC: FreeBSD does have fstat() and libarchive should use it (it reduces some races). But I need to fix a typo in the one use of fstat() first. END K 10 svn:author V 3 alc K 8 svn:date V 27 2008-05-10T23:39:27.000000Z K 7 svn:log V 45 Provide the new argument to kmem_suballoc(). END K 10 svn:author V 7 weongyo K 8 svn:date V 27 2008-05-11T05:49:02.000000Z K 7 svn:log V 85 MFC: rev. 1.12 Fix incorrect dependencies of zyd(4). Approved by: thompsa (mentor) END K 10 svn:author V 7 weongyo K 8 svn:date V 27 2008-05-11T05:53:19.000000Z K 7 svn:log V 303 MFC: rev. 1.13 don't set sniffer mode to ON when the driver is running with the monitor mode. This solves a problem that sometimes mangled frames are passed. Submitted by: Werner Backes Tested by: Werner Backes PR: kern/121608 Approved by: thompsa (mentor) END K 10 svn:author V 3 imp K 8 svn:date V 27 2008-05-11T05:54:52.000000Z K 7 svn:log V 72 Commit missing mips libthr support that I thought I'd committed earlier END K 10 svn:author V 4 joel K 8 svn:date V 27 2008-05-11T06:40:04.000000Z K 7 svn:log V 25 Update HARDWARE section. END K 10 svn:author V 6 obrien K 8 svn:date V 27 2008-05-11T07:13:08.000000Z K 7 svn:log V 138 Clean up several instances of SADE calling itself sysinstall. (do so generically so the same set of changes can be applied to sysinstall) END K 10 svn:author V 6 obrien K 8 svn:date V 27 2008-05-11T07:18:22.000000Z K 7 svn:log V 46 Sync program name agnostic changes with SADE. END K 10 svn:author V 3 dfr K 8 svn:date V 27 2008-05-11T08:27:17.000000Z K 7 svn:log V 96 Don't try to make links to manpages that no longer exist. Fixes installworld Submitted by: phk END K 10 svn:author V 3 dfr K 8 svn:date V 27 2008-05-11T08:53:55.000000Z K 7 svn:log V 174 MFC kern_lockf.c revision 1.64: When blocking on an F_FLOCK style lock request which is upgrading a shared lock to exclusive, drop the shared lock before deadlock detection. END K 10 svn:author V 3 dfr K 8 svn:date V 27 2008-05-11T10:32:37.000000Z K 7 svn:log V 39 Add manpage links to krb5_principal.3. END K 10 svn:author V 4 nyan K 8 svn:date V 27 2008-05-11T14:25:24.000000Z K 7 svn:log V 60 Add the ed and remove the vi. This fixes a disk-full error. END K 10 svn:author V 6 obrien K 8 svn:date V 27 2008-05-11T17:23:57.000000Z K 7 svn:log V 66 Better to just statically set the name vs. determine at run time. END K 10 svn:author V 3 alc K 8 svn:date V 27 2008-05-11T20:33:47.000000Z K 7 svn:log V 207 Correct an error in pmap_align_superpage(). Specifically, correctly handle the case where the mapping is greater than a superpage in size but the alignment of the physical pages spans a superpage boundary. END K 10 svn:author V 3 sam K 8 svn:date V 27 2008-05-11T22:11:01.000000Z K 7 svn:log V 64 fix typo's that broke duration calculation on protection frames END K 10 svn:author V 6 rpaulo K 8 svn:date V 27 2008-05-11T23:14:07.000000Z K 7 svn:log V 315 Don't use libkern's max() function as that's for unsigned numbers only. Instead use the worldwide known MAX() function. This should fix problems with negative values showing up on dev.cpu.%d.temperature. This is slightly different from the fix in the PR. Submitted by: KOIE Hidetaka PR: 123542 END K 10 svn:author V 6 rpaulo K 8 svn:date V 27 2008-05-11T23:17:57.000000Z K 7 svn:log V 150 Change the check for cpu_high to actually match CPUID 0x06. Submitted by: Arthur Hartwig PR: 122878 MFC after: 3 days END K 10 svn:author V 3 sam K 8 svn:date V 27 2008-05-11T23:18:11.000000Z K 7 svn:log V 51 move inline keyword to silence compiler complaints END K 10 svn:author V 3 sam K 8 svn:date V 27 2008-05-11T23:20:26.000000Z K 7 svn:log V 33 add PLCP service bit definitions END K 10 svn:author V 3 sam K 8 svn:date V 27 2008-05-11T23:27:57.000000Z K 7 svn:log V 133 use the current left edge of the BA window when forming ADDBA request so an existing session is re-established with the correct seq# END K 10 svn:author V 3 sam K 8 svn:date V 27 2008-05-11T23:32:07.000000Z K 7 svn:log V 61 add DFS capability bit and use it to auto-enable DFS support END K 10 svn:author V 3 sam K 8 svn:date V 27 2008-05-11T23:33:56.000000Z K 7 svn:log V 56 use c99-style initialization for ieee80211_phymode_name END K 10 svn:author V 3 sam K 8 svn:date V 27 2008-05-11T23:36:58.000000Z K 7 svn:log V 45 we have a DFS capability now so enable check END K 10 svn:author V 3 sam K 8 svn:date V 27 2008-05-12T00:15:30.000000Z K 7 svn:log V 679 Minor cleanup of vap create work: o add IEEE80211_C_STA capability to indicate sta mode is supported (was previously assumed) and mark drivers as capable o add ieee80211_opcap array to map an opmode to the equivalent capability bit o move IEEE80211_C_OPMODE definition to where capabilities are defined so it's clear it should be kept in sync (on future additions) o check device capabilities in clone create before trying to create a vap; this makes driver checks unneeded o make error codes return on failed clone request unique o temporarily add console printfs on clone request failures to aid in debugging; these will move under DIAGNOSTIC or similar before release END K 10 svn:author V 3 sam K 8 svn:date V 27 2008-05-12T00:32:52.000000Z K 7 svn:log V 385 Update PLCP<->rate mapping support: o correct mapping of CCK rates to PLCP; was using nonstandard Ralink values which just happened to also be used by Zydas (so went unnoticed) o change ieee80211_plcp2rate api to take a phy type instead of a flag that indicates ofdm/!ofdm o update drivers to match (restore per-driver code to map rate->PLCP) Reviewed by: sephe, weongyo, thompsa END K 10 svn:author V 3 sam K 8 svn:date V 27 2008-05-12T00:34:28.000000Z K 7 svn:log V 50 declare ieee80211_phymode_name with an array size END K 10 svn:author V 3 gnn K 8 svn:date V 27 2008-05-12T02:44:53.000000Z K 7 svn:log V 195 Fix the loopback interface. Cleaning up some code with new macros was a tad too aggressive. PR: kern/123568 Submitted by: Vladimir Ermakov Obtained from: antoine END K 10 svn:author V 6 julian K 8 svn:date V 27 2008-05-12T06:42:06.000000Z K 7 svn:log V 45 fix typo in runz_fuzz noticed by:Elijah Buck END K 10 svn:author V 6 julian K 8 svn:date V 27 2008-05-12T06:45:37.000000Z K 7 svn:log V 29 fix stupid typo in runq-fuzz END K 10 svn:author V 6 julian K 8 svn:date V 27 2008-05-12T06:47:49.000000Z K 7 svn:log V 93 fix stupid typo.. not an MFC because code is differnt from current but the logic is the same END K 10 svn:author V 3 mtm K 8 svn:date V 27 2008-05-12T07:29:03.000000Z K 7 svn:log V 66 MFC: Fix improper use of checkyesno routine. Noticed by: oliver END K 10 svn:author V 3 mtm K 8 svn:date V 27 2008-05-12T07:37:40.000000Z K 7 svn:log V 277 MFC: o Change the warning dialog for the 'W' command in both the label and partition editors to reflect the fact that this is a stand-alone application, not sysinstall(8). o Change an instance of sade(8) refering to itself as sysinstall(8) in a confirmation dialog. END K 10 svn:author V 8 brueffer K 8 svn:date V 27 2008-05-12T08:53:02.000000Z K 7 svn:log V 12 Typo fixes. END K 10 svn:author V 3 flz K 8 svn:date V 27 2008-05-12T11:49:16.000000Z K 7 svn:log V 247 Don't require a configuration file. Ntpd will be perfectly happy if there's none or if the file doesn't exist (there's no ntp.conf in the base install). PR: conf/119592 Submitted by: Renaud Waldura MFC after: 1 week END K 10 svn:author V 6 scottl K 8 svn:date V 27 2008-05-12T14:09:19.000000Z K 7 svn:log V 150 Add support for management apps. Work around an apparent firmware bug that results in hung i/o if more than 128 commands are scheduled for an array. END K 10 svn:author V 7 delphij K 8 svn:date V 27 2008-05-12T16:42:01.000000Z K 7 svn:log V 180 MFC: usbdevs revisions 1.331 (mav)+1.347 (mav)+1.352 (kris moore) uipaq.c revisions 1.8+1.10 (mav), 1.9 (stas), 1.11 (kris moore) For several HTC Smartphone/PocketPC support. END K 10 svn:author V 7 delphij K 8 svn:date V 27 2008-05-12T18:00:55.000000Z K 7 svn:log V 163 MFC: Instead of rolling our own jail number allocation procedure, use alloc_unr() to do it. Submitted by: Ed Schouten PR: kern/122270 END K 10 svn:author V 4 ceri K 8 svn:date V 27 2008-05-12T20:12:34.000000Z K 7 svn:log V 101 For the sake of the log, revision 1.353 was bumped for setfib(2) and multiple routing table support. END K 10 svn:author V 3 jhb K 8 svn:date V 27 2008-05-12T21:34:52.000000Z K 7 svn:log V 175 - Set sc->dev to the new-bus device_t so all the device_printf()s work. - Add a missing newline to a printf. MFC after: 1 week Submitted by: Andriy Gapon avg <> icyb.net.ua END K 10 svn:author V 5 kevlo K 8 svn:date V 27 2008-05-13T09:42:03.000000Z K 7 svn:log V 56 Improve temporary file handling Obtained from: OpenBSD END K 10 svn:author V 4 nyan K 8 svn:date V 27 2008-05-13T11:51:19.000000Z K 7 svn:log V 53 Replace the ee with the ed to resolve disk overflow. END K 10 svn:author V 6 cognet K 8 svn:date V 27 2008-05-13T14:00:09.000000Z K 7 svn:log V 311 From the OpenBSD commit log : Add support for the Apple USB Ethernet adapter. Work around the "latch in at the first working PHY address hack", that fails for this adapter because it returns 0xffff when reading from lower PHY addresses. Also add more debugging printfs Obtained from: OpenBSD MFC After: 3 days END K 10 svn:author V 8 rdivacky K 8 svn:date V 27 2008-05-13T20:01:27.000000Z K 7 svn:log V 358 Implement robust futexes. Most of the code is modelled after what Linux does. This is because robust futexes are mostly userspace thing which we cannot alter. Two syscalls maintain pointer to userspace list and when process exits a routine walks this list waking up processes sleeping on futexes from that list. Reviewed by: kib (mentor) MFC after: 1 month END K 10 svn:author V 8 rdivacky K 8 svn:date V 27 2008-05-13T20:02:26.000000Z K 7 svn:log V 34 Regen. Approved by: kib (mentor) END K 10 svn:author V 6 marius K 8 svn:date V 27 2008-05-13T20:58:08.000000Z K 7 svn:log V 192 Don't let hacksync() call bus_dmamap_sync(9) on DMA maps which are not initialized. This fixes a panic on sparc64 where calling bus_dmamap_sync(9) on NULL DMA maps is fatal. Approved by: sam END