223 # endif
224
225 # if SOLARIS2 >= 6
226 # include <sys/atomic.h>
227 typedef uint32_t u_32_t;
228 # else
229 typedef unsigned int u_32_t;
230 # endif
231 # define U_32_T 1
232
233 # ifdef _KERNEL
234 # define KRWLOCK_T krwlock_t
235 # define KMUTEX_T kmutex_t
236 # if SOLARIS2 >= 10
237 # include <sys/sdt.h>
238
239 # define IPF_IS_LOOPBACK(f) ((f) & FI_NOCKSUM)
240 # endif /* SOLARIS2 >= 10 */
241 # if SOLARIS2 >= 6
242 # if SOLARIS2 == 6
243 # define ATOMIC_INCL(x) atomic_add_long((uint32_t*)&(x), 1)
244 # define ATOMIC_DECL(x) atomic_add_long((uint32_t*)&(x), -1)
245 # else
246 # define ATOMIC_INCL(x) atomic_add_long(&(x), 1)
247 # define ATOMIC_DECL(x) atomic_add_long(&(x), -1)
248 # endif /* SOLARIS2 == 6 */
249 # define ATOMIC_INC64(x) atomic_add_64((uint64_t*)&(x), 1)
250 # define ATOMIC_INC32(x) atomic_add_32((uint32_t*)&(x), 1)
251 # define ATOMIC_INC16(x) atomic_add_16((uint16_t*)&(x), 1)
252 # define ATOMIC_DEC64(x) atomic_add_64((uint64_t*)&(x), -1)
253 # define ATOMIC_DEC32(x) atomic_add_32((uint32_t*)&(x), -1)
254 # define ATOMIC_DEC16(x) atomic_add_16((uint16_t*)&(x), -1)
255 # else
256 # define ATOMIC_INC(x) { mutex_enter(&ipf_rw); (x)++; \
257 mutex_exit(&ipf_rw); }
258 # define ATOMIC_DEC(x) { mutex_enter(&ipf_rw); (x)--; \
259 mutex_exit(&ipf_rw); }
260 # endif /* SOLARIS2 >= 6 */
261 # define USE_MUTEXES
262 # define MUTEX_ENTER(x) mutex_enter(&(x)->ipf_lk)
263 # define READ_ENTER(x) rw_enter(&(x)->ipf_lk, RW_READER)
264 # define WRITE_ENTER(x) rw_enter(&(x)->ipf_lk, RW_WRITER)
265 # define MUTEX_DOWNGRADE(x) rw_downgrade(&(x)->ipf_lk)
266 # define RWLOCK_INIT(x, y) rw_init(&(x)->ipf_lk, (y), \
267 RW_DRIVER, NULL)
268 # define RWLOCK_EXIT(x) rw_exit(&(x)->ipf_lk)
269 # define RW_DESTROY(x) rw_destroy(&(x)->ipf_lk)
270 # define MUTEX_INIT(x, y) mutex_init(&(x)->ipf_lk, (y), \
271 MUTEX_DRIVER, NULL)
272 # define MUTEX_DESTROY(x) mutex_destroy(&(x)->ipf_lk)
273 # define MUTEX_NUKE(x) bzero((x), sizeof(*(x)))
274 # define MUTEX_EXIT(x) mutex_exit(&(x)->ipf_lk)
908 # define WRITE_ENTER(x) sx_xlock(&(x)->ipf_lk)
909 # define MUTEX_DOWNGRADE(x) sx_downgrade(&(x)->ipf_lk)
910 # define RWLOCK_INIT(x, y) sx_init(&(x)->ipf_lk, (y))
911 # define RW_DESTROY(x) sx_destroy(&(x)->ipf_lk)
912 # ifdef sx_unlock
913 # define RWLOCK_EXIT(x) sx_unlock(x)
914 # else
915 # define RWLOCK_EXIT(x) do { \
916 if ((x)->ipf_lk.sx_cnt < 0) \
917 sx_xunlock(&(x)->ipf_lk); \
918 else \
919 sx_sunlock(&(x)->ipf_lk); \
920 } while (0)
921 # endif
922 # endif
923 # include <machine/atomic.h>
924 # define ATOMIC_INC(x) { mtx_lock(&ipf_rw.ipf_lk); (x)++; \
925 mtx_unlock(&ipf_rw.ipf_lk); }
926 # define ATOMIC_DEC(x) { mtx_lock(&ipf_rw.ipf_lk); (x)--; \
927 mtx_unlock(&ipf_rw.ipf_lk); }
928 # define ATOMIC_INCL(x) atomic_add_long(&(x), 1)
929 # define ATOMIC_INC64(x) ATOMIC_INC(x)
930 # define ATOMIC_INC32(x) atomic_add_32(&(x), 1)
931 # define ATOMIC_INC16(x) atomic_add_16(&(x), 1)
932 # define ATOMIC_DECL(x) atomic_add_long(&(x), -1)
933 # define ATOMIC_DEC64(x) ATOMIC_DEC(x)
934 # define ATOMIC_DEC32(x) atomic_add_32(&(x), -1)
935 # define ATOMIC_DEC16(x) atomic_add_16(&(x), -1)
936 # define SPL_X(x) ;
937 # define SPL_NET(x) ;
938 # define SPL_IMP(x) ;
939 extern int in_cksum __P((struct mbuf *, int));
940 # endif /* __FreeBSD_version >= 500043 */
941 # define MSGDSIZE(x) mbufchainlen(x)
942 # define M_LEN(x) (x)->m_len
943 # define M_DUPLICATE(x) m_copy((x), 0, M_COPYALL)
944 # define IPF_PANIC(x,y) if (x) { printf y; panic("ipf_panic"); }
945 typedef struct mbuf mb_t;
946 # endif /* _KERNEL */
947
948 # if __FreeBSD__ < 3
949 # include <machine/spl.h>
950 # else
951 # if __FreeBSD__ == 3
952 # if defined(IPFILTER_LKM) && !defined(ACTUALLY_LKM_NOT_KERNEL)
953 # define ACTUALLY_LKM_NOT_KERNEL
954 # endif
955 # endif
|
223 # endif
224
225 # if SOLARIS2 >= 6
226 # include <sys/atomic.h>
227 typedef uint32_t u_32_t;
228 # else
229 typedef unsigned int u_32_t;
230 # endif
231 # define U_32_T 1
232
233 # ifdef _KERNEL
234 # define KRWLOCK_T krwlock_t
235 # define KMUTEX_T kmutex_t
236 # if SOLARIS2 >= 10
237 # include <sys/sdt.h>
238
239 # define IPF_IS_LOOPBACK(f) ((f) & FI_NOCKSUM)
240 # endif /* SOLARIS2 >= 10 */
241 # if SOLARIS2 >= 6
242 # if SOLARIS2 == 6
243 # define ATOMIC_INCL(x) atomic_inc_ulong((uint32_t *)&(x))
244 # define ATOMIC_DECL(x) atomic_dec_ulong((uint32_t *)&(x))
245 # else
246 # define ATOMIC_INCL(x) atomic_inc_ulong(&(x))
247 # define ATOMIC_DECL(x) atomic_dec_ulong(&(x))
248 # endif /* SOLARIS2 == 6 */
249 # define ATOMIC_INC64(x) atomic_inc_64((uint64_t *)&(x))
250 # define ATOMIC_INC32(x) atomic_inc_32((uint32_t *)&(x))
251 # define ATOMIC_INC16(x) atomic_inc_16((uint16_t *)&(x))
252 # define ATOMIC_DEC64(x) atomic_dec_64((uint64_t *)&(x))
253 # define ATOMIC_DEC32(x) atomic_dec_32((uint32_t *)&(x))
254 # define ATOMIC_DEC16(x) atomic_dec_16((uint16_t *)&(x))
255 # else
256 # define ATOMIC_INC(x) { mutex_enter(&ipf_rw); (x)++; \
257 mutex_exit(&ipf_rw); }
258 # define ATOMIC_DEC(x) { mutex_enter(&ipf_rw); (x)--; \
259 mutex_exit(&ipf_rw); }
260 # endif /* SOLARIS2 >= 6 */
261 # define USE_MUTEXES
262 # define MUTEX_ENTER(x) mutex_enter(&(x)->ipf_lk)
263 # define READ_ENTER(x) rw_enter(&(x)->ipf_lk, RW_READER)
264 # define WRITE_ENTER(x) rw_enter(&(x)->ipf_lk, RW_WRITER)
265 # define MUTEX_DOWNGRADE(x) rw_downgrade(&(x)->ipf_lk)
266 # define RWLOCK_INIT(x, y) rw_init(&(x)->ipf_lk, (y), \
267 RW_DRIVER, NULL)
268 # define RWLOCK_EXIT(x) rw_exit(&(x)->ipf_lk)
269 # define RW_DESTROY(x) rw_destroy(&(x)->ipf_lk)
270 # define MUTEX_INIT(x, y) mutex_init(&(x)->ipf_lk, (y), \
271 MUTEX_DRIVER, NULL)
272 # define MUTEX_DESTROY(x) mutex_destroy(&(x)->ipf_lk)
273 # define MUTEX_NUKE(x) bzero((x), sizeof(*(x)))
274 # define MUTEX_EXIT(x) mutex_exit(&(x)->ipf_lk)
908 # define WRITE_ENTER(x) sx_xlock(&(x)->ipf_lk)
909 # define MUTEX_DOWNGRADE(x) sx_downgrade(&(x)->ipf_lk)
910 # define RWLOCK_INIT(x, y) sx_init(&(x)->ipf_lk, (y))
911 # define RW_DESTROY(x) sx_destroy(&(x)->ipf_lk)
912 # ifdef sx_unlock
913 # define RWLOCK_EXIT(x) sx_unlock(x)
914 # else
915 # define RWLOCK_EXIT(x) do { \
916 if ((x)->ipf_lk.sx_cnt < 0) \
917 sx_xunlock(&(x)->ipf_lk); \
918 else \
919 sx_sunlock(&(x)->ipf_lk); \
920 } while (0)
921 # endif
922 # endif
923 # include <machine/atomic.h>
924 # define ATOMIC_INC(x) { mtx_lock(&ipf_rw.ipf_lk); (x)++; \
925 mtx_unlock(&ipf_rw.ipf_lk); }
926 # define ATOMIC_DEC(x) { mtx_lock(&ipf_rw.ipf_lk); (x)--; \
927 mtx_unlock(&ipf_rw.ipf_lk); }
928 # define ATOMIC_INCL(x) atomic_inc_ulong(&(x))
929 # define ATOMIC_INC64(x) ATOMIC_INC(x)
930 # define ATOMIC_INC32(x) atomic_inc_32(&(x))
931 # define ATOMIC_INC16(x) atomic_inc_16(&(x))
932 # define ATOMIC_DECL(x) atomic_dec_ulong(&(x))
933 # define ATOMIC_DEC64(x) ATOMIC_DEC(x)
934 # define ATOMIC_DEC32(x) atomic_dec_32(&(x))
935 # define ATOMIC_DEC16(x) atomic_dec_16(&(x))
936 # define SPL_X(x) ;
937 # define SPL_NET(x) ;
938 # define SPL_IMP(x) ;
939 extern int in_cksum __P((struct mbuf *, int));
940 # endif /* __FreeBSD_version >= 500043 */
941 # define MSGDSIZE(x) mbufchainlen(x)
942 # define M_LEN(x) (x)->m_len
943 # define M_DUPLICATE(x) m_copy((x), 0, M_COPYALL)
944 # define IPF_PANIC(x,y) if (x) { printf y; panic("ipf_panic"); }
945 typedef struct mbuf mb_t;
946 # endif /* _KERNEL */
947
948 # if __FreeBSD__ < 3
949 # include <machine/spl.h>
950 # else
951 # if __FreeBSD__ == 3
952 # if defined(IPFILTER_LKM) && !defined(ACTUALLY_LKM_NOT_KERNEL)
953 # define ACTUALLY_LKM_NOT_KERNEL
954 # endif
955 # endif
|