| History log of /src/sys/netatalk/at_var.h |
| Revision | | Date | Author | Comments |
| 1.10 |
| 03-Sep-2022 |
thorpej | Convert NETATALK from a legacy netisr to pktqueue.
|
| 1.9 |
| 09-Oct-2019 |
maxv | Memset to prevent stack info leak.
|
| 1.8 |
| 19-Apr-2018 |
christos | branches: 1.8.2; 1.8.6; s/static inline/static __inline/g for consistency.
|
| 1.7 |
| 30-Aug-2007 |
dyoung | branches: 1.7.110; Use malloc(9) for sockaddrs instead of pool(9), and remove dom_sa_pool and dom_sa_len members from struct domain. Pools of fixed-size objects are too rigid for sockaddr_dls, whose size can vary over a wide range.
Return sockaddr_dl to its "historical" size. Now that I'm using malloc(9) instead of pool(9) to allocate sockaddr_dl, I can create a sockaddr_dl of any size in the kernel, so expanding sockaddr_dl is useless.
Avoid using sizeof(struct sockaddr_dl) in the kernel.
Introduce sockaddr_dl_alloc() for allocating & initializing an arbitrary sockaddr_dl on the heap.
Add an argument, the sockaddr length, to sockaddr_alloc(), sockaddr_copy(), and sockaddr_dl_setaddr().
Constify: LLADDR() -> CLLADDR().
Where the kernel overwrites LLADDR(), use sockaddr_dl_setaddr(), instead. Used properly, sockaddr_dl_setaddr() will not overrun the end of the sockaddr.
|
| 1.6 |
| 02-May-2007 |
dyoung | branches: 1.6.2; 1.6.6; 1.6.8; Eliminate address family-specific route caches (struct route, struct route_in6, struct route_iso), replacing all caches with a struct route.
The principle benefit of this change is that all of the protocol families can benefit from route cache-invalidation, which is necessary for correct routing. Route-cache invalidation fixes an ancient PR, kern/3508, at long last; it fixes various other PRs, also.
Discussions with and ideas from Joerg Sonnenberger influenced this work tremendously. Of course, all design oversights and bugs are mine.
DETAILS
1 I added to each address family a pool of sockaddrs. I have introduced routines for allocating, copying, and duplicating, and freeing sockaddrs:
struct sockaddr *sockaddr_alloc(sa_family_t af, int flags); struct sockaddr *sockaddr_copy(struct sockaddr *dst, const struct sockaddr *src); struct sockaddr *sockaddr_dup(const struct sockaddr *src, int flags); void sockaddr_free(struct sockaddr *sa);
sockaddr_alloc() returns either a sockaddr from the pool belonging to the specified family, or NULL if the pool is exhausted. The returned sockaddr has the right size for that family; sa_family and sa_len fields are initialized to the family and sockaddr length---e.g., sa_family = AF_INET and sa_len = sizeof(struct sockaddr_in). sockaddr_free() puts the given sockaddr back into its family's pool.
sockaddr_dup() and sockaddr_copy() work analogously to strdup() and strcpy(), respectively. sockaddr_copy() KASSERTs that the family of the destination and source sockaddrs are alike.
The 'flags' argumet for sockaddr_alloc() and sockaddr_dup() is passed directly to pool_get(9).
2 I added routines for initializing sockaddrs in each address family, sockaddr_in_init(), sockaddr_in6_init(), sockaddr_iso_init(), etc. They are fairly self-explanatory.
3 structs route_in6 and route_iso are no more. All protocol families use struct route. I have changed the route cache, 'struct route', so that it does not contain storage space for a sockaddr. Instead, struct route points to a sockaddr coming from the pool the sockaddr belongs to. I added a new method to struct route, rtcache_setdst(), for setting the cache destination:
int rtcache_setdst(struct route *, const struct sockaddr *);
rtcache_setdst() returns 0 on success, or ENOMEM if no memory is available to create the sockaddr storage.
It is now possible for rtcache_getdst() to return NULL if, say, rtcache_setdst() failed. I check the return value for NULL everywhere in the kernel.
4 Each routing domain (struct domain) has a list of live route caches, dom_rtcache. rtflushall(sa_family_t af) looks up the domain indicated by 'af', walks the domain's list of route caches and invalidates each one.
|
| 1.5 |
| 17-Feb-2007 |
dyoung | branches: 1.5.4; 1.5.6; KNF: de-__P, bzero -> memset, bcmp -> memcmp. Remove extraneous parentheses in return statements.
Cosmetic: don't open-code TAILQ_FOREACH().
Cosmetic: change types of variables to avoid oodles of casts: in in6_src.c, avoid casts by changing several route_in6 pointers to struct route pointers. Remove unnecessary casts to caddr_t elsewhere.
Pave the way for eliminating address family-specific route caches: soon, struct route will not embed a sockaddr, but it will hold a reference to an external sockaddr, instead. We will set the destination sockaddr using rtcache_setdst(). (I created a stub for it, but it isn't used anywhere, yet.) rtcache_free() will free the sockaddr. I have extracted from rtcache_free() a helper subroutine, rtcache_clear(). rtcache_clear() will "forget" a cached route, but it will not forget the destination by releasing the sockaddr. I use rtcache_clear() instead of rtcache_free() in rtcache_update(), because rtcache_update() is not supposed to forget the destination.
Constify:
1 Introduce const accessor for route->ro_dst, rtcache_getdst().
2 Constify the 'dst' argument to ifnet->if_output(). This led me to constify a lot of code called by output routines.
3 Constify the sockaddr argument to protosw->pr_ctlinput. This led me to constify a lot of code called by ctlinput routines.
4 Introduce const macros for converting from a generic sockaddr to family-specific sockaddrs, e.g., sockaddr_in: satocsin6, satocsin, et cetera.
|
| 1.4 |
| 10-Dec-2005 |
elad | branches: 1.4.26; Multiple inclusion protection, as suggested by christos@ on tech-kern@ few days ago.
|
| 1.3 |
| 12-May-2002 |
matt | branches: 1.3.10; 1.3.26; Eliminate commons.
|
| 1.2 |
| 23-Mar-2000 |
thorpej | branches: 1.2.6; 1.2.8; New callout mechanism with two major improvements over the old timeout()/untimeout() API: - Clients supply callout handle storage, thus eliminating problems of resource allocation. - Insertion and removal of callouts is constant time, important as this facility is used quite a lot in the kernel.
The old timeout()/untimeout() API has been removed from the kernel.
|
| 1.1 |
| 02-Apr-1997 |
christos | branches: 1.1.22; Appletalk networking stack. Code based on netatalk release beta-970220 from toccata.fugue.com. Ported to netbsd by Bill Studenmund. Changes: - KNF - remove endian.h - adapt to the new arp code. - fix small biff's with spl/splx.
|
| 1.1.22.1 |
| 20-Nov-2000 |
bouyer | Update thorpej_scsipi to -current as of a month ago
|
| 1.2.8.1 |
| 23-Jun-2002 |
jdolecek | catch up with -current on kqueue branch
|
| 1.2.6.1 |
| 20-Jun-2002 |
nathanw | Catch up to -current.
|
| 1.3.26.3 |
| 03-Sep-2007 |
yamt | sync with head.
|
| 1.3.26.2 |
| 26-Feb-2007 |
yamt | sync with head.
|
| 1.3.26.1 |
| 21-Jun-2006 |
yamt | sync with head.
|
| 1.3.10.1 |
| 11-Dec-2005 |
christos | Sync with head.
|
| 1.4.26.2 |
| 07-May-2007 |
yamt | sync with head.
|
| 1.4.26.1 |
| 27-Feb-2007 |
yamt | - sync with head. - move sched_changepri back to kern_synch.c as it doesn't know PPQ anymore.
|
| 1.5.6.1 |
| 11-Jul-2007 |
mjf | Sync with head.
|
| 1.5.4.2 |
| 09-Oct-2007 |
ad | Sync with head.
|
| 1.5.4.1 |
| 08-Jun-2007 |
ad | Sync with head.
|
| 1.6.8.1 |
| 06-Nov-2007 |
matt | sync with HEAD
|
| 1.6.6.1 |
| 03-Sep-2007 |
jmcneill | Sync with HEAD.
|
| 1.6.2.1 |
| 03-Sep-2007 |
skrll | Sync with HEAD.
|
| 1.7.110.1 |
| 22-Apr-2018 |
pgoyette | Sync with HEAD
|
| 1.8.6.1 |
| 10-Oct-2019 |
martin | Pull up following revision(s) (requested by maxv in ticket #297):
sys/netatalk/at_var.h: revision 1.9
Memset to prevent stack info leak.
|
| 1.8.2.1 |
| 13-Apr-2020 |
martin | Mostly merge changes from HEAD upto 20200411
|