From owner-p4-projects@FreeBSD.ORG Sun Aug 9 04:21:27 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6F4901065674; Sun, 9 Aug 2009 04:21:27 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1D9C3106564A for ; Sun, 9 Aug 2009 04:21:27 +0000 (UTC) (envelope-from zjriggl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 0AD988FC08 for ; Sun, 9 Aug 2009 04:21:27 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n794LReV035832 for ; Sun, 9 Aug 2009 04:21:27 GMT (envelope-from zjriggl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n794LQNE035830 for perforce@freebsd.org; Sun, 9 Aug 2009 04:21:26 GMT (envelope-from zjriggl@FreeBSD.org) Date: Sun, 9 Aug 2009 04:21:26 GMT Message-Id: <200908090421.n794LQNE035830@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zjriggl@FreeBSD.org using -f From: Zachariah Riggle To: Perforce Change Reviews Cc: Subject: PERFORCE change 167121 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 04:21:28 -0000 http://perforce.freebsd.org/chv.cgi?CH=167121 Change 167121 by zjriggl@zjriggl_tcpregression on 2009/08/09 04:21:02 Periodic submit Affected files ... .. //depot/projects/soc2009/zjriggl_tcpregression/Makefile#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/loggable.py#6 edit .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/.project#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/.pydevproject#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/__init__.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/__init__.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/arp.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/dhcpv4.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/dns.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/ethernet.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/icmpv4.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/icmpv6.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/ipsec.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/ipv4.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/ipv6.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/localhost.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/nd6.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/payload.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/pseudoipv6.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/tcp.orig.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/tcp.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/tcpv6.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/udp.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/udpv4.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/packets/udpv6.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap.so#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/HEAD#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/config#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/description#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/applypatch-msg.sample#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/commit-msg.sample#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/post-commit.sample#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/post-receive.sample#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/post-update.sample#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/pre-applypatch.sample#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/pre-commit.sample#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/pre-rebase.sample#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/prepare-commit-msg.sample#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/update.sample#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/index#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/info/exclude#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/logs/HEAD#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/logs/refs/heads/master#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/logs/refs/remotes/origin/HEAD#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/objects/pack/pack-77f13729543285782c830a6a087aeb8ce3ad7c33.idx#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/objects/pack/pack-77f13729543285782c830a6a087aeb8ce3ad7c33.pack#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/packed-refs#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/refs/heads/master#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/refs/remotes/origin/HEAD#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.project#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.pydevproject#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/CHANGES#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/LICENSE#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/Makefile#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/README#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/config.h#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/config.pkl#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/pcap.c#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/pcap.pyx#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/pcap.so#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/pcap_ex.c#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/pcap_ex.h#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/setup.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/test.pcap#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/test.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/testsniff.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcsextension/__init__.py#9 edit .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcsextension/decorators.py#5 edit .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcsextension/field.py#3 edit .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcsextension/ipAddress.py#6 edit .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcsextension/networkPort.py#5 edit .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/sequence.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/tcpstatemachine.py#9 edit .. //depot/projects/soc2009/zjriggl_tcpregression/src/tests/segmentBufferTest.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tests/tcpFilterTest.py#1 add Differences ... ==== //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/loggable.py#6 (text+ko) ==== @@ -2,32 +2,65 @@ import pcsextension import inspect -# Configure logging +# -------- Configure logging -------- logging.config.fileConfig( "logging.conf" ) +# -------- Set Up New Loglevel Names -------- ( logging.FIELD_CHANGE, - logging.RESPONSE_GENERATION ) = range( logging.DEBUG - 2, logging.DEBUG ) - + logging.RESPONSE_GENERATION ) = range( logging.DEBUG - 2, logging.DEBUG ) + ( logging.PACKET_TRANSMIT, logging.PACKET_RECEIVED, logging.PACKET_SENT, logging.VALIDATE, logging.STATE_CHANGE ) = range( logging.INFO - 5, logging.INFO ) + +# -------- ANSI/VT100 Colors -------- +( fgBlack, +fgRed, +fgGreen, +fgYellow, +fgBlue, +fgMagenta, +fgCyan, +fgWhite ) = range( 30, 38 ) + +( bgBlack, +bgRed, +bgGreen, +bgYellow, +bgBlue, +bgMagenta, +bgCyan, +bgWhite ) = range( 40, 48 ) + +def colorText( text, fgColor = '', bgColor = '' ): + ''' + Returns text colored corresponding to the the ANSI/VT100 color code + provided a arguments. Colors are defined as fg_____ or bg_____ with + the color name. Alternatively, directly use the color code, see below. + Foreground Background Color + Code Code + 30 40 Black + 31 41 Red + 32 42 Green + 33 43 Yellow + 34 44 Blue + 35 45 Magenta + 36 46 Cyan + 37 47 White + ''' + return "\033[1;%s;%sm%s\033[1;m" % ( fgColor, bgColor, text ) + +# -------- Loglevel names -------- logging.addLevelName( logging.FIELD_CHANGE, "FIELD" ) -logging.addLevelName( logging.RESPONSE_GENERATION, "\033[1;36mGENERATE\033[1;m" ) -logging.addLevelName( logging.PACKET_TRANSMIT, "XMIT" ) -logging.addLevelName( logging.PACKET_RECEIVED, "\033[1;31mRECVD\033[1;m" ) -logging.addLevelName( logging.PACKET_SENT, "\033[1;31mSENT\033[1;m" ) +logging.addLevelName( logging.RESPONSE_GENERATION, colorText( "GENERATE", fgCyan ) ) +logging.addLevelName( logging.PACKET_RECEIVED, colorText( "RECVD", fgYellow ) ) +logging.addLevelName( logging.PACKET_SENT, colorText( "SENT", fgGreen ) ) logging.addLevelName( logging.VALIDATE, "VALIDATE" ) -logging.addLevelName( logging.STATE_CHANGE, "\033[1;37;44mSTATE\033[1;m" ) - -# 1;37;44 +logging.addLevelName( logging.STATE_CHANGE, colorText( "STATE", fgBlue ) ) -# print '\033[1;36mGENERATE\033[1;m' -# print '\033[1;36mCyan like Caribbean\033[1;m' -# '\033[1;31mRed like Radish\033[1;m' - class tcplog( object ): ''' Provides rapid access to logging mechanisms for derived classes. @@ -35,7 +68,7 @@ Provides all of the standard log levels: debug info - warn/warning + warn/warnings error fatal/critical As well as some custom-defined ones: @@ -65,22 +98,22 @@ ''' def __init__( self, parent ): - # self._log = logging.getLogger(parent.__class__.__module__ + '.' + parent.__class__.__name__) - self._log = logging.getLogger( parent.__class__.__name__ ) + # self.logger = logging.getLogger(parent.__class__.__module__ + '.' + parent.__class__.__name__) + self.logger = logging.getLogger( parent.__class__.__name__ ) def caller( self ): return inspect.stack()[2][3] - debug = lambda self, x: self._log.debug( "%s - %s" % ( self.caller(), x ) ) - info = lambda self, x: self._log.info( x ) - error = lambda self, x: self._log.error( x ) - critical = lambda self, x: self._log.critical( x ) - fatal = lambda self, x: self._log.fatal( x ) - warning = lambda self, x: self._log.warning( x ) - warn = lambda self, x: self._log.warn( x ) - state = lambda self, x: self._log.log( logging.STATE_CHANGE, x ) - validate = lambda self, x: self._log.log( logging.VALIDATE, x ) - pktsent = lambda self, x: self._log.log( logging.PACKET_SENT, x ) - pktrecv = lambda self, x: self._log.log( logging.PACKET_RECEIVED, x ) - generated = lambda self, x: self._log.log( logging.RESPONSE_GENERATION, x ) - field = lambda self, x: self._log.log( logging.FIELD_CHANGE, x ) + debug = lambda self, x: self.logger.debug( "%s - %s" % ( self.caller(), x ) ) + info = lambda self, x: self.logger.info( x ) + error = lambda self, x: self.logger.error( x ) + critical = lambda self, x: self.logger.critical( x ) + fatal = lambda self, x: self.logger.fatal( x ) + warning = lambda self, x: self.logger.warning( x ) + warn = lambda self, x: self.logger.warn( x ) + state = lambda self, x: self.logger.log( logging.STATE_CHANGE, x ) + validate = lambda self, x: self.logger.log( logging.VALIDATE, x ) + pktsent = lambda self, x: self.logger.log( logging.PACKET_SENT, x ) + pktrecv = lambda self, x: self.logger.log( logging.PACKET_RECEIVED, x ) + generated = lambda self, x: self.logger.log( logging.RESPONSE_GENERATION, x ) + field = lambda self, x: self.logger.log( logging.FIELD_CHANGE, x ) ==== //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcsextension/__init__.py#9 (text+ko) ==== @@ -28,27 +28,13 @@ p = p.data return None - - -def inet_lton( integer ): - return struct.pack( ">L", integer ) - -def inet_ltoa( integer ): - return socket.inet_ntoa( inet_lton( integer ) ) - -def inet_ntol( byteString ): - return struct.unpack( ">L", byteString )[0] - -def inet_atol( ipString ): - return inet_ntol( socket.inet_aton( ipString ) ) - -def wireSharkFormatBytes(x): +def wireSharkFormatBytes( x ): twoBits = r"(\w\w)" octet = "((%s ){8})" % twoBits twoBytes = "((%s ){2})" % octet - x = re.sub(twoBits,r"\1 ",x) - x = re.sub(octet,r"\1 ",x) - x = re.sub(twoBytes,r"\1\n",x) + x = re.sub( twoBits, r"\1 ", x ) + x = re.sub( octet, r"\1 ", x ) + x = re.sub( twoBytes, r"\1\n", x ) return x ==== //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcsextension/decorators.py#5 (text+ko) ==== @@ -5,48 +5,10 @@ ''' import sys -from inspect import * +# from inspect import * +from inspect import stack -""" -One of three degrees of enforcement may be specified by passing -the 'debug' keyword argument to the decorator: - 0 -- NONE: No type-checking. Decorators disabled. - 1 -- MEDIUM: Print warning message to stderr. (Default) - 2 -- STRONG: Raise TypeError with message. -If 'debug' is not passed to the decorator, the default level is used. - -Example usage: - >>> NONE, MEDIUM, STRONG = 0, 1, 2 - >>> - >>> @accepts(int, int, int) - ... @returns(float) - ... def average(x, y, z): - ... return (x + y + z) / 2 - ... - >>> average(5.5, 10, 15.0) - TypeWarning: 'average' method accepts (int, int, int), but was given - (float, int, float) - 15.25 - >>> average(5, 10, 15) - TypeWarning: 'average' method returns (float), but result is (int) - 15 - -Needed to cast params as floats in function def (or simply divide by 2.0). - - >>> TYPE_CHECK = STRONG - >>> @accepts(int, debug=TYPE_CHECK) - ... @returns(int, debug=TYPE_CHECK) - ... def fib(n): - ... if n in (0, 1): return n - ... return fib(n-1) + fib(n-2) - ... - >>> fib(5.3) - Traceback (most recent call last): - ... - TypeError: 'fib' method accepts (int), but was given (float) - -""" -def accepts(*types, **kw): +def accepts( *types, **kw ): """ Function decorator. Checks that inputs given to decorated function are of the expected type. @@ -63,20 +25,20 @@ else: debug = kw['debug'] try: - def decorator(f): - def newf(*args): + def decorator( f ): + def newf( *args ): if debug == 0: - return f(*args) - assert len(args) == len(types) - - if not validateTypes(args,types): - argtypes = tuple(map(type, args)) - msg = info(f.__name__, types, argtypes, 0) + return f( *args ) + assert len( args ) == len( types ) + + if not validateTypes( args, types ): + argtypes = tuple( map( type, args ) ) + msg = info( f.__name__, types, argtypes, 0 ) if debug == 1: print >> sys.stderr, 'TypeWarning: ', msg elif debug == 2: raise TypeError, msg - return f(*args) + return f( *args ) newf.__name__ = f.__name__ return newf return decorator @@ -84,45 +46,45 @@ raise KeyError, key + "is not a valid keyword argument" except TypeError, msg: raise TypeError, msg - - -def validateTypes(argTypeMap): + + +def validateTypes( argTypeMap ): debug = 1 - + arg = 0 - for (k,v) in argTypeMap.items(): - if not isinstance(k,v): + for ( k, v ) in argTypeMap.items(): + if not isinstance( k, v ): parentFile = stack()[1][1] parentLine = stack()[1][2] parentName = stack()[1][3] - - msg = 'TypeWarning: Arg %i of %s (%s:%i) should be %s. Encountered %s. \n' % (arg, parentName, parentFile, parentLine, v, type(k)) - - if len(stack()) > 2: + + msg = 'TypeWarning: Arg %i of %s (%s:%i) should be %s. Encountered %s. \n' % ( arg, parentName, parentFile, parentLine, v, type( k ) ) + + if len( stack() ) > 2: grandParentFile = stack()[2][1] grandParentLine = stack()[2][2] grandParentName = stack()[2][3] - - msg += 'Referenced from %s:%i in %s\n' % (grandParentFile, grandParentLine, grandParentName) - + + msg += 'Referenced from %s:%i in %s\n' % ( grandParentFile, grandParentLine, grandParentName ) + if debug == 1: - sys.stderr.write(msg) + sys.stderr.write( msg ) elif debug == 2: raise TypeError, msg return False return True -def info(fname, expected, actual, flag): +def info( fname, expected, actual, flag ): """ Convenience function returns nicely formatted error/warning msg. """ - format = lambda types: ', '.join([str(t).split("'")[1] for t in types]) - expected, actual = format(expected), format(actual) + format = lambda types: ', '.join( [str( t ).split( "'" )[1] for t in types] ) + expected, actual = format( expected ), format( actual ) msg = "'%s' method " % fname \ - + ("accepts", "returns")[flag] + " (%s), but " % expected\ - + ("was given", "result is")[flag] + " (%s)" % actual + + ( "accepts", "returns" )[flag] + " (%s), but " % expected\ + + ( "was given", "result is" )[flag] + " (%s)" % actual return msg - -def prop(func): + +def prop( func ): '''A decorator function for easy property creation. >>> class CLS(object): @@ -186,13 +148,13 @@ ''' ops = func() or {} - name=ops.get('name') or ops.get('prefix','_')+func.__name__ # property name - fget=ops.get('fget',lambda self:getattr(self, name)) - fset=ops.get('fset',lambda self,value:setattr(self,name,value)) - fdel=ops.get('fdel',lambda self:delattr(self,name)) - return property ( fget, fset, fdel, ops.get('doc',func.__doc__ or '') ) + name = ops.get( 'name' ) or ops.get( 'prefix', '_' ) + func.__name__ # property name + fget = ops.get( 'fget', lambda self:getattr( self, name ) ) + fset = ops.get( 'fset', lambda self, value:setattr( self, name, value ) ) + fdel = ops.get( 'fdel', lambda self:delattr( self, name ) ) + return property ( fget, fset, fdel, ops.get( 'doc', func.__doc__ or '' ) ) -def boundedInt(func): +def boundedInt( func ): ''' A bounded integer. See @prop for syntax. Set the 'max' field to set a wrap-around value. @@ -213,63 +175,42 @@ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ''' ops = func() or {} - upperBound = ops.get('max',1) # default to bound it to 2 + upperBound = ops.get( 'max', 1 ) # default to bound it to 2 wrapValue = upperBound + 1 - - name=ops.get('prefix','_')+func.__name__ # property name - fget = lambda self: getattr(self,name) % upperBound - fset = lambda self,value: setattr(self,name, (value % wrapValue)) - fdel = lambda self: delattr(self,value) - return property (fget, fset, fdel, ops.get('doc','') ) + + name = ops.get( 'prefix', '_' ) + func.__name__ # property name + fget = lambda self: getattr( self, name ) % upperBound + fset = lambda self, value: setattr( self, name, ( value % wrapValue ) ) + fdel = lambda self: delattr( self, name ) + return property ( fget, fset, fdel, ops.get( 'doc', '' ) ) -def uint32(func): - max = 2**32 +def uint32( func ): + max = 2 ** 32 ops = func() or {} - name=ops.get('prefix','_')+func.__name__ # property name - fget = lambda self: getattr(self,name) - fset = lambda self,value: setattr(self, name, (value % max)) - fdel = lambda self: delattr(self,value) - return property (fget, fset, fdel, func.__doc__) + name = ops.get( 'prefix', '_' ) + func.__name__ # property name + fget = lambda self: getattr( self, name ) + fset = lambda self, value: setattr( self, name, ( value % max ) ) + fdel = lambda self: delattr( self, name ) + return property ( fget, fset, fdel, func.__doc__ ) -def uint16(func): - max = 2**16 +def uint16( func ): + max = 2 ** 16 ops = func() or {} - name=ops.get('prefix','_')+func.__name__ # property name - fget = lambda self: getattr(self,name) - fset = lambda self,value: setattr(self, name, (value % max)) - fdel = lambda self: delattr(self,value) - return property (fget, fset, fdel, func.__doc__) + name = ops.get( 'prefix', '_' ) + func.__name__ # property name + fget = lambda self: getattr( self, name ) + fset = lambda self, value: setattr( self, name, ( value % max ) ) + fdel = lambda self: delattr( self, name ) + return property ( fget, fset, fdel, func.__doc__ ) +def synchronized( lock ): + """ Synchronization decorator. """ -def uint(limit=2**32): - ''' - >>> from pcsextension.decorators import * - >>> lim = 5 - >>> class A(object): - ... @uint(lim) - ... def x(): pass - ... _x = 0 - ... - _x - 5 - >>> a = A() - >>> l = [] - >>> for i in range(0,lim*2): - ... a.x = i - ... l += [a.x] - ... - >>> print l - [0, 1, 2, 3, 4, 0, 1, 2, 3, 4] - ''' - def unsignedInteger(func): - ops = func() or {} - name=ops.get('prefix','_')+func.__name__ # property name - - print name - print max - - fget = lambda self: getattr(self,name) - fset = lambda self,value: setattr(self, name, (value % max)) - fdel = lambda self: delattr(self, value) - return property(fget, fset, fdel) - return unsignedInteger+ def wrap( f ): + def newFunction( *args, **kw ): + lock.acquire() + try: + return f( *args, **kw ) + finally: + lock.release() + return newFunction + return wrap ==== //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcsextension/field.py#3 (text+ko) ==== @@ -20,13 +20,13 @@ def __init__( self, default = 0, width = 8, networkByteOrder = False ): self.width = width self.networkByteOrder = networkByteOrder - + if isinstance( default, int ): self.setInteger( default ) if isinstance( default, str ): self.setAscii( default ) - if isinstance( default, Field): - self.setNetworkBytes(default.getNetworkBytes()) + if isinstance( default, Field ): + self.setNetworkBytes( default.getNetworkBytes() ) def setAscii( self, x ): ''' @@ -148,4 +148,4 @@ elif self.width == 8: if ( self.width == 8 and len( self.getBytes() ) > self.width * 8 ) or \ ( self.getInteger() > ( ( 2 ** self.width ) - 1 ) ): - raise Exception, "Value exceeds bit-width %i" % self.width+ raise Exception, "Value exceeds bit-width %i" % self.width ==== //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcsextension/ipAddress.py#6 (text+ko) ==== @@ -4,13 +4,12 @@ @author: zach ''' -from socket import inet_ntoa, inet_aton, htons, ntohs, htonl, ntohl, inet_pton, inet_ntop from struct import pack, unpack from field import Field -from socket import IPPROTO_IP, IPPROTO_IPV6, AF_INET, AF_INET6, htonl, ntohl +from socket import IPPROTO_IP, IPPROTO_IPV6, AF_INET, AF_INET6, inet_ntoa, inet_aton, htons, ntohs, htonl, ntohl, inet_pton, inet_ntop class IpAddress( Field ): - ''' + ''' Stores an IP address, and provides helper methods to retrieve the IP address. Unless specified, all byte orders are host-byte-order. ''' @@ -20,11 +19,11 @@ def __init__( self, default = 0, width = None, networkByteOrder = False, version = AF_INET ): self.version = version Field.__init__( self, width = width, default = default, networkByteOrder = networkByteOrder ) - + # Override the default Field.__init__ behavior. If the string's length is 4, it is obviously # a byte-string as opposed to an IP address. - if type(default) == str: - if len(default) == 4: + if type( default ) == str: + if len( default ) == 4: self.nbo = default def setAscii( self, x ): @@ -52,7 +51,7 @@ return unpack( "!L", self.nbo )[0] def setNetworkInteger( self, x ): - self.nbo = pack( "!L", ntohl( x ) ) + self.nbo = pack( "!L", ntohl( x ) ) def getNetworkInteger( self ): return htonl( unpack( "!L", self.nbo )[0] ) ==== //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcsextension/networkPort.py#5 (text+ko) ==== @@ -51,10 +51,10 @@ self.ho = ntohs( x ) def getNetworkInteger( self ): - print "%s %s" % (type(self.ho), self.ho) + print "%s %s" % ( type( self.ho ), self.ho ) return htons( self.ho ) - - def getPCS(self): + + def getPCS( self ): return self.getInteger() def __eq__( self, x ): ==== //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/tcpstatemachine.py#9 (text+ko) ==== @@ -8,7 +8,7 @@ from pcs.packets import tcp, payload from pcsextension import findTcpLayer from pcsextension.checksum import tcpChecksum -from pcsextension.decorators import prop, validateTypes, uint16, uint32 +from pcsextension.decorators import prop, validateTypes, uint16, uint32, synchronized from pcsextension.hwAddress import HwAddress from pcsextension.ipAddress import IpAddress from pcsextension.networkPort import NetworkPort @@ -17,10 +17,11 @@ from tcpConstructor import tcpConstructor from tcpFilter import tcpFilter from tcprecvdaemon import TcpRecvDaemon -from tcpsenddaemon import TcpSendDaemon -from tcpstates import CLOSE_WAIT,CLOSED,CLOSING,ESTABLISHED,FIN_WAIT_1,FIN_WAIT_2, \ +from tcpsenddaemon import TcpSendDaemon +from tcpstates import CLOSE_WAIT, CLOSED, CLOSING, ESTABLISHED, FIN_WAIT_1, FIN_WAIT_2, \ LAST_ACK, LISTEN, SYN_RECEIVED, SYN_SENT, TIME_WAIT, TcpState, synchronizedStates, tcpStates from time import time +from threading import RLock import pcap import pcs import testconfig @@ -119,22 +120,23 @@ __connector = tcpFilter( testconfig.interface ) __recvThread = None __sendThread = None + lock = RLock() # @uint32 @prop - def snd_nxt(): + def snd_nxt(): ''' Next sequence to be sent (SND.NXT). This is automatically calculated based on the next-available index in outboundSequences. However, if the value is set directly, it is overridden. Set it to None to re-enable auto-calculation - ''' + ''' return {'fget': lambda self: self._snd_nxt or self.outboundSequences.nextIndex } - + _snd_nxt = None # Define snd_nxt to allow it to be overridden - + @prop - def snd_una(): + def snd_una(): ''' First (i.e. oldest) unacknowledged sequence (SND.UNA). This is automatically calculated based on the first index in outboundSequences. @@ -142,32 +144,32 @@ remove any information from the retransmit queue with a lower SEQ #. ''' return {'fget': lambda self: self.outboundSequences.base, - 'fset': lambda self, x: self.outboundSequences.setBase(x) } + 'fset': lambda self, x: self.outboundSequences.setBase( x ) } # _snd_una = # Not necessary... - + @uint16 def snd_wnd(): ''' Send window size (SND.WND) ''' _snd_wnd = 0 - + @uint16 def snd_up(): ''' Send urgent pointer ''' _snd_up = 0 - + @uint32 - def snd_wl1(): ''' Sequence number used for last window update. ''' + def snd_wl1(): ''' Sequence number used for last window update. ''' _snd_wl1 = 0 - + @uint32 def snd_wl2(): ''' Ack number used for last window update ''' _snd_wl2 = 0 - + @prop def iss(): ''' Initial Send Sequence (ISS) ''' - return {'fset': lambda self, x: self.setISS(x) } + return {'fset': lambda self, x: self.setISS( x ) } _iss = 0 - - def setISS(self, iss): + + def setISS( self, iss ): ''' Sets the ISS, and also updates the outboundSequences base to reflect the new ISS. Any information in outboundSequences is deleted. @@ -177,31 +179,32 @@ # self.outboundSequences.base = iss self.outboundSequences = [] self.outboundSequences.base = iss - + @uint16 def rcv_wnd(): ''' Receive Window (RCV.WND) ''' - _rcv_wnd = 2**16 - 1 - + _rcv_wnd = 2 ** 16 - 1 + @uint16 def rcv_up(): ''' Receive Urgent Pointer ''' _rcv_up = 0 - + @prop def irs(): ''' Initial Receive Sequence (IRS) ''' - return {'fset': lambda self,x: self.setIRS(x)} + return {'fset': lambda self, x: self.setIRS( x )} _irs = 0 - - def setIRS(self,irs): + + def setIRS( self, irs ): ''' @see setISS ''' self._irs = irs self.inboundSequences.base = irs + self.inboundSequences = [] del self.inboundSequences[:] # self.inboundSequences = segmentBuffer([], irs, self.inboundSequences.limit) # self.inboundSequences.base = irs - + # @uint32 # def rcv_nxt(): @prop @@ -219,14 +222,14 @@ msl = 2 * 60 # Maximum Segment Lifetime. Arbitrarily defined in the RFC to 2 minutes timeout = 2 * msl # Timeout - @prop - def processPacketsOnArrival(): + @prop + def processPacketsOnArrival(): ''' Flag used to start/stop the recv'er thread from processing additional packets. Default is True. ''' _processPacketsOnArrival = True - + @prop def autoResendUnackedSequences(): ''' @@ -260,26 +263,26 @@ @prop def remotePort(): '''Remote port.''' _remotePort = NetworkPort( default = testconfig.remotePort ) - + @prop def userTimer(): ''' User timeout timer ''' _userTimer = None - + @prop def timeWaitTimer(): ''' Time-wait timer ''' _timeWaitTimer = None - + # Interface is actually a shortcut to the connector's interface field, # which is itself a property. Setting a TcpStateMachine's interface will # effectively trigger the tcpFilter object to switch interfaces to the # specified interface. @prop - def interface(): + def interface(): '''Interface to use for sending/recving data''' return {'fget': lambda self: self.__connector.interface, - 'fset': lambda self,x: setattr(self.__connector,'interface',x)} + 'fset': lambda self, x: setattr( self.__connector, 'interface', x )} - def getConnector(self): + def getConnector( self ): ''' Retrieves the connector used to send and receive packets. Note: The name 'connector' is simply for consistency. The object that is @@ -292,20 +295,20 @@ Call with lb=True to omit the ethernet layer with a loopback layer in its place. This should be done when using lo0 instead of eth0, or the source and destination IP address are the same. - ''' + ''' self.__constructor.loopback = lb # Override the interface - if lb and (self.interface not in self.loopbackInterfaces): + if lb and ( self.interface not in self.loopbackInterfaces ): self.log.warn( 'Overriding interface to be %s' % self.loopbackInterfaces[0] ) - + devs = [dev[0] for dev in pcap.findalldevs()] - loInterface = (iface for iface in self.loopbackInterfaces if iface in devs) - - if len(loInterface) < 1: - self.log.error('cannot set loopback, could not identify any ' + loInterface = ( iface for iface in self.loopbackInterfaces if iface in devs ) + + if len( loInterface ) < 1: + self.log.error( 'cannot set loopback, could not identify any ' ' loopback interfaces in available interfaces (%s) out ' - ' of known loopback interfaces (%s)' % (devs, self.loopbackInterfaces)) + ' of known loopback interfaces (%s)' % ( devs, self.loopbackInterfaces ) ) else : # Select the first interface self.interface = loInterface[0] @@ -319,7 +322,7 @@ def mtu(): '''Maximum Tranmission Unit''' _mtu = testconfig.mtu - def isSynchronized(self): + def isSynchronized( self ): ''' Is the connection in a synchronized state? Return True if yes, otherwise False. @@ -360,12 +363,12 @@ #tcp.f_dport: True, 'transition': True } - def generateISS(self): + def generateISS( self ): ''' Generates a new Initial Sequence Number (ISS). ''' - return seq(random.randint(0,(1 << 32)-1)) - + return seq( random.randint( 0, ( 1 << 32 ) - 1 ) ) + # def _updateSegmentBuffer(self, newBuffer, oldBuffer): # # If it's the same object, just return it. # if newBuffer is oldBuffer: @@ -378,7 +381,7 @@ # # # If it is the correct type, but is just a new buffer, assign it. # return newBuffer - + @prop def outboundSequences(): ''' @@ -395,25 +398,25 @@ Note that this implementation does not gracefully deal with wrap, i.e. when the sequence number overflows 2**32. ''' - return {'fset': lambda self,x: self.outboundSequences.update(x) } + return {'fset': lambda self, x: self.outboundSequences.update( x ) } _outboundSequences = segmentBuffer() - + @prop def inboundSequences(): ''' List of all received sequences. This includes data recv'd from IRS onward. @see outboundSequences for more information. ''' - return {'fset': lambda self,x: self.inboundSequences.update(x) } + return { 'fset': lambda self, x: self.inboundSequences.update( x ) } _inboundSequences = segmentBuffer() - + @prop def retransmissionQ(): ''' Sent data that has not been acknowledged. ''' return {'fget': lambda self: self.outboundSequences[self.snd_una:]} - + @prop def recvBuffer(): ''' @@ -421,50 +424,17 @@ Note that this buffer will explicitly exclude all SYN and FIN sequences. @see inboundSequences ''' - return {'fget': - lambda self: + return {'fget': + lambda self: [octet for octet in self.inboundSequences[seq( self.recvBufferOffset + self.irs ):] \ - if type(octet) != sequenced or not (octet.syn or octet.ack) ] + if type( octet ) != sequenced or not ( octet.syn or octet.ack ) ] } - + @prop def recvBufferOffset(): return {'fget': lambda self: self.inboundSequences.base, - 'fset': lambda self, x: self.inboundSequences.setBase(x) } -# @uint32 -# def _recvBufferOffset(): -# ''' -# Offset to the 'read' pointer in recvBuffer. This offset is relative to IRS, -# which is the first item in inboundSequences -# ''' -# __recvBufferOffset = 0 - -# @prop -# def packetsSent(): -# return {'doc': 'List of all packets the have been sent.' } -# _packetsSent = [] -# -# @prop -# def packetsSentAcked(): -# return {'doc': 'List of all packets the have been sent, for which ' -# 'an ACKnowledgement message has not been received.'} -# _packetsSentAcked = [] -# -# @prop -# def packetsRecvd(): -# return {'doc': 'List of all packets the have been received, but have not been ACKnowledged. ' -# 'Upon receiving, a packet will be put into this buffer. If its sequence number is rcv_nxt, ' -# 'it is moved to packetsRecvdAcked, and rcv_next is updated.'} -# _packetsRecvd = [] -# _packetsRecvdOffset = 0 -# -# @prop -# def packetsRecvdAcked(): -# return {'doc': 'List of all packets the have been received, but have not ' -# 'been ACKnowledged.'} -# _packetsRecvdAcked = [] + 'fset': lambda self, x: self.inboundSequences.setBase( x ) } - @prop def state(): return {'fset': lambda self, x: self.setState( x ), @@ -493,14 +463,14 @@ connName = 'Connection naming not supported' recvWindow = str( self.rcv_wnd ) sendWindow = str( self.snd_wnd ) - state = str(self.state) - nbaAck = len(self.retransmissionQ) + state = str( self.state ) + nbaAck = len( self.retransmissionQ ) # TODO TODO TODO # This should be the number of octets that have been received, but have # not been accounted for in an 'ACK' message to the other side. # TODO TODO TODO - nbpRecpt = 0 - + nbpRecpt = 0 + # TODO TODO TODO # Urgent state is not currently supported, and will be added later as # tests call for its use. @@ -513,8 +483,8 @@ return ( localSocket, remoteSocket, connName, recvWindow, sendWindow, state, nbaAck, nbpRecpt, urgState, precedence, security, timeout ) - def __repr__(self): - + def __repr__( self ): + return self.__class__.__name__ + '( (%s,%s), (%s,%s) )' % \ ( self.localIP, self.localPort, self.remoteIP, self.remotePort ) @@ -555,38 +525,36 @@ # Is the state a valid state? if state in tcpStates: - # if ( not self.validate['transition'] ) or ( state in self.state.next ): - # if ( not validateTransition ) or ( state in self.state.next ): action = "Setting" if validateTransition: action = "Advancing" self.log.state( "%s state from %s to %s" % ( action, self.state, state ) ) - + if state not in self.state.next: self.log.state( "Performing non-valid state transition from %s to %s" % ( self._lastState, self.state ) ) - + self._lastState = self._state self._state = state - + # If we are transitioning OUT of closed state, start the threads. if self._lastState == CLOSED: self.__recvThread = TcpRecvDaemon( self ) self.__sendThread = TcpSendDaemon( self ) self.__recvThread.start() self.__sendThread.start() - + >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sun Aug 9 04:22:28 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9087E1065672; Sun, 9 Aug 2009 04:22:28 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 51EDC106564A for ; Sun, 9 Aug 2009 04:22:28 +0000 (UTC) (envelope-from zjriggl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 40A158FC0A for ; Sun, 9 Aug 2009 04:22:28 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n794MSpv035905 for ; Sun, 9 Aug 2009 04:22:28 GMT (envelope-from zjriggl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n794MScB035903 for perforce@freebsd.org; Sun, 9 Aug 2009 04:22:28 GMT (envelope-from zjriggl@FreeBSD.org) Date: Sun, 9 Aug 2009 04:22:28 GMT Message-Id: <200908090422.n794MScB035903@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zjriggl@FreeBSD.org using -f From: Zachariah Riggle To: Perforce Change Reviews Cc: Subject: PERFORCE change 167122 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 04:22:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=167122 Change 167122 by zjriggl@zjriggl_tcpregression on 2009/08/09 04:22:07 Addes some things I shouldn't have. Affected files ... .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/HEAD#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/config#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/description#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/applypatch-msg.sample#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/commit-msg.sample#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/post-commit.sample#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/post-receive.sample#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/post-update.sample#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/pre-applypatch.sample#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/pre-commit.sample#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/pre-rebase.sample#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/prepare-commit-msg.sample#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/hooks/update.sample#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/index#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/info/exclude#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/logs/HEAD#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/logs/refs/heads/master#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/logs/refs/remotes/origin/HEAD#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/objects/pack/pack-77f13729543285782c830a6a087aeb8ce3ad7c33.idx#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/objects/pack/pack-77f13729543285782c830a6a087aeb8ce3ad7c33.pack#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/packed-refs#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/refs/heads/master#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.git/refs/remotes/origin/HEAD#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.project#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/.pydevproject#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/CHANGES#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/LICENSE#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/Makefile#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/README#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/config.h#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/config.pkl#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/pcap.c#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/pcap.pyx#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/pcap.so#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/pcap_ex.c#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/pcap_ex.h#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/setup.py#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/test.pcap#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/test.py#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/testsniff.py#2 delete Differences ... From owner-p4-projects@FreeBSD.ORG Sun Aug 9 05:02:13 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 679351065673; Sun, 9 Aug 2009 05:02:13 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2917A1065672 for ; Sun, 9 Aug 2009 05:02:13 +0000 (UTC) (envelope-from zjriggl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 183758FC19 for ; Sun, 9 Aug 2009 05:02:13 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7952BGj048724 for ; Sun, 9 Aug 2009 05:02:11 GMT (envelope-from zjriggl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7952Bad048722 for perforce@freebsd.org; Sun, 9 Aug 2009 05:02:11 GMT (envelope-from zjriggl@FreeBSD.org) Date: Sun, 9 Aug 2009 05:02:11 GMT Message-Id: <200908090502.n7952Bad048722@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zjriggl@FreeBSD.org using -f From: Zachariah Riggle To: Perforce Change Reviews Cc: Subject: PERFORCE change 167124 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 05:02:14 -0000 http://perforce.freebsd.org/chv.cgi?CH=167124 Change 167124 by zjriggl@zjriggl_tcpregression on 2009/08/09 05:01:56 Think I finally fixed the PCAP stuff in Perforce. Affected files ... .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/CHANGES#3 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/LICENSE#3 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/Makefile#3 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/README#3 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/pcap.pyx#3 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/pcap_ex.c#3 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/pcap_ex.h#3 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/pcs/pcap/setup.py#3 add Differences ... From owner-p4-projects@FreeBSD.ORG Sun Aug 9 09:02:35 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 88A191065673; Sun, 9 Aug 2009 09:02:34 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0AF081065670 for ; Sun, 9 Aug 2009 09:02:34 +0000 (UTC) (envelope-from marinosi@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id E3FE48FC34 for ; Sun, 9 Aug 2009 09:02:33 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7992XXi079949 for ; Sun, 9 Aug 2009 09:02:33 GMT (envelope-from marinosi@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7992XoC079947 for perforce@freebsd.org; Sun, 9 Aug 2009 09:02:33 GMT (envelope-from marinosi@FreeBSD.org) Date: Sun, 9 Aug 2009 09:02:33 GMT Message-Id: <200908090902.n7992XoC079947@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marinosi@FreeBSD.org using -f From: Ilias Marinos To: Perforce Change Reviews Cc: Subject: PERFORCE change 167125 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 09:02:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=167125 Change 167125 by marinosi@marinosi_redrum on 2009/08/09 09:02:20 Several fixes , minor corrections following rwatson's directions. Affected files ... .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#14 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.h#12 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_syscalls.c#8 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_worker.c#6 edit Differences ... ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#14 (text) ==== @@ -284,7 +284,7 @@ SHUTDOWN_PRI_FIRST); /* Start audit worker thread. */ - audit_worker_init(as); + audit_worker_start(as); } /* Init the base slice */ @@ -299,12 +299,16 @@ * drain before returning, which could lead to lost records on shutdown. * * XXXRW: Presumably we need this to iterate over all slices? + * FIXED. */ void audit_shutdown(void *arg, int howto) { - audit_rotate_vnode(NULL, NULL); + /* + * Base slice is a temporary arg. + */ + audit_rotate_vnode(audit_base_slice, NULL, NULL); } /* @@ -720,7 +724,7 @@ */ /* Start audit worker thread. */ - audit_worker_init(as); + audit_worker_start(as); /* Create the special device node */ audit_slice_cdev_init(as); ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.h#12 (text+ko) ==== @@ -187,8 +187,8 @@ /* * Audit related functions prototypes. */ -void audit_rotate_vnode(struct ucred *cred, struct vnode *vp); -void audit_worker_init(void *arg); +void audit_rotate_vnode(struct audit_slice *as, struct ucred *cred, struct vnode *vp); +void audit_worker_start(struct audit_slice *as); void audit_slice_init(struct audit_slice *as, char *name); void audit_slice_create(char *name); int audit_slice_destroy(struct audit_slice *as); ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_syscalls.c#8 (text) ==== @@ -860,7 +860,7 @@ audit_base_slice->audit_suspended = 0; audit_suspended = audit_base_slice->audit_suspended; - audit_rotate_vnode(cred, vp); + audit_rotate_vnode(audit_base_slice, cred, vp); return (error); } ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_worker.c#6 (text) ==== @@ -80,12 +80,12 @@ * XXXRW: 'as' should be passed in as an explicit macro argument to avoid * side effect semantics. */ -#define AUDIT_WORKER_LOCK_INIT() sx_init(&(as->audit_worker_lock), \ +#define AUDIT_WORKER_LOCK_INIT(x) sx_init(&(x->audit_worker_lock), \ "audit_worker_lock"); -#define AUDIT_WORKER_LOCK_ASSERT() sx_assert(&(as->audit_worker_lock), \ +#define AUDIT_WORKER_LOCK_ASSERT(x) sx_assert(&(x->audit_worker_lock), \ SA_XLOCKED) -#define AUDIT_WORKER_LOCK() sx_xlock(&(as->audit_worker_lock)) -#define AUDIT_WORKER_UNLOCK() sx_xunlock(&(as->audit_worker_lock)) +#define AUDIT_WORKER_LOCK(x) sx_xlock(&(x->audit_worker_lock)) +#define AUDIT_WORKER_UNLOCK(x) sx_xunlock(&(x->audit_worker_lock)) /* * Write an audit record to a file, performed as the last stage after both @@ -108,7 +108,7 @@ struct vattr vattr; long temp; - AUDIT_WORKER_LOCK_ASSERT(); + AUDIT_WORKER_LOCK_ASSERT(as); if (as->audit_vp == NULL) return; @@ -188,7 +188,7 @@ */ if ((as->audit_fstat.af_filesz != 0) && (as->audit_file_rotate_wait == 0) && (vattr.va_size >= as->audit_fstat.af_filesz)) { - AUDIT_WORKER_LOCK_ASSERT(); + AUDIT_WORKER_LOCK_ASSERT(as); as->audit_file_rotate_wait = 1; (void)audit_send_trigger(AUDIT_TRIGGER_ROTATE_KERNEL); @@ -308,7 +308,7 @@ if (((ar->k_ar_commit & AR_COMMIT_USER) && (ar->k_ar_commit & AR_PRESELECT_USER_TRAIL)) || (ar->k_ar_commit & AR_PRESELECT_TRAIL)) { - AUDIT_WORKER_LOCK(); + AUDIT_WORKER_LOCK(as); locked = 1; } else locked = 0; @@ -319,7 +319,7 @@ */ if ((ar->k_ar_commit & AR_COMMIT_USER) && (ar->k_ar_commit & AR_PRESELECT_USER_TRAIL)) { - AUDIT_WORKER_LOCK_ASSERT(); + AUDIT_WORKER_LOCK_ASSERT(as); audit_record_write(as, ar->k_udata, ar->k_ulen); } @@ -358,7 +358,7 @@ } if (ar->k_ar_commit & AR_PRESELECT_TRAIL) { - AUDIT_WORKER_LOCK_ASSERT(); + AUDIT_WORKER_LOCK_ASSERT(as); audit_record_write(as, bsm->data, bsm->len); } @@ -370,7 +370,7 @@ kau_free(bsm); out: if (locked) - AUDIT_WORKER_UNLOCK(); + AUDIT_WORKER_UNLOCK(as); } /* @@ -447,14 +447,12 @@ * audit_base_slice in the future, as well. */ void -audit_rotate_vnode(struct ucred *cred, struct vnode *vp) +audit_rotate_vnode(struct audit_slice *as, struct ucred *cred, struct vnode *vp) { struct ucred *old_audit_cred; struct vnode *old_audit_vp; - struct audit_slice *as; int vfslocked; - as = audit_base_slice; KASSERT((cred != NULL && vp != NULL) || (cred == NULL && vp == NULL), ("audit_rotate_vnode: cred %p vp %p", cred, vp)); @@ -463,7 +461,7 @@ * Rotate the vnode/cred, and clear the rotate flag so that we will * send a rotate trigger if the new file fills. */ - AUDIT_WORKER_LOCK(); + AUDIT_WORKER_LOCK(as); old_audit_cred = as->audit_cred; old_audit_vp = as->audit_vp; as->audit_cred = cred; @@ -471,7 +469,7 @@ as->audit_file_rotate_wait = 0; as->audit_enabled = (as->audit_vp != NULL); audit_enabled = as->audit_enabled; - AUDIT_WORKER_UNLOCK(); + AUDIT_WORKER_UNLOCK(as); /* * If there was an old vnode/credential, close and free. @@ -488,16 +486,16 @@ /* * XXXRW: Can replace void *arg with a simple audit_slice pointer now. * Perhaps rename to audit_worker_start() and need an audit_worker_stop(). + * FIXED. */ void -audit_worker_init(void *arg) +audit_worker_start(struct audit_slice *as) { int error; - struct audit_slice *as = (struct audit_slice * ) arg; - AUDIT_WORKER_LOCK_INIT(); + AUDIT_WORKER_LOCK_INIT(as); error = kproc_create(audit_worker,(void *) as, &(as->audit_thread), RFHIGHPID, 0, as->as_name); if (error) - panic("audit_worker_init: kproc_create returned %d", error); + panic("audit_worker_start: kproc_create returned %d", error); } From owner-p4-projects@FreeBSD.ORG Sun Aug 9 09:20:54 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5CD631065673; Sun, 9 Aug 2009 09:20:54 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1D815106566B for ; Sun, 9 Aug 2009 09:20:54 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 0B9308FC22 for ; Sun, 9 Aug 2009 09:20:54 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n799KrVJ082304 for ; Sun, 9 Aug 2009 09:20:53 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n799Krlf082302 for perforce@freebsd.org; Sun, 9 Aug 2009 09:20:53 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Sun, 9 Aug 2009 09:20:53 GMT Message-Id: <200908090920.n799Krlf082302@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Cc: Subject: PERFORCE change 167126 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 09:20:55 -0000 http://perforce.freebsd.org/chv.cgi?CH=167126 Change 167126 by rwatson@rwatson_freebsd_capabilities on 2009/08/09 09:20:03 Fix merge of audit argument changes with local capability rights auditing. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/sys/security/audit/audit_private.h#10 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/sys/security/audit/audit_private.h#10 (text) ==== @@ -289,6 +289,7 @@ #define ARG_ENVV 0x0002000000000000ULL #define ARG_ATFD1 0x0004000000000000ULL #define ARG_ATFD2 0x0008000000000000ULL +#define ARG_RIGHTS 0x0010000000000000ULL #define ARG_NONE 0x0000000000000000ULL #define ARG_ALL 0xFFFFFFFFFFFFFFFFULL From owner-p4-projects@FreeBSD.ORG Sun Aug 9 12:00:51 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 265471065690; Sun, 9 Aug 2009 12:00:49 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AC2DC106568B for ; Sun, 9 Aug 2009 12:00:48 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 98F5A8FC16 for ; Sun, 9 Aug 2009 12:00:48 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79C0ms1095924 for ; Sun, 9 Aug 2009 12:00:48 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79C0mtV095922 for perforce@freebsd.org; Sun, 9 Aug 2009 12:00:48 GMT (envelope-from trasz@freebsd.org) Date: Sun, 9 Aug 2009 12:00:48 GMT Message-Id: <200908091200.n79C0mtV095922@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167128 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 12:00:53 -0000 http://perforce.freebsd.org/chv.cgi?CH=167128 Change 167128 by trasz@trasz_anger on 2009/08/09 12:00:44 Rewrite rule enforcement to behave as originally designed. The per-cpu trick, which I think is a crucial for acceptable performance, is still not there. Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#50 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#50 (text+ko) ==== @@ -112,8 +112,7 @@ static uma_zone_t hrl_rule_zone; static struct mtx hrl_lock; -static void hrl_compute_available(struct proc *p, int64_t (*availablep)[], - struct hrl_rule *(*rulesp)[]); +static void hrl_compute_available(struct proc *p, int64_t (*availablep)[]); static int hrl_rule_fully_specified(const struct hrl_rule *rule); static void hrl_rule_to_sbuf(struct sbuf *sb, const struct hrl_rule *rule); @@ -240,15 +239,95 @@ } /* + * Return the amount of resource that can be allocated by 'p' before + * hitting 'rule'. + */ +static int64_t +hrl_available_resource(const struct proc *p, const struct hrl_rule *rule) +{ + int resource; + int64_t available; + + mtx_assert(&hrl_lock, MA_OWNED); + + resource = rule->hr_resource; + switch (rule->hr_per) { + case HRL_SUBJECT_PROCESS: + available = rule->hr_amount - + p->p_usage.hu_resources[resource]; + break; + case HRL_SUBJECT_USER: + available = rule->hr_amount - + p->p_ucred->cr_ruidinfo->ui_usage.hu_resources[resource]; + break; + case HRL_SUBJECT_GROUP: + if (hrl_group_accounting) { + /* + * XXX + */ + available = INT64_MAX; + } + break; + case HRL_SUBJECT_LOGINCLASS: + /* + * XXX + */ + available = INT64_MAX; + break; + case HRL_SUBJECT_JAIL: + /* + * XXX + */ + available = INT64_MAX; + break; + default: + panic("hrl_compute_available: unknown per %d", + rule->hr_per); + } + + return (available); +} + +/* + * Return non-zero if allocating 'amount' by proc 'p' would exceed + * resource limit specified by 'rule'. + */ +static int +hrl_would_exceed(const struct proc *p, const struct hrl_rule *rule, + int64_t amount) +{ + int64_t available; + + mtx_assert(&hrl_lock, MA_OWNED); + + available = hrl_available_resource(p, rule); + if (available >= amount) + return (0); + + /* + * We've already exceeded that one. + */ + if (available < 0) { +#ifdef notyet + KASSERT(rule->hr_action != HRL_ACTION_DENY, + ("hrl_would_exceed: deny rule already exceeded")); +#endif + return (0); + } + + return (1); +} + +/* * Check whether the proc 'p' can allocate 'amount' of 'resource' in addition - * to what it has allocated now. Returns fake error code if the allocation - * should fail. + * to what it keeps allocated now. Returns non-zero if the allocation should + * be denied, 0 otherwise. */ static int hrl_enforce_proc(struct proc *p, int resource, uint64_t amount) { int64_t available[HRL_RESOURCE_MAX]; - struct hrl_rule *rules[HRL_RESOURCE_MAX], *rule; + struct hrl_rule *rule; struct hrl_limit *limit; struct sbuf *sb; int should_deny = 0; @@ -258,7 +337,7 @@ /* * XXX: Do this just before we start running on a CPU, not all the time. */ - hrl_compute_available(p, &available, &rules); + hrl_compute_available(p, &available); if (available[resource] >= amount) return (0); @@ -267,6 +346,10 @@ * It seems we've hit a limit. Figure out what to do. There may * be more than one matching limit; go through all of them. Denial * should be done last, after logging and sending signals. + * + * Note that it is possible to get here, and still not trigger + * any limit, because some of the resource got freed on another + * CPU after computing contents of the 'available' array. */ /* * XXX: We should sort the rules somewhat, so that 'log' and 'sig' @@ -277,14 +360,9 @@ rule = limit->hl_rule; if (rule->hr_resource != resource) continue; - if (rule->hr_amount < available[resource]); - continue; - if (rule->hr_amount > available[resource] + amount); + if (!hrl_would_exceed(p, rule, amount)) continue; - /* - * This rule should apply to us. Behave accordingly. - */ switch (rule->hr_action) { case HRL_ACTION_DENY: should_deny = 1; @@ -334,36 +412,35 @@ } /* - * Go through all the rules applicable to the process, fill first array - * with amount of resource left before hitting next limit, and the second - * with pointers to the limit to be hit. + * Go through all the rules applicable to the process, filling the array + * with amount of resource left before hitting the next limit. */ static void -hrl_compute_available(struct proc *p, int64_t (*availablep)[], - struct hrl_rule *(*rulesp)[]) +hrl_compute_available(struct proc *p, int64_t (*availablep)[]) { int i, resource; int64_t available; struct hrl_limit *limit; + struct hrl_rule *rule; mtx_assert(&hrl_lock, MA_OWNED); - for (i = 0; i < HRL_RESOURCE_MAX; i++) { + for (i = 0; i < HRL_RESOURCE_MAX; i++) (*availablep)[i] = INT64_MAX; - (*rulesp)[i] = NULL; - } LIST_FOREACH(limit, &p->p_limits, hl_next) { - resource = limit->hl_rule->hr_resource; - available = limit->hl_rule->hr_amount - - p->p_usage.hu_resources[resource]; - /* Skip limits that have been already exceeded. */ - if (available < 0) + rule = limit->hl_rule; + resource = rule->hr_resource; + available = hrl_available_resource(p, rule); + if (available < 0) { +#ifdef notyet + KASSERT(rule->hr_action != HRL_ACTION_DENY, + ("hrl_compute_available: deny rule already exceeded")); +#endif continue; - if (available < (*availablep)[resource]) { + } + if (available < (*availablep)[resource]) (*availablep)[resource] = available; - (*rulesp)[resource] = limit->hl_rule; - } } } From owner-p4-projects@FreeBSD.ORG Sun Aug 9 12:30:21 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 859F71065673; Sun, 9 Aug 2009 12:30:21 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 438631065670 for ; Sun, 9 Aug 2009 12:30:21 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 327FA8FC08 for ; Sun, 9 Aug 2009 12:30:21 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79CULt0099063 for ; Sun, 9 Aug 2009 12:30:21 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79CUKf5099061 for perforce@freebsd.org; Sun, 9 Aug 2009 12:30:20 GMT (envelope-from trasz@freebsd.org) Date: Sun, 9 Aug 2009 12:30:20 GMT Message-Id: <200908091230.n79CUKf5099061@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167130 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 12:30:22 -0000 http://perforce.freebsd.org/chv.cgi?CH=167130 Change 167130 by trasz@trasz_anger on 2009/08/09 12:29:35 HRL allocation routines return fake error code; caller is expected to return proper one. Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/compat/linux/linux_misc.c#7 edit .. //depot/projects/soc2009/trasz_limits/sys/compat/svr4/imgact_svr4.c#3 edit .. //depot/projects/soc2009/trasz_limits/sys/fs/msdosfs/msdosfs_vnops.c#4 edit .. //depot/projects/soc2009/trasz_limits/sys/fs/nfsclient/nfs_clbio.c#9 edit .. //depot/projects/soc2009/trasz_limits/sys/fs/nwfs/nwfs_io.c#4 edit .. //depot/projects/soc2009/trasz_limits/sys/fs/smbfs/smbfs_io.c#5 edit .. //depot/projects/soc2009/trasz_limits/sys/fs/tmpfs/tmpfs_vnops.c#6 edit .. //depot/projects/soc2009/trasz_limits/sys/gnu/fs/ext2fs/ext2_readwrite.c#3 edit .. //depot/projects/soc2009/trasz_limits/sys/gnu/fs/xfs/FreeBSD/xfs_vnops.c#4 edit .. //depot/projects/soc2009/trasz_limits/sys/i386/linux/imgact_linux.c#3 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/imgact_aout.c#3 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/imgact_elf.c#3 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/imgact_gzip.c#3 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/init_main.c#10 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_fork.c#9 edit .. //depot/projects/soc2009/trasz_limits/sys/nfsclient/nfs_bio.c#10 edit .. //depot/projects/soc2009/trasz_limits/sys/ufs/ffs/ffs_vnops.c#4 edit .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_unix.c#3 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/compat/linux/linux_misc.c#7 (text+ko) ==== @@ -365,8 +365,10 @@ } error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_DATASIZE, a_out->a_data + bss_size); - if (error) + if (error) { + error = ENOMEM; goto cleanup; + } /* * Prevent more writers. @@ -453,8 +455,10 @@ /* allocate some 'anon' space */ error = vm_map_find(&td->td_proc->p_vmspace->vm_map, NULL, 0, &vmaddr, bss_size, FALSE, VM_PROT_ALL, VM_PROT_ALL, 0); - if (error) + if (error) { + error = ENOMEM; goto cleanup; + } } cleanup: ==== //depot/projects/soc2009/trasz_limits/sys/compat/svr4/imgact_svr4.c#3 (text+ko) ==== @@ -112,7 +112,7 @@ error = hrl_allocated_proc(imgp->proc, HRL_RESOURCE_DATASIZE, a_out->a_data + bss_size); if (error) - return (error); + return (ENOMEM); VOP_UNLOCK(imgp->vp, 0); ==== //depot/projects/soc2009/trasz_limits/sys/fs/msdosfs/msdosfs_vnops.c#4 (text+ko) ==== @@ -704,7 +704,7 @@ error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_FILESIZE, (uoff_t)uio->uio_offset + uio->uio_resid); if (error) - return (error); + return (EFBIG); } /* ==== //depot/projects/soc2009/trasz_limits/sys/fs/nfsclient/nfs_clbio.c#9 (text+ko) ==== @@ -1058,7 +1058,7 @@ error = hrl_allocated_proc(p, HRL_RESOURCE_FILESIZE, (uoff_t)uio->uio_offset + uio->uio_resid); if (error) - return (error); + return (EFBIG); } biosize = vp->v_mount->mnt_stat.f_iosize; ==== //depot/projects/soc2009/trasz_limits/sys/fs/nwfs/nwfs_io.c#4 (text+ko) ==== @@ -240,7 +240,7 @@ error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_FILESIZE, (uoff_t)uiop->uio_offset + uiop->uio_resid); if (error) - return (error); + return (EFBIG); } error = ncp_write(NWFSTOCONN(nmp), &np->n_fh, uiop, cred); NCPVNDEBUG("after: ofs=%d,resid=%d\n",(int)uiop->uio_offset, uiop->uio_resid); ==== //depot/projects/soc2009/trasz_limits/sys/fs/smbfs/smbfs_io.c#5 (text+ko) ==== @@ -282,7 +282,7 @@ error = hrl_allocated_proc(p, HRL_RESOURCE_FILESIZE, (uoff_t)uiop->uio_offset + uiop->uio_resid); if (error) - return (error); + return (EFBIG); } smb_makescred(&scred, td, cred); error = smb_write(smp->sm_share, np->n_fid, uiop, &scred); ==== //depot/projects/soc2009/trasz_limits/sys/fs/tmpfs/tmpfs_vnops.c#6 (text+ko) ==== @@ -662,7 +662,7 @@ error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_FILESIZE, (uoff_t)uio->uio_offset + uio->uio_resid); if (error) - return (error); + return (EFBIG); } extended = uio->uio_offset + uio->uio_resid > node->tn_size; ==== //depot/projects/soc2009/trasz_limits/sys/gnu/fs/ext2fs/ext2_readwrite.c#3 (text+ko) ==== @@ -213,7 +213,7 @@ error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_FILESIZE, (uoff_t)uio->uio_offset + uio->uio_resid); if (error) - return (error); + return (EFBIG); } resid = uio->uio_resid; ==== //depot/projects/soc2009/trasz_limits/sys/gnu/fs/xfs/FreeBSD/xfs_vnops.c#4 (text+ko) ==== @@ -603,7 +603,7 @@ error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_FILESIZE, (uoff_t)uio->uio_offset + uio->uio_resid); if (error) - return (error); + return (EFBIG); } #endif ==== //depot/projects/soc2009/trasz_limits/sys/i386/linux/imgact_linux.c#3 (text+ko) ==== @@ -110,7 +110,7 @@ error = hrl_allocated_proc(imgp->proc, HRL_RESOURCE_DATASIZE, a_out->a_data + bss_size); if (error) - return (error); + return (ENOMEM); VOP_UNLOCK(imgp->vp, 0); ==== //depot/projects/soc2009/trasz_limits/sys/kern/imgact_aout.c#3 (text+ko) ==== @@ -187,7 +187,7 @@ error = hrl_allocated_proc(imgp->proc, HRL_RESOURCE_DATASIZE, a_out->a_data + bss_size); if (error) - return (error); + return (ENOMEM); /* * Avoid a possible deadlock if the current address space is destroyed ==== //depot/projects/soc2009/trasz_limits/sys/kern/imgact_elf.c#3 (text+ko) ==== @@ -793,11 +793,11 @@ error = hrl_allocated_proc(imgp->proc, HRL_RESOURCE_DATASIZE, data_size); if (error) - return (error); + return (ENOMEM); error = hrl_allocated_proc(imgp->proc, HRL_RESOURCE_VMEMORYUSE, total_size); if (error) - return (error); + return (ENOMEM); PROC_LOCK(imgp->proc); vmspace->vm_tsize = text_size >> PAGE_SHIFT; ==== //depot/projects/soc2009/trasz_limits/sys/kern/imgact_gzip.c#3 (text+ko) ==== @@ -218,7 +218,7 @@ error = hrl_allocated_proc(gz->ip->proc, HRL_RESOURCE_DATASIZE, gz->a_out.a_data + gz->bss_size); if (error) - return (error); + return (ENOMEM); /* Find out how far we should go */ gz->file_end = gz->file_offset + gz->a_out.a_text + gz->a_out.a_data; ==== //depot/projects/soc2009/trasz_limits/sys/kern/init_main.c#10 (text+ko) ==== @@ -371,7 +371,7 @@ proc0_init(void *dummy __unused) { struct proc *p; - unsigned i; + unsigned i, error; struct thread *td; GIANT_REQUIRED; @@ -517,7 +517,8 @@ * Charge root for one process. */ (void)chgproccnt(p->p_ucred->cr_ruidinfo, 1, 0); - hrl_alloc(HRL_RESOURCE_MAXPROCESSES, 1); + error = hrl_alloc(HRL_RESOURCE_MAXPROCESSES, 1); + KASSERT(error == 0, ("hrl_alloc failed")); } SYSINIT(p0init, SI_SUB_INTRINSIC, SI_ORDER_FIRST, proc0_init, NULL); ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_fork.c#9 (text+ko) ==== ==== //depot/projects/soc2009/trasz_limits/sys/nfsclient/nfs_bio.c#10 (text+ko) ==== @@ -955,7 +955,7 @@ error = hrl_allocated_proc(p, HRL_RESOURCE_FILESIZE, (uoff_t)uio->uio_offset + uio->uio_resid); if (error) - return (error); + return (EFBIG); } biosize = vp->v_mount->mnt_stat.f_iosize; ==== //depot/projects/soc2009/trasz_limits/sys/ufs/ffs/ffs_vnops.c#4 (text+ko) ==== @@ -709,7 +709,7 @@ error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_FILESIZE, (uoff_t)uio->uio_offset + uio->uio_resid); if (error) - return (error); + return (EFBIG); } resid = uio->uio_resid; ==== //depot/projects/soc2009/trasz_limits/sys/vm/vm_unix.c#3 (text+ko) ==== @@ -87,8 +87,10 @@ if (new > base) { error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_DATASIZE, new - base); - if (error) + if (error) { + error = ENOMEM; goto done; + } if (new > vm_map_max(&vm->vm_map)) { error = ENOMEM; goto done; @@ -105,8 +107,10 @@ if (new > old) { error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_VMEMORYUSE, vm->vm_map.size + (new - old)); - if (error) + if (error) { + error = ENOMEM; goto done; + } rv = vm_map_insert(&vm->vm_map, NULL, 0, old, new, VM_PROT_RW, VM_PROT_ALL, 0); if (rv != KERN_SUCCESS) { From owner-p4-projects@FreeBSD.ORG Sun Aug 9 14:47:52 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D5F13106566B; Sun, 9 Aug 2009 14:47:51 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 93C211065670 for ; Sun, 9 Aug 2009 14:47:51 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 834678FC15 for ; Sun, 9 Aug 2009 14:47:51 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79ElpGc021242 for ; Sun, 9 Aug 2009 14:47:51 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79ElpAF021240 for perforce@freebsd.org; Sun, 9 Aug 2009 14:47:51 GMT (envelope-from mav@freebsd.org) Date: Sun, 9 Aug 2009 14:47:51 GMT Message-Id: <200908091447.n79ElpAF021240@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 167133 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 14:47:52 -0000 http://perforce.freebsd.org/chv.cgi?CH=167133 Change 167133 by mav@mav_mavbook on 2009/08/09 14:47:10 Remove some more request->dev references. Now only setmode and CHS related stuff use it in controller drivers code. Affected files ... .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-all.h#17 edit .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-lowlevel.c#12 edit .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-queue.c#17 edit .. //depot/projects/scottl-camlock/src/sys/dev/ata/chipsets/ata-siliconimage.c#7 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/dev/ata/ata-all.h#17 (text+ko) ==== @@ -389,6 +389,9 @@ #define ATA_R_THREAD 0x00000800 #define ATA_R_DIRECT 0x00001000 +#define ATA_R_ATAPI16 0x00010000 +#define ATA_R_ATAPI_INTR 0x00020000 + #define ATA_R_DEBUG 0x10000000 #define ATA_R_DANGER1 0x20000000 #define ATA_R_DANGER2 0x40000000 @@ -416,7 +419,7 @@ #define ATA_DEBUG_RQ(request, string) \ { \ if (request->flags & ATA_R_DEBUG) \ - device_printf(request->dev, "req=%p %s " string "\n", \ + device_printf(request->parent, "req=%p %s " string "\n", \ request, ata_cmd2str(request)); \ } #else ==== //depot/projects/scottl-camlock/src/sys/dev/ata/ata-lowlevel.c#12 (text+ko) ==== @@ -228,7 +228,6 @@ ata_end_transaction(struct ata_request *request) { struct ata_channel *ch = device_get_softc(request->parent); - struct ata_device *atadev = device_get_softc(request->dev); int length; ATA_DEBUG_RQ(request, "end transaction"); @@ -351,8 +350,7 @@ goto end_finished; } ATA_IDX_OUTSW_STRM(ch, ATA_DATA, (int16_t *)request->u.atapi.ccb, - (atadev->param.config & - ATA_PROTO_MASK)== ATA_PROTO_ATAPI_12 ? 6 : 8); + (request->flags & ATA_R_ATAPI16) ? 8 : 6); /* return wait for interrupt */ goto end_continue; @@ -656,7 +654,6 @@ ata_generic_command(struct ata_request *request) { struct ata_channel *ch = device_get_softc(request->parent); - struct ata_device *atadev = device_get_softc(request->dev); /* select device */ ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_D_LBA | ATA_DEV(request->unit)); @@ -687,7 +684,7 @@ ATA_IDX_OUTB(ch, ATA_COMMAND, ATA_PACKET_CMD); /* command interrupt device ? just return and wait for interrupt */ - if ((atadev->param.config & ATA_DRQ_MASK) == ATA_DRQ_INTR) + if (request->flags & ATA_R_ATAPI_INTR) return 0; /* wait for ready to write ATAPI command block */ @@ -711,8 +708,7 @@ /* output command block */ ATA_IDX_OUTSW_STRM(ch, ATA_DATA, (int16_t *)request->u.atapi.ccb, - (atadev->param.config & ATA_PROTO_MASK) == - ATA_PROTO_ATAPI_12 ? 6 : 8); + (request->flags & ATA_R_ATAPI16) ? 8 : 6); } else { ch->hw.tf_write(request); ==== //depot/projects/scottl-camlock/src/sys/dev/ata/ata-queue.c#17 (text+ko) ==== @@ -57,7 +57,12 @@ /* treat request as virgin (this might be an ATA_R_REQUEUE) */ request->result = request->status = request->error = 0; + /* Prepare paramers required by low-level code. */ request->unit = atadev->unit; + if ((atadev->param.config & ATA_PROTO_MASK) == ATA_PROTO_ATAPI_16) + request->flags |= ATA_R_ATAPI16; + if ((atadev->param.config & ATA_DRQ_MASK) == ATA_DRQ_INTR) + request->flags |= ATA_R_ATAPI_INTR; /* check that the device is still valid */ if (!(request->parent = device_get_parent(request->dev))) { request->result = ENXIO; ==== //depot/projects/scottl-camlock/src/sys/dev/ata/chipsets/ata-siliconimage.c#7 (text+ko) ==== @@ -571,13 +571,11 @@ /* setup transfer type */ if (request->flags & ATA_R_ATAPI) { - struct ata_device *atadev = device_get_softc(request->dev); - bcopy(request->u.atapi.ccb, prb->u.atapi.ccb, 16); - if ((atadev->param.config & ATA_PROTO_MASK) == ATA_PROTO_ATAPI_12) + if (request->flags & ATA_R_ATAPI16) + ATA_OUTL(ctlr->r_res2, 0x1000 + offset, 0x00000020); + else ATA_OUTL(ctlr->r_res2, 0x1004 + offset, 0x00000020); - else - ATA_OUTL(ctlr->r_res2, 0x1000 + offset, 0x00000020); if (request->flags & ATA_R_READ) prb->control = htole16(0x0010); if (request->flags & ATA_R_WRITE) From owner-p4-projects@FreeBSD.ORG Sun Aug 9 15:17:24 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 30B8A1065670; Sun, 9 Aug 2009 15:17:24 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DD121106564A for ; Sun, 9 Aug 2009 15:17:23 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id CBEFD8FC1A for ; Sun, 9 Aug 2009 15:17:23 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79FHNIQ024291 for ; Sun, 9 Aug 2009 15:17:23 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79FHN3Q024289 for perforce@freebsd.org; Sun, 9 Aug 2009 15:17:23 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Sun, 9 Aug 2009 15:17:23 GMT Message-Id: <200908091517.n79FHN3Q024289@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Cc: Subject: PERFORCE change 167134 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 15:17:25 -0000 http://perforce.freebsd.org/chv.cgi?CH=167134 Change 167134 by rwatson@rwatson_freebsd_capabilities on 2009/08/09 15:17:07 Remove mismerge for auditing of fd arguments in fexecve(2). Affected files ... .. //depot/projects/trustedbsd/capabilities/src/sys/kern/kern_exec.c#20 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/sys/kern/kern_exec.c#20 (text+ko) ==== @@ -428,7 +428,6 @@ } else { AUDIT_ARG_FD(args->fd); /* XXXRW: Possibly should just be CAP_FEXECVE? */ - AUDIT_ARG(fd, args->fd); error = fgetvp_read(td, args->fd, CAP_READ | CAP_FEXECVE, &binvp); if (error) From owner-p4-projects@FreeBSD.ORG Sun Aug 9 15:22:30 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 37A301065674; Sun, 9 Aug 2009 15:22:30 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D322A1065672 for ; Sun, 9 Aug 2009 15:22:29 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B83E28FC28 for ; Sun, 9 Aug 2009 15:22:29 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79FMTSU024677 for ; Sun, 9 Aug 2009 15:22:29 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79FMTRu024675 for perforce@freebsd.org; Sun, 9 Aug 2009 15:22:29 GMT (envelope-from syl@FreeBSD.org) Date: Sun, 9 Aug 2009 15:22:29 GMT Message-Id: <200908091522.n79FMTRu024675@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 167135 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 15:22:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=167135 Change 167135 by syl@syl_twoflowers on 2009/08/09 15:21:38 Modify flags order to allow softc aggregation. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/at91dci.h#4 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/atmegadci.h#4 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/avr32dci.h#3 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/ehci.h#4 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/musb_otg.h#4 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/ohci.h#4 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.h#13 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/uhci.h#4 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/uss820dci.h#4 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_roothub_exec.c#3 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/at91dci.h#4 (text+ko) ==== ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/atmegadci.h#4 (text+ko) ==== ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/avr32dci.h#3 (text+ko) ==== ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/ehci.h#4 (text+ko) ==== ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/musb_otg.h#4 (text+ko) ==== @@ -352,13 +352,13 @@ uint8_t status_suspend:1; /* set if suspended */ uint8_t status_vbus:1; /* set if present */ uint8_t status_bus_reset:1; /* set if reset complete */ - uint8_t status_high_speed:1; /* set if High Speed is selected */ uint8_t remote_wakeup:1; uint8_t self_powered:1; uint8_t clocks_off:1; uint8_t port_powered:1; uint8_t port_enabled:1; uint8_t d_pulled_up:1; + uint8_t status_high_speed:1; /* set if High Speed is selected */ }; struct musbotg_softc { ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/ohci.h#4 (text+ko) ==== ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.h#13 (text+ko) ==== ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/uhci.h#4 (text+ko) ==== ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/uss820dci.h#4 (text+ko) ==== @@ -317,6 +317,7 @@ uint8_t status_suspend:1; /* set if suspended */ uint8_t status_vbus:1; /* set if present */ uint8_t status_bus_reset:1; /* set if reset complete */ + uint8_t dummy_entry:1; uint8_t clocks_off:1; uint8_t port_powered:1; uint8_t port_enabled:1; ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_roothub_exec.c#3 (text+ko) ==== @@ -61,7 +61,17 @@ #include struct usb_generic_flags { - + uint8_t change_connect:1; + uint8_t change_suspend:1; + uint8_t status_suspend:1; + uint8_t status_vbus:1; + uint8_t status_bus_reset:1; + uint8_t remote_wakeup:1; + uint8_t self_powered:1; + uint8_t clocks_off:1; + uint8_t port_powered:1; + uint8_t port_enabled:1; + uint8_t d_pulled_up:1; }; struct usb_generic_hub_temp { @@ -80,7 +90,7 @@ }; static usb_error_t -genric_roothub_exec(struct usb_device *udev, +genric_roothub_exec(struct usb_device *udev, struct usb_generic_softc *sc, struct usb_device_request *req, const void **pptr, uint16_t *plength) { const void *ptr; @@ -88,4 +98,5 @@ uint16_t value; uint16_t index; usb_error_t err; + } From owner-p4-projects@FreeBSD.ORG Sun Aug 9 15:48:59 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 21F631065674; Sun, 9 Aug 2009 15:48:59 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B03FB1065672 for ; Sun, 9 Aug 2009 15:48:58 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 9EB658FC16 for ; Sun, 9 Aug 2009 15:48:58 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79Fmw8M026526 for ; Sun, 9 Aug 2009 15:48:58 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79Fmwam026524 for perforce@freebsd.org; Sun, 9 Aug 2009 15:48:58 GMT (envelope-from syl@FreeBSD.org) Date: Sun, 9 Aug 2009 15:48:58 GMT Message-Id: <200908091548.n79Fmwam026524@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 167136 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 15:49:00 -0000 http://perforce.freebsd.org/chv.cgi?CH=167136 Change 167136 by syl@syl_twoflowers on 2009/08/09 15:48:56 Implement the generic_roothub_exec demultiplex. Implement stalled and nop answers. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_roothub_exec.c#4 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_roothub_exec.c#4 (text+ko) ==== @@ -99,4 +99,184 @@ uint16_t index; usb_error_t err; + USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); + + /* buffer reset */ + ptr = (const void*)&sc->sc_hub_temp; + len = 0; + err = 0; + + value = UGETW(req->wValue); + index = UGETW(req->wIndex); + + /* demultiplex the control request */ + switch (req->bmRequestType) { + case UT_READ_DEVICE: + switch (req->bRequest) { + case UR_GET_DESCRIPTOR: + /* handle_get_descriptor */ + case UR_GET_CONFIG: + /* handle_get_config */ + case UR_GET_STATUS: + /* handle_get_status */ + default: + err = USB_ERR_STALLED; + break; + } + break; + + case UT_WRITE_DEVICE: + switch (req->bRequest) { + case UR_SET_ADDRESS: + /* handle_set_address */ + case UR_SET_CONFIG: + /* handle_set_config */ + case UR_CLEAR_FEATURE: + break; + case UR_SET_DESCRIPTOR: + break; + case UR_SET_FEATURE: + default: + err = USB_ERR_STALLED; + break; + } + break; + + case UT_WRITE_ENDPOINT: + switch (req->bRequest) { + case UR_CLEAR_FEATURE: + switch (UGETW(req->wValue)) { + case UF_ENDPOINT_HALT: + /* handle_clear_halt */ + case UF_DEVICE_REMOTE_WAKEUP: + /* handle_clear_wakeup */ + default: + err = USB_ERR_STALLED; + break; + } + break; + case UR_SET_FEATURE: + switch (UGETW(req->wValue)) { + case UF_ENDPOINT_HALT: + /* handle_set_halt */ + case UF_DEVICE_REMOTE_WAKEUP: + /* handle_set_wakeup */ + default: + err = USB_ERR_STALLED; + break; + } + break; + case UR_SYNCH_FRAME: + break; + default: + err = USB_ERR_STALLED; + break; + } + break; + + case UT_READ_ENDPOINT: + switch (req->bRequest) { + case UR_GET_STATUS: + /* handle_get_ep_status */ + default: + err = USB_ERR_STALLED; + break; + } + break; + + case UT_WRITE_INTERFACE: + switch (req->bRequest) { + case UR_SET_INTERFACE: + /* handle_set_interface */ + case UR_CLEAR_FEATURE: + break; + case UR_SET_FEATURE: + default: + err = USB_ERR_STALLED; + break; + } + break; + + case UT_READ_INTERFACE: + switch (req->bRequest) { + case UR_GET_INTERFACE: + /* handle_get_interfac */ + case UR_GET_STATUS: + /* handle_get_iface_status */ + default: + err = USB_ERR_STALLED; + break; + } + break; + + case UT_WRITE_CLASS_INTERFACE: + case UT_WRITE_VENDOR_INTERFACE: + /* XXX forward */ + break; + + case UT_READ_CLASS_INTERFACE: + case UT_READ_VENDOR_INTERFACE: + /* XXX forward */ + break; + + case UT_WRITE_CLASS_DEVICE: + switch (req->bRequest) { + case UR_CLEAR_FEATURE: + break; + case UR_SET_DESCRIPTOR: + case UR_SET_FEATURE: + break; + default: + err = USB_ERR_STALLED; + break; + } + break; + + case UT_WRITE_CLASS_OTHER: + switch (req->bRequest) { + case UR_CLEAR_FEATURE: + /* handle_clear_port_feature */ + case UR_SET_FEATURE: + /* handle_set_port_feature */ + case UR_CLEAR_TT_BUFFER: + case UR_RESET_TT: + case UR_STOP_TT: + break; + default: + err = USB_ERR_STALLED; + break; + } + break; + + case UT_READ_CLASS_OTHER: + switch (req->bRequest) { + case UR_GET_TT_STATE: + /* handle_get_tt_state */ + case UR_GET_STATUS: + /* handle_get_port_status */ + default: + err = USB_ERR_STALLED; + break; + } + break; + + case UT_READ_CLASS_DEVICE: + switch (req->bRequest) { + case UR_GET_DESCRIPTOR: + /* handle_get_class_descriptor */ + case UR_GET_STATUS: + /* handle_get_class_status */ + + default: + err = USB_ERR_STALLED; + break ; + } + break; + default: + goto tr_stalled; + } + + *plength = len; + *pptr = ptr; + return (err); } From owner-p4-projects@FreeBSD.ORG Sun Aug 9 17:08:26 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E528410656B0; Sun, 9 Aug 2009 17:08:25 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A336C1065692 for ; Sun, 9 Aug 2009 17:08:25 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 9167B8FC16 for ; Sun, 9 Aug 2009 17:08:25 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79H8P9g044136 for ; Sun, 9 Aug 2009 17:08:25 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79H8PXV044134 for perforce@freebsd.org; Sun, 9 Aug 2009 17:08:25 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Sun, 9 Aug 2009 17:08:25 GMT Message-Id: <200908091708.n79H8PXV044134@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Cc: Subject: PERFORCE change 167138 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 17:08:27 -0000 http://perforce.freebsd.org/chv.cgi?CH=167138 Change 167138 by rwatson@rwatson_cinnamon on 2009/08/09 17:07:26 Continue fixing merge of new audit argument handling into trustedbsd_capabilities branch. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/sys/kern/kern_sig.c#8 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/sys/kern/kern_sig.c#8 (text+ko) ==== @@ -1717,15 +1717,15 @@ struct proc *p; int error; - AUDIT_ARG(signum, uap->signum); - AUDIT_ARG(fd, uap->fd); + AUDIT_ARG_SIGNUM(uap->signum); + AUDIT_ARG_FD(uap->fd); if ((u_int)uap->signum > _SIG_MAXSIG) return (EINVAL); error = procdesc_find(td, uap->fd, CAP_PDKILL, &p); if (error) return (error); - AUDIT_ARG(process, p); + AUDIT_ARG_PROCESS(p); error = p_cansignal(td, p, uap->signum); if (error == 0 && uap->signum) psignal(p, uap->signum); From owner-p4-projects@FreeBSD.ORG Sun Aug 9 18:40:06 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3FE511065679; Sun, 9 Aug 2009 18:40:06 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EF7671065672 for ; Sun, 9 Aug 2009 18:40:05 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id DD6158FC23 for ; Sun, 9 Aug 2009 18:40:05 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79Ie5W1081475 for ; Sun, 9 Aug 2009 18:40:05 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79Ie5mU081473 for perforce@freebsd.org; Sun, 9 Aug 2009 18:40:05 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Sun, 9 Aug 2009 18:40:05 GMT Message-Id: <200908091840.n79Ie5mU081473@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Cc: Subject: PERFORCE change 167139 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 18:40:07 -0000 http://perforce.freebsd.org/chv.cgi?CH=167139 Change 167139 by rwatson@rwatson_freebsd_capabilities on 2009/08/09 18:39:37 Update capabilities-related code to use revised in-kernel syscall argument auditing interfaces. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/sys/kern/sys_capability.c#26 edit .. //depot/projects/trustedbsd/capabilities/src/sys/kern/sys_procdesc.c#12 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/sys/kern/sys_capability.c#26 (text+ko) ==== @@ -50,7 +50,7 @@ #include "opt_capabilities.h" #include -__FBSDID("$P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/sys_capability.c#25 $"); +__FBSDID("$P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/sys_capability.c#26 $"); #include #include @@ -282,8 +282,8 @@ struct file *fp, *fp_cap, *fp_object; int error, fd_cap; - AUDIT_ARG(fd, uap->fd); - AUDIT_ARG(rights, uap->rights); + AUDIT_ARG_FD(uap->fd); + AUDIT_ARG_RIGHTS(uap->rights); if ((uap->rights | CAP_MASK_VALID) != CAP_MASK_VALID) return (EINVAL); @@ -298,7 +298,7 @@ if (error) goto fail; - AUDIT_ARG(file, td->td_proc, fp); + AUDIT_ARG_FILE(td->td_proc, fp); /* * If a new capability is being derived from an existing capability, @@ -367,7 +367,7 @@ struct file *fp; int error; - AUDIT_ARG(fd, uap->fd); + AUDIT_ARG_FD(uap->fd); error = fgetcap(td, uap->fd, &fp); if (error) return (error); ==== //depot/projects/trustedbsd/capabilities/src/sys/kern/sys_procdesc.c#12 (text+ko) ==== @@ -196,14 +196,14 @@ pid_t pid; int error; - AUDIT_ARG(fd, uap->fd); + AUDIT_ARG_FD(uap->fd); error = fget(td, uap->fd, CAP_PDGETPID, &fp); if (error) return (error); if (fp->f_type == DTYPE_PROCDESC) { pd = fp->f_data; pid = pd->pd_pid; - AUDIT_ARG(pid, pid); + AUDIT_ARG_PID(pid); } else error = EBADF; fdrop(fp, td); From owner-p4-projects@FreeBSD.ORG Sun Aug 9 21:39:22 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CB83D1065676; Sun, 9 Aug 2009 21:39:21 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8AF3F1065729 for ; Sun, 9 Aug 2009 21:39:21 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 7A7338FC16 for ; Sun, 9 Aug 2009 21:39:21 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79LdLR1007993 for ; Sun, 9 Aug 2009 21:39:21 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79LdLMu007991 for perforce@freebsd.org; Sun, 9 Aug 2009 21:39:21 GMT (envelope-from mav@freebsd.org) Date: Sun, 9 Aug 2009 21:39:21 GMT Message-Id: <200908092139.n79LdLMu007991@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 167141 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 21:39:22 -0000 http://perforce.freebsd.org/chv.cgi?CH=167141 Change 167141 by mav@mav_mavbook on 2009/08/09 21:38:55 ATA_SF_SETXFER has no data transfer. Affected files ... .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#32 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#32 (text+ko) ==== @@ -344,10 +344,10 @@ cam_fill_ataio(ataio, 1, probedone, - /*flags*/CAM_DIR_IN, + /*flags*/CAM_DIR_NONE, 0, - /*data_ptr*/(u_int8_t *)ident_buf, - /*dxfer_len*/sizeof(struct ata_params), + /*data_ptr*/NULL, + /*dxfer_len*/0, 30 * 1000); ata_36bit_cmd(ataio, ATA_SETFEATURES, ATA_SF_SETXFER, 0, ata_max_mode(ident_buf, ATA_UDMA6, ATA_UDMA6)); From owner-p4-projects@FreeBSD.ORG Sun Aug 9 21:41:24 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5DFE81065670; Sun, 9 Aug 2009 21:41:24 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1DB0E106566B for ; Sun, 9 Aug 2009 21:41:24 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 0D0608FC1E for ; Sun, 9 Aug 2009 21:41:24 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79LfNQ3008201 for ; Sun, 9 Aug 2009 21:41:23 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79LfNBk008199 for perforce@freebsd.org; Sun, 9 Aug 2009 21:41:23 GMT (envelope-from mav@freebsd.org) Date: Sun, 9 Aug 2009 21:41:23 GMT Message-Id: <200908092141.n79LfNBk008199@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 167142 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 21:41:26 -0000 http://perforce.freebsd.org/chv.cgi?CH=167142 Change 167142 by mav@mav_mavbook on 2009/08/09 21:40:48 Mark DMA commands with special flag. Affected files ... .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_all.c#14 edit .. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_all.h#14 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_all.c#14 (text+ko) ==== @@ -96,6 +96,11 @@ { bzero(&ataio->cmd, sizeof(ataio->cmd)); ataio->cmd.flags = 0; + if (cmd == ATA_READ_DMA || + cmd == ATA_READ_DMA_QUEUED || + cmd == ATA_WRITE_DMA || + cmd == ATA_WRITE_DMA_QUEUED) + ataio->cmd.flags |= CAM_ATAIO_DMA; ataio->cmd.command = cmd; ataio->cmd.features = features; ataio->cmd.lba_low = lba; @@ -111,6 +116,11 @@ { bzero(&ataio->cmd, sizeof(ataio->cmd)); ataio->cmd.flags = CAM_ATAIO_48BIT; + if (cmd == ATA_READ_DMA48 || + cmd == ATA_READ_DMA_QUEUED48 || + cmd == ATA_WRITE_DMA48 || + cmd == ATA_WRITE_DMA_QUEUED48) + ataio->cmd.flags |= CAM_ATAIO_DMA; ataio->cmd.command = cmd; ataio->cmd.features = features; ataio->cmd.lba_low = lba; ==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_all.h#14 (text+ko) ==== @@ -41,6 +41,7 @@ #define CAM_ATAIO_FPDMA 0x02 /* FPDMA command */ #define CAM_ATAIO_CONTROL 0x04 /* Control, not a command */ #define CAM_ATAIO_NEEDRESULT 0x08 /* Request requires result. */ +#define CAM_ATAIO_DMA 0x10 /* DMA command */ u_int8_t command; u_int8_t features; From owner-p4-projects@FreeBSD.ORG Sun Aug 9 21:49:33 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2A97E1065673; Sun, 9 Aug 2009 21:49:33 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DE555106566C for ; Sun, 9 Aug 2009 21:49:32 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id CC6E58FC1A for ; Sun, 9 Aug 2009 21:49:32 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79LnWhm008710 for ; Sun, 9 Aug 2009 21:49:32 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79LnWlR008708 for perforce@freebsd.org; Sun, 9 Aug 2009 21:49:32 GMT (envelope-from mav@freebsd.org) Date: Sun, 9 Aug 2009 21:49:32 GMT Message-Id: <200908092149.n79LnWlR008708@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 167143 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 21:49:34 -0000 http://perforce.freebsd.org/chv.cgi?CH=167143 Change 167143 by mav@mav_mavbook on 2009/08/09 21:49:27 Create initial wrapper turning ATA(4) controller drivers into CAM SIMs. New ATA_CAM kernel option controls it. Affected files ... .. //depot/projects/scottl-camlock/src/sys/conf/options#29 edit .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-all.c#21 edit .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-all.h#18 edit .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-lowlevel.c#13 edit .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-queue.c#18 edit .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-sata.c#6 edit .. //depot/projects/scottl-camlock/src/sys/dev/ata/chipsets/ata-intel.c#8 edit .. //depot/projects/scottl-camlock/src/sys/dev/ata/chipsets/ata-marvell.c#7 edit .. //depot/projects/scottl-camlock/src/sys/dev/ata/chipsets/ata-serverworks.c#6 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/conf/options#29 (text+ko) ==== @@ -350,6 +350,7 @@ # Options used in the 'ata' ATA/ATAPI driver ATA_STATIC_ID opt_ata.h ATA_NOPCI opt_ata.h +ATA_CAM opt_ata.h # Net stuff. ACCEPT_FILTER_DATA ==== //depot/projects/scottl-camlock/src/sys/dev/ata/ata-all.c#21 (text+ko) ==== @@ -50,6 +50,15 @@ #include #include +#ifdef ATA_CAM +#include +#include +#include +#include +#include +#include +#endif + /* device structure */ static d_ioctl_t ata_ioctl; static struct cdevsw ata_cdevsw = { @@ -59,7 +68,12 @@ }; /* prototypes */ +#ifndef ATA_CAM static void ata_boot_attach(void); +#else +static void ataaction(struct cam_sim *sim, union ccb *ccb); +static void atapoll(struct cam_sim *sim); +#endif static device_t ata_add_child(device_t, struct ata_device *, int); static void ata_conn_event(void *, int); static void bswap(int8_t *, int); @@ -114,6 +128,9 @@ { struct ata_channel *ch = device_get_softc(dev); int error, rid; +#ifdef ATA_CAM + struct cam_devq *devq; +#endif /* check that we have a virgin channel to attach */ if (ch->r_irq) @@ -153,18 +170,61 @@ return error; } +#ifndef ATA_CAM /* probe and attach devices on this channel unless we are in early boot */ if (!ata_delayed_attach) ata_identify(dev); - return 0; + return (0); +#else + mtx_lock(&ch->state_mtx); + /* Create the device queue for our SIM. */ + devq = cam_simq_alloc(1); + if (devq == NULL) { + device_printf(dev, "Unable to allocate simq\n"); + error = ENOMEM; + goto err1; + } + /* Construct SIM entry */ + ch->sim = cam_sim_alloc(ataaction, atapoll, "ata", ch, + device_get_unit(dev), &ch->state_mtx, 1, 0, devq); + if (ch->sim == NULL) { + device_printf(dev, "unable to allocate sim\n"); + error = ENOMEM; + goto err2; + } + if (xpt_bus_register(ch->sim, dev, 0) != CAM_SUCCESS) { + device_printf(dev, "unable to register xpt bus\n"); + error = ENXIO; + goto err2; + } + if (xpt_create_path(&ch->path, /*periph*/NULL, cam_sim_path(ch->sim), + CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { + device_printf(dev, "unable to create path\n"); + error = ENXIO; + goto err3; + } + mtx_unlock(&ch->state_mtx); + return (0); + +err3: + xpt_bus_deregister(cam_sim_path(ch->sim)); +err2: + cam_sim_free(ch->sim, /*free_devq*/TRUE); +err1: + bus_release_resource(dev, SYS_RES_IRQ, ATA_IRQ_RID, ch->r_irq); + mtx_unlock(&ch->state_mtx); + return (error); +#endif } int ata_detach(device_t dev) { struct ata_channel *ch = device_get_softc(dev); +#ifndef ATA_CAM device_t *children; int nchildren, i; +#endif /* check that we have a valid channel to detach */ if (!ch->r_irq) @@ -175,6 +235,7 @@ ch->state |= ATA_STALL_QUEUE; mtx_unlock(&ch->state_mtx); +#ifndef ATA_CAM /* detach & delete all children */ if (!device_get_children(dev, &children, &nchildren)) { for (i = 0; i < nchildren; i++) @@ -182,8 +243,18 @@ device_delete_child(dev, children[i]); free(children, M_TEMP); } +#endif taskqueue_drain(taskqueue_thread, &ch->conntask); +#ifdef ATA_CAM + mtx_lock(&ch->state_mtx); + xpt_async(AC_LOST_DEVICE, ch->path, NULL); + xpt_free_path(ch->path); + xpt_bus_deregister(cam_sim_path(ch->sim)); + cam_sim_free(ch->sim, /*free_devq*/TRUE); + mtx_unlock(&ch->state_mtx); +#endif + /* release resources */ bus_teardown_intr(dev, ch->r_irq, ch->ih); bus_release_resource(dev, SYS_RES_IRQ, ATA_IRQ_RID, ch->r_irq); @@ -373,9 +444,14 @@ ch->running = NULL; if (ch->state == ATA_ACTIVE) ch->state = ATA_IDLE; +#ifdef ATA_CAM + ata_cam_end_transaction(ch->dev, request); +#endif mtx_unlock(&ch->state_mtx); +#ifndef ATA_CAM ATA_LOCKING(ch->dev, ATA_LF_UNLOCK); ata_finish(request); +#endif return; } } while (0); @@ -575,6 +651,7 @@ } } +#ifndef ATA_CAM static void ata_boot_attach(void) { @@ -598,8 +675,8 @@ } newbus_xunlock(); } +#endif - /* * misc support functions */ @@ -1088,7 +1165,241 @@ dst[j] = 0x00; } +#ifdef ATA_CAM +void +ata_cam_begin_transaction(device_t dev, union ccb *ccb) +{ + struct ata_channel *ch = device_get_softc(dev); + struct ata_request *request; + +//device_printf(dev, "%s\n", __func__); + if (!(request = ata_alloc_request())) { + device_printf(dev, "FAILURE - out of memory in start\n"); + ccb->ccb_h.status = CAM_REQ_INVALID; + xpt_done(ccb); + return; + } + bzero(request, sizeof(*request)); + /* setup request */ + request->dev = NULL; + request->parent = dev; + request->unit = ccb->ccb_h.target_id; + if (ccb->ccb_h.func_code == XPT_ATA_IO) { + request->data = ccb->ataio.data_ptr; + request->bytecount = ccb->ataio.dxfer_len; + } else { + request->data = ccb->csio.data_ptr; + request->bytecount = ccb->csio.dxfer_len; + } + if (ccb->ccb_h.func_code == XPT_ATA_IO) { + request->u.ata.command = ccb->ataio.cmd.command; + request->u.ata.feature = ((uint16_t)ccb->ataio.cmd.features_exp << 8) | + (uint16_t)ccb->ataio.cmd.features; + request->u.ata.count = ((uint16_t)ccb->ataio.cmd.sector_count_exp << 8) | + (uint16_t)ccb->ataio.cmd.sector_count; + request->u.ata.lba = ((uint64_t)ccb->ataio.cmd.lba_high_exp << 40) | + ((uint64_t)ccb->ataio.cmd.lba_mid_exp << 32) | + ((uint64_t)ccb->ataio.cmd.lba_low_exp << 24) | + ((uint64_t)ccb->ataio.cmd.lba_high << 16) | + ((uint64_t)ccb->ataio.cmd.lba_mid << 8) | + (uint64_t)ccb->ataio.cmd.lba_low; + if (ccb->ataio.cmd.flags & CAM_ATAIO_48BIT) + request->flags |= ATA_R_48BIT; + if (ccb->ataio.cmd.flags & CAM_ATAIO_DMA) + request->flags |= ATA_R_DMA; + if ((ccb->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) + request->flags |= ATA_R_READ; + if ((ccb->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_OUT) + request->flags |= ATA_R_WRITE; + } + request->transfersize = min(request->bytecount, 512); +// request->callback = ad_done; + request->retries = 0; + request->timeout = ccb->ccb_h.timeout / 1000; + callout_init_mtx(&request->callout, &ch->state_mtx, CALLOUT_RETURNUNLOCKED); + request->ccb = ccb; + + ch->running = request; + ch->state = ATA_ACTIVE; + if (ch->hw.begin_transaction(request) == ATA_OP_FINISHED) { +device_printf(dev, "XXX: EARLY FINISH!\n"); + ch->running = NULL; + ch->state = ATA_IDLE; + ata_cam_end_transaction(dev, request); + return; + } +} + +void +ata_cam_end_transaction(device_t dev, struct ata_request *request) +{ +// struct ata_channel *ch = device_get_softc(dev); + union ccb *ccb = request->ccb; + +//device_printf(dev, "%s\n", __func__); + ccb->ccb_h.status &= ~CAM_STATUS_MASK; + if (request->result == 0) + ccb->ccb_h.status |= CAM_REQ_CMP; + else + ccb->ccb_h.status |= CAM_REQ_CMP_ERR; + ata_free_request(request); + xpt_done(ccb); +} + +static void +ataaction(struct cam_sim *sim, union ccb *ccb) +{ + device_t dev; + struct ata_channel *ch; + + CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_TRACE, ("ataaction func_code=%x\n", + ccb->ccb_h.func_code)); + + ch = (struct ata_channel *)cam_sim_softc(sim); + dev = ch->dev; + switch (ccb->ccb_h.func_code) { + /* Common cases first */ + case XPT_ATA_IO: /* Execute the requested I/O operation */ + case XPT_SCSI_IO: + if ((ch->devices & ((ATA_ATA_MASTER | ATA_ATAPI_MASTER) + << ccb->ccb_h.target_id)) == 0) { + ccb->ccb_h.status = CAM_SEL_TIMEOUT; + xpt_done(ccb); + break; + } + if (ccb->ccb_h.func_code == XPT_ATA_IO && + (ccb->ataio.cmd.flags & CAM_ATAIO_CONTROL) && + (ccb->ataio.cmd.control & ATA_A_RESET)) { + struct ata_res *res = &ccb->ataio.res; + + bzero(res, sizeof(*res)); + if (ch->devices & (ATA_ATA_MASTER << ccb->ccb_h.target_id)) { + res->lba_high = 0; + res->lba_mid = 0; + } else { + res->lba_high = 0xeb; + res->lba_mid = 0x14; + } + ccb->ccb_h.status = CAM_REQ_CMP; + xpt_done(ccb); + break; + } + ata_cam_begin_transaction(dev, ccb); + break; + case XPT_EN_LUN: /* Enable LUN as a target */ + case XPT_TARGET_IO: /* Execute target I/O request */ + case XPT_ACCEPT_TARGET_IO: /* Accept Host Target Mode CDB */ + case XPT_CONT_TARGET_IO: /* Continue Host Target I/O Connection*/ + case XPT_ABORT: /* Abort the specified CCB */ + /* XXX Implement */ + ccb->ccb_h.status = CAM_REQ_INVALID; + xpt_done(ccb); + break; + case XPT_SET_TRAN_SETTINGS: + { + ccb->ccb_h.status = CAM_REQ_CMP; + xpt_done(ccb); + break; + } + case XPT_GET_TRAN_SETTINGS: + /* Get default/user set transfer settings for the target */ + { + struct ccb_trans_settings *cts = &ccb->cts; + + cts->protocol = PROTO_ATA; + cts->protocol_version = SCSI_REV_2; + cts->transport = XPORT_ATA; + cts->transport_version = 2; + cts->proto_specific.valid = 0; + cts->xport_specific.sata.valid = 0; + ccb->ccb_h.status = CAM_REQ_CMP; + xpt_done(ccb); + break; + } +#if 0 + case XPT_CALC_GEOMETRY: + { + struct ccb_calc_geometry *ccg; + uint32_t size_mb; + uint32_t secs_per_cylinder; + + ccg = &ccb->ccg; + size_mb = ccg->volume_size + / ((1024L * 1024L) / ccg->block_size); + if (size_mb >= 1024 && (aha->extended_trans != 0)) { + if (size_mb >= 2048) { + ccg->heads = 255; + ccg->secs_per_track = 63; + } else { + ccg->heads = 128; + ccg->secs_per_track = 32; + } + } else { + ccg->heads = 64; + ccg->secs_per_track = 32; + } + secs_per_cylinder = ccg->heads * ccg->secs_per_track; + ccg->cylinders = ccg->volume_size / secs_per_cylinder; + ccb->ccb_h.status = CAM_REQ_CMP; + xpt_done(ccb); + break; + } +#endif + case XPT_RESET_BUS: /* Reset the specified SCSI bus */ + case XPT_RESET_DEV: /* Bus Device Reset the specified SCSI device */ + ATA_RESET(dev); + ccb->ccb_h.status = CAM_REQ_CMP; + xpt_done(ccb); + break; + case XPT_TERM_IO: /* Terminate the I/O process */ + /* XXX Implement */ + ccb->ccb_h.status = CAM_REQ_INVALID; + xpt_done(ccb); + break; + case XPT_PATH_INQ: /* Path routing inquiry */ + { + struct ccb_pathinq *cpi = &ccb->cpi; + + cpi->version_num = 1; /* XXX??? */ + cpi->hba_inquiry = PI_SDTR_ABLE; + cpi->target_sprt = 0; + cpi->hba_misc = PIM_SEQSCAN; + cpi->hba_eng_cnt = 0; + cpi->max_target = 1; + cpi->max_lun = 0; + cpi->initiator_id = 0; + cpi->bus_id = cam_sim_bus(sim); + cpi->base_transfer_speed = 150000; + strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN); + strncpy(cpi->hba_vid, "ATA", HBA_IDLEN); + strncpy(cpi->dev_name, cam_sim_name(sim), DEV_IDLEN); + cpi->unit_number = cam_sim_unit(sim); + cpi->transport = XPORT_ATA; + cpi->transport_version = 2; + cpi->protocol = PROTO_ATA; + cpi->protocol_version = SCSI_REV_2; + cpi->maxio = ch->dma.max_iosize ? ch->dma.max_iosize : DFLTPHYS; + cpi->ccb_h.status = CAM_REQ_CMP; + xpt_done(ccb); + break; + } + default: + ccb->ccb_h.status = CAM_REQ_INVALID; + xpt_done(ccb); + break; + } +} + +static void +atapoll(struct cam_sim *sim) +{ + struct ata_channel *ch = (struct ata_channel *)cam_sim_softc(sim); + + ata_interrupt(ch); +} +#endif + /* * module handeling */ @@ -1102,6 +1413,7 @@ /* register controlling device */ atacdev = make_dev(&ata_cdevsw, 0, UID_ROOT, GID_OPERATOR, 0600, "ata"); +#ifndef ATA_CAM if (cold) { /* register boot attach to be run when interrupts are enabled */ if (!(ata_delayed_attach = (struct intr_config_hook *) @@ -1116,6 +1428,7 @@ free(ata_delayed_attach, M_TEMP); } } +#endif return 0; case MOD_UNLOAD: ==== //depot/projects/scottl-camlock/src/sys/dev/ata/ata-all.h#18 (text+ko) ==== @@ -412,6 +412,9 @@ struct ata_composite *composite; /* for composite atomic ops */ void *driver; /* driver specific */ TAILQ_ENTRY(ata_request) chain; /* list management */ +#ifdef ATA_CAM + union ccb *ccb; +#endif }; /* define this for debugging request processing */ @@ -554,6 +557,10 @@ struct ata_request *freezepoint; /* composite freezepoint */ struct ata_request *running; /* currently running request */ struct task conntask; /* PHY events handling task */ +#ifdef ATA_CAM + struct cam_sim *sim; + struct cam_path *path; +#endif }; /* disk bay/enclosure related */ @@ -593,6 +600,10 @@ int ata_wmode(struct ata_params *ap); int ata_umode(struct ata_params *ap); int ata_limit_mode(device_t dev, int mode, int maxmode); +#ifdef ATA_CAM +void ata_cam_begin_transaction(device_t dev, union ccb *ccb); +void ata_cam_end_transaction(device_t dev, struct ata_request *request); +#endif /* ata-queue.c: */ int ata_controlcmd(device_t dev, u_int8_t command, u_int16_t feature, u_int64_t lba, u_int16_t count); ==== //depot/projects/scottl-camlock/src/sys/dev/ata/ata-lowlevel.c#13 (text+ko) ==== @@ -87,9 +87,6 @@ (ATA_R_ATAPI | ATA_R_DMA | ATA_R_WRITE))) request->flags &= ~ATA_R_DMA; - /* check for 48 bit access and convert if needed */ - ata_modify_if_48bit(request); - switch (request->flags & (ATA_R_ATAPI | ATA_R_DMA)) { /* ATA PIO data transfer and control commands */ @@ -752,7 +749,9 @@ ata_tf_write(struct ata_request *request) { struct ata_channel *ch = device_get_softc(request->parent); +#ifndef ATA_CAM struct ata_device *atadev = device_get_softc(request->dev); +#endif if (request->flags & ATA_R_48BIT) { ATA_IDX_OUTB(ch, ATA_FEATURE, request->u.ata.feature >> 8); @@ -770,6 +769,7 @@ else { ATA_IDX_OUTB(ch, ATA_FEATURE, request->u.ata.feature); ATA_IDX_OUTB(ch, ATA_COUNT, request->u.ata.count); +#ifndef ATA_CAM if (atadev->flags & ATA_D_USE_CHS) { int heads, sectors; @@ -792,13 +792,16 @@ sectors) & 0xf)); } else { +#endif ATA_IDX_OUTB(ch, ATA_SECTOR, request->u.ata.lba); ATA_IDX_OUTB(ch, ATA_CYL_LSB, request->u.ata.lba >> 8); ATA_IDX_OUTB(ch, ATA_CYL_MSB, request->u.ata.lba >> 16); ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_D_LBA | ATA_DEV(request->unit) | ((request->u.ata.lba >> 24) & 0x0f)); +#ifndef ATA_CAM } +#endif } } ==== //depot/projects/scottl-camlock/src/sys/dev/ata/ata-queue.c#18 (text+ko) ==== @@ -63,6 +63,8 @@ request->flags |= ATA_R_ATAPI16; if ((atadev->param.config & ATA_DRQ_MASK) == ATA_DRQ_INTR) request->flags |= ATA_R_ATAPI_INTR; + if ((request->flags & ATA_R_ATAPI) == 0) + ata_modify_if_48bit(request); /* check that the device is still valid */ if (!(request->parent = device_get_parent(request->dev))) { request->result = ENXIO; @@ -510,11 +512,16 @@ */ if (ch->state == ATA_ACTIVE) { request->flags |= ATA_R_TIMEOUT; + if (ch->dma.unload) + ch->dma.unload(request); +#ifdef ATA_CAM + ata_cam_end_transaction(ch->dev, request); +#endif mtx_unlock(&ch->state_mtx); ATA_LOCKING(ch->dev, ATA_LF_UNLOCK); - if (ch->dma.unload) - ch->dma.unload(request); +#ifndef ATA_CAM ata_finish(request); +#endif } else { mtx_unlock(&ch->state_mtx); ==== //depot/projects/scottl-camlock/src/sys/dev/ata/ata-sata.c#6 (text+ko) ==== @@ -262,7 +262,6 @@ return 20; } else { - ata_modify_if_48bit(request); fis[0] = 0x27; /* host to device */ fis[1] = 0x80 | (request->unit & 0x0f); fis[2] = request->u.ata.command; ==== //depot/projects/scottl-camlock/src/sys/dev/ata/chipsets/ata-intel.c#8 (text+ko) ==== @@ -467,7 +467,9 @@ ata_intel_31244_tf_write(struct ata_request *request) { struct ata_channel *ch = device_get_softc(request->parent); +#ifndef ATA_CAM struct ata_device *atadev = device_get_softc(request->dev); +#endif if (request->flags & ATA_R_48BIT) { ATA_IDX_OUTW(ch, ATA_FEATURE, request->u.ata.feature); @@ -483,6 +485,7 @@ else { ATA_IDX_OUTB(ch, ATA_FEATURE, request->u.ata.feature); ATA_IDX_OUTB(ch, ATA_COUNT, request->u.ata.count); +#ifndef ATA_CAM if (atadev->flags & ATA_D_USE_CHS) { int heads, sectors; @@ -504,13 +507,16 @@ sectors) & 0xf)); } else { +#endif ATA_IDX_OUTB(ch, ATA_SECTOR, request->u.ata.lba); ATA_IDX_OUTB(ch, ATA_CYL_LSB, request->u.ata.lba >> 8); ATA_IDX_OUTB(ch, ATA_CYL_MSB, request->u.ata.lba >> 16); ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_D_LBA | ATA_DEV(request->unit) | ((request->u.ata.lba >> 24) & 0x0f)); +#ifndef ATA_CAM } +#endif } } ==== //depot/projects/scottl-camlock/src/sys/dev/ata/chipsets/ata-marvell.c#7 (text+ko) ==== @@ -359,9 +359,6 @@ return ata_begin_transaction(request); } - /* check for 48 bit access and convert if needed */ - ata_modify_if_48bit(request); - /* check sanity, setup SG list and DMA engine */ if ((error = ch->dma.load(request, NULL, NULL))) { device_printf(request->parent, "setting up DMA failed\n"); ==== //depot/projects/scottl-camlock/src/sys/dev/ata/chipsets/ata-serverworks.c#6 (text+ko) ==== @@ -256,7 +256,9 @@ ata_serverworks_tf_write(struct ata_request *request) { struct ata_channel *ch = device_get_softc(request->parent); +#ifndef ATA_CAM struct ata_device *atadev = device_get_softc(request->dev); +#endif if (request->flags & ATA_R_48BIT) { ATA_IDX_OUTW(ch, ATA_FEATURE, request->u.ata.feature); @@ -272,6 +274,7 @@ else { ATA_IDX_OUTW(ch, ATA_FEATURE, request->u.ata.feature); ATA_IDX_OUTW(ch, ATA_COUNT, request->u.ata.count); +#ifndef ATA_CAM if (atadev->flags & ATA_D_USE_CHS) { int heads, sectors; @@ -293,13 +296,16 @@ sectors) & 0xf)); } else { +#endif ATA_IDX_OUTW(ch, ATA_SECTOR, request->u.ata.lba); ATA_IDX_OUTW(ch, ATA_CYL_LSB, request->u.ata.lba >> 8); ATA_IDX_OUTW(ch, ATA_CYL_MSB, request->u.ata.lba >> 16); ATA_IDX_OUTW(ch, ATA_DRIVE, ATA_D_IBM | ATA_D_LBA | ATA_DEV(request->unit) | ((request->u.ata.lba >> 24) & 0x0f)); +#ifndef ATA_CAM } +#endif } } From owner-p4-projects@FreeBSD.ORG Sun Aug 9 22:09:55 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 88B731065670; Sun, 9 Aug 2009 22:09:55 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4883B106564A for ; Sun, 9 Aug 2009 22:09:55 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 1E45A8FC08 for ; Sun, 9 Aug 2009 22:09:55 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79M9tsQ011118 for ; Sun, 9 Aug 2009 22:09:55 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79M9sNX011116 for perforce@freebsd.org; Sun, 9 Aug 2009 22:09:54 GMT (envelope-from pgj@FreeBSD.org) Date: Sun, 9 Aug 2009 22:09:54 GMT Message-Id: <200908092209.n79M9sNX011116@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 167144 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 22:09:56 -0000 http://perforce.freebsd.org/chv.cgi?CH=167144 Change 167144 by pgj@petymeg-current on 2009/08/09 22:09:01 Reschedule workplan. Approved by: gonzo (mentor) Affected files ... .. //depot/projects/soc2009/pgj_libstat/Milestones#2 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/Milestones#2 (text+ko) ==== @@ -26,30 +26,38 @@ Based on the proposed design and the feedback received so far, provide an initial partial implementation for libnetstat, patches for the - kernel, and a modified version of netstat(1) to use this library as - much as possible. Start to implement tests. + kernel, and a modified version of netstat(1) to use this library. Start to + work on extending the support for bsnmpd(1). + +- July 21, 2009. + + Add network interfaces, mbuf(9) statistics. + +- July 28, 2009. + + Add bpf(4) peers, protocol-dependent statistics (ddp, pfsync, tcp, udp, + carp, ip, ip6, icmp, icmp6, pim, pim6, rip, ipsec, pfkey, ipx/spx, sctp). +- August 4, 2009. -- July 14, 2009. + Some buffer time reserved for catching up. Scrub, slush, and test the code, + make it more stable, profile performance, fix bugs. Add the missing + protocols to the socket abstraction (netgraph, appletalk, sctp, ipx). + +- August 11, 2009. - By following the experience gained from the implementation of - libnetstat, an initial libprocstat library is also supplied. To make - it useable and demonstrate its capabilities, some simple tools are - included (similar to the ones were supplied for libmemstat(3)). - Continue working on tests. + Add routing statistics. +- August 18, 2009. -- July 21, 2009. + Add multicast statistics. - Scrub and slush the implemented libraries, together with the - accompanied kernel patches, make them more stable, profile - performance, fix bugs, and catch up in case of slow progress. Create - an initial documentation (i.e. manual pages, and a FreeBSD article, - if time permits) for the interfaces and the tools. +- August 25, 2009. + Catch up in case of slow progress. Write documentation, document the + experiences earned so far. -- August 10, 2009. +- September 1, 2009. - Final touches on the code, documentation. If there is time, start to - extend the experimented interface to other statistics, build other - libraries and tools, provide kernel patches for them. + Finish a modified, libnetstat-based version of the netstat(1) and bsnmpd(1) + applications. From owner-p4-projects@FreeBSD.ORG Sun Aug 9 22:11:58 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C7BF01065676; Sun, 9 Aug 2009 22:11:57 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 822ED1065674 for ; Sun, 9 Aug 2009 22:11:57 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6FC808FC33 for ; Sun, 9 Aug 2009 22:11:57 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79MBvqk011374 for ; Sun, 9 Aug 2009 22:11:57 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79MBvfh011372 for perforce@freebsd.org; Sun, 9 Aug 2009 22:11:57 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Sun, 9 Aug 2009 22:11:57 GMT Message-Id: <200908092211.n79MBvfh011372@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Cc: Subject: PERFORCE change 167145 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 22:11:58 -0000 http://perforce.freebsd.org/chv.cgi?CH=167145 Change 167145 by rwatson@rwatson_freebsd_capabilities on 2009/08/09 22:11:44 Some fcntl's need to operate on capabilities, others on the underlying objects. Refine kern_fcntl() so that the following operations are on capabilities: F_DUPFD, F_DUP2FD, F_GETFD, F_SETFD The following operations require CAP_FCNTL and affect the underlying file descriptor: F_GETFL, F_SETFL, F_GETOWN, F_SETOWN The following operations require CAP_FLOCK and affect the underlying file descriptor: F_SETLK_REMOTE, F_SETLKW, F_SETLK, F_GETLK Affected files ... .. //depot/projects/trustedbsd/capabilities/src/sys/kern/kern_descrip.c#28 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/sys/kern/kern_descrip.c#28 (text+ko) ==== @@ -404,7 +404,7 @@ } static inline struct file * -fdtofp(int fd, cap_rights_t rights, struct filedesc *fdp) +fdtofp(int fd, struct filedesc *fdp) { struct file *fp; @@ -412,13 +412,23 @@ if ((unsigned)fd >= fdp->fd_nfiles || (fp = fdp->fd_ofiles[fd]) == NULL) return (NULL); + return (fp); +} + +static inline struct file * +fdtofp_cap(int fd, cap_rights_t rights, struct filedesc *fdp) +{ + struct file *fp; + FILEDESC_LOCK_ASSERT(fdp); + if ((unsigned)fd >= fdp->fd_nfiles || + (fp = fdp->fd_ofiles[fd]) == NULL) + return (NULL); #ifdef CAPABILITIES if (fp->f_type == DTYPE_CAPABILITY) - if(cap_fextract(fp, rights, &fp)) + if (cap_fextract(fp, rights, &fp)) return (NULL); #endif /* CAPABILITIES */ - return (fp); } @@ -453,7 +463,7 @@ case F_GETFD: FILEDESC_SLOCK(fdp); - if ((fp = fdtofp(fd, CAP_READ, fdp)) == NULL) { + if ((fp = fdtofp(fd, fdp)) == NULL) { FILEDESC_SUNLOCK(fdp); error = EBADF; break; @@ -465,7 +475,7 @@ case F_SETFD: FILEDESC_XLOCK(fdp); - if ((fp = fdtofp(fd, CAP_WRITE, fdp)) == NULL) { + if ((fp = fdtofp(fd, fdp)) == NULL) { FILEDESC_XUNLOCK(fdp); error = EBADF; break; @@ -478,7 +488,7 @@ case F_GETFL: FILEDESC_SLOCK(fdp); - if ((fp = fdtofp(fd, CAP_READ, fdp)) == NULL) { + if ((fp = fdtofp_cap(fd, CAP_FCNTL, fdp)) == NULL) { FILEDESC_SUNLOCK(fdp); error = EBADF; break; @@ -489,7 +499,7 @@ case F_SETFL: FILEDESC_SLOCK(fdp); - if ((fp = fdtofp(fd, CAP_FCHFLAGS, fdp)) == NULL) { + if ((fp = fdtofp_cap(fd, CAP_FCNTL, fdp)) == NULL) { FILEDESC_SUNLOCK(fdp); error = EBADF; break; @@ -521,7 +531,7 @@ case F_GETOWN: FILEDESC_SLOCK(fdp); - if ((fp = fdtofp(fd, CAP_READ, fdp)) == NULL) { + if ((fp = fdtofp_cap(fd, CAP_FCNTL, fdp)) == NULL) { FILEDESC_SUNLOCK(fdp); error = EBADF; break; @@ -536,7 +546,7 @@ case F_SETOWN: FILEDESC_SLOCK(fdp); - if ((fp = fdtofp(fd, CAP_FCHOWN, fdp)) == NULL) { + if ((fp = fdtofp_cap(fd, CAP_FCNTL, fdp)) == NULL) { FILEDESC_SUNLOCK(fdp); error = EBADF; break; @@ -562,7 +572,7 @@ case F_SETLK: do_setlk: FILEDESC_SLOCK(fdp); - if ((fp = fdtofp(fd, CAP_FLOCK, fdp)) == NULL) { + if ((fp = fdtofp_cap(fd, CAP_FLOCK, fdp)) == NULL) { FILEDESC_SUNLOCK(fdp); error = EBADF; break; @@ -657,7 +667,7 @@ case F_GETLK: FILEDESC_SLOCK(fdp); - if ((fp = fdtofp(fd, CAP_FLOCK, fdp)) == NULL) { + if ((fp = fdtofp_cap(fd, CAP_FLOCK, fdp)) == NULL) { FILEDESC_SUNLOCK(fdp); error = EBADF; break; From owner-p4-projects@FreeBSD.ORG Sun Aug 9 22:24:11 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3C3971065673; Sun, 9 Aug 2009 22:24:11 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EFB43106566C for ; Sun, 9 Aug 2009 22:24:10 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id DE7B18FC0A for ; Sun, 9 Aug 2009 22:24:10 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79MOAJM012204 for ; Sun, 9 Aug 2009 22:24:10 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79MOAxV012202 for perforce@freebsd.org; Sun, 9 Aug 2009 22:24:10 GMT (envelope-from pgj@FreeBSD.org) Date: Sun, 9 Aug 2009 22:24:10 GMT Message-Id: <200908092224.n79MOAxV012202@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 167146 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 22:24:12 -0000 http://perforce.freebsd.org/chv.cgi?CH=167146 Change 167146 by pgj@petymeg-current on 2009/08/09 22:23:51 Add the basic types and functions for the upcoming route_type, an abstraction for FIB entries. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/Makefile#17 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#59 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#56 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_route.c#1 add .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#64 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/Makefile#17 (text+ko) ==== @@ -4,7 +4,7 @@ LIB= netstat SRCS= netstat_socket.c netstat_mbuf.c netstat_if.c netstat_bpf.c \ - netstat_stat.c netstat_util.c + netstat_stat.c netstat_route.c netstat_util.c INCS= netstat.h ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#59 (text+ko) ==== @@ -93,6 +93,31 @@ #define NETSTAT_IP6_MBUF_MAX 32 #define NETSTAT_IP6_IF_MAX 16 +/* Flags for netstat_route(): */ +#define NETSTAT_ROUTE_ALL 0x01 /* Return all routes. */ +#define NETSTAT_ROUTE_ALLFIBS 0x02 /* Return routes for all FIBs. */ + +/* Testing flags for route_type: */ +#define NETSTAT_RT_UP 0x00001 +#define NETSTAT_RT_GATEWAY 0x00002 +#define NETSTAT_RT_HOST 0x00004 +#define NETSTAT_RT_REJECT 0x00008 +#define NETSTAT_RT_DYNAMIC 0x00010 +#define NETSTAT_RT_MODIFIED 0x00020 +#define NETSTAT_RT_DONE 0x00040 +#define NETSTAT_RT_XRESOLVE 0x00080 +#define NETSTAT_RT_STATIC 0x00100 +#define NETSTAT_RT_PROTO1 0x00200 +#define NETSTAT_RT_PROTO2 0x00400 +#define NETSTAT_RT_PROTO3 0x00800 +#define NETSTAT_RT_PRCLONING 0x01000 +#define NETSTAT_RT_BLACKHOLE 0x02000 +#define NETSTAT_RT_BROADCAST 0x04000 +#define NETSTAT_RT_LLINFO 0x08000 +#define NETSTAT_RT_WASCLONED 0x10000 +#define NETSTAT_RT_CLONING 0x20000 +#define NETSTAT_RT_EXPIRES 0x40000 /* has expire time */ + /* Enum for TCP states: */ enum tcp_state { tcps_Closed, @@ -232,6 +257,10 @@ struct mroute6_stat; #endif +struct route_type; +struct route_type_list; +struct route_type_iterator; + __BEGIN_DECLS const char *netstat_strerror(int); const char *netstat_kvmerror(const struct session_type *); @@ -1177,4 +1206,31 @@ u_int64_t netstat_mroute6s_get_pkt2large(const struct mroute6_stat *); u_int64_t netstat_mroute6s_get_upq_sockfull(const struct mroute6_stat *); #endif + +/* Routing: */ +struct route_type_list *netstat_rtl_alloc(void); +void netstat_rtl_free(struct route_type_list *); +int netstat_rtl_geterror(const struct route_type_list *); +int netstat_rtl_length(const struct route_type_list *); + +int netstat_rti_alloc(struct route_type_list *list, + struct route_type_iterator **iterator); +const struct route_type *netstat_rti_first(struct route_type_iterator *); +const struct route_type *netstat_rti_next(struct route_type_iterator *); +void netstat_rti_free(struct route_type_iterator *); + +int netstat_route(const struct session_type *, int fib, int domain, + struct route_type_list *list, int flags); + +int netstat_rt_get_fib(const struct route_type *); +int netstat_rt_get_family(const struct route_type *); +const struct routeaddr_type *netstat_rt_get_destination(const struct route_type *); +const struct routeaddr_type *netstat_rt_get_gateway(const struct route_type *); +int netstat_rt_get_flags(const struct route_type *); +u_int64_t netstat_rt_get_refs(const struct route_type *); +u_int64_t netstat_rt_get_used(const struct route_type *); +const char *netstat_rt_get_interface(const struct route_type *); +u_int64_t netstat_rt_get_expire(const struct route_type *); +u_int32_t netstat_rt_get_mtu(const struct route_type *); +u_int64_t netstat_rt_get_address(const struct route_type *); #endif /* !_NETSTAT_H_ */ ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#56 (text+ko) ==== @@ -439,6 +439,45 @@ const char *str; }; +/* Route type. */ +struct routeaddr_type { + /* for printing purposes: */ + char *rat_address; /* resolved hostname */ + char rat_ni_address[20]; /* numeric */ + /* for other: */ + void *rat_data; /* raw socket information */ + int rat_data_len; +}; + +struct route_type { + int rt_fib; /* FIB instance */ + int rt_family; /* protocol family */ + struct routeaddr_type *rt_destination; /* destination: subnet */ + struct routeaddr_type *rt_gateway; /* gateway: node */ + int rt_flags; + u_int64_t rt_refs; /* # references */ + u_int64_t rt_used; /* # raw packets forwarded */ + char *rt_interface; /* routing interface name */ + u_int64_t rt_expire; /* sec */ + u_int32_t rt_mtu; /* bytes */ + u_int64_t rt_address; /* opaque pointer */ + + TAILQ_ENTRY(route_type) rt_list; +}; + +struct route_type_list { + TAILQ_HEAD(, route_type) rtl_list; + int rtl_length; + int rtl_error; +}; + +struct route_type_iterator { + struct route_type_list *rti_list; + struct route_type *rti_first; + struct route_type *rti_next; +}; + + int kread_data(kvm_t *kvm, u_long kvm_pointer, void *address, size_t size); int kread_string(kvm_t *kvm, u_long kvm_pointer, char *buffer, int buflen); @@ -464,6 +503,12 @@ struct bpf_type *_netstat_bpt_allocate(struct bpf_type_list *list, const char *ifname); +void _netstat_rtl_empty(struct route_type_list *); +void _netstat_rt_free(struct route_type *); +void _netstat_rat_free(struct routeaddr_type *); +struct route_type *_netstat_rt_allocate(struct route_type_list *); +struct routeaddr_type *_netstat_rat_allocate(void *, size_t); + const char *resolve_val2str_name(int, const struct val2str *); /* XXX: merge these into a common address resolution routine. */ const char *routename(in_addr_t in, int numeric); ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#64 (text+ko) ==== @@ -2190,6 +2190,219 @@ #undef MRT6_ACC #endif +void +_netstat_rtl_empty(struct route_type_list *list) +{ + struct route_type *rtp; + + while ((rtp = TAILQ_FIRST(&list->rtl_list)) ) { + TAILQ_REMOVE(&list->rtl_list, rtp, rt_list); + _netstat_rt_free(rtp); + } + + list->rtl_length = 0; +} + +void +_netstat_rt_free(struct route_type *rtp) +{ + _netstat_rat_free(rtp->rt_destination); + _netstat_rat_free(rtp->rt_gateway); + free(rtp->rt_interface); + free(rtp); +} + +void +_netstat_rat_free(struct routeaddr_type *ratp) +{ + free(ratp->rat_address); + free(ratp->rat_data); + free(ratp); +} + +struct route_type * +_netstat_rt_allocate(struct route_type_list *list) +{ + struct route_type *rtp; + + rtp = malloc(sizeof(*rtp)); + if (rtp == NULL) + return (NULL); + + bzero(rtp, sizeof(*rtp)); + TAILQ_INSERT_TAIL(&list->rtl_list, rtp, rt_list); + list->rtl_length += 1; + return (rtp); +} + +struct routeaddr_type * +_netstat_rat_allocate(void *address, size_t len) +{ + struct routeaddr_type *ratp; + + ratp = malloc(sizeof(*ratp)); + if (ratp == NULL) + return (NULL); + + bzero(ratp, sizeof(*ratp)); + if (address != NULL && len > 0) { + ratp->rat_data = malloc(len); + if (ratp->rat_data == NULL) { + free(ratp); + ratp = NULL; + } else { + memcpy(ratp->rat_data, address, len); + ratp->rat_data_len = len; + } + } + return (ratp); +} + +struct route_type_list * +netstat_rtl_alloc(void) +{ + struct route_type_list *rtlp; + + rtlp = malloc(sizeof(*rtlp)); + if (rtlp == NULL) + return (NULL); + + TAILQ_INIT(&rtlp->rtl_list); + rtlp->rtl_error = NETSTAT_ERROR_UNDEFINED; + rtlp->rtl_length = 0; + return (rtlp); +} + +void +netstat_rtl_free(struct route_type_list *list) +{ + _netstat_rtl_empty(list); + free(list); +} + +int +netstat_rtl_geterror(const struct route_type_list *list) +{ + return (list->rtl_error); +} + +int +netstat_rtl_length(const struct route_type_list *list) +{ + return (list->rtl_length); +} + +int +netstat_rti_alloc(struct route_type_list *list, + struct route_type_iterator **iterator) +{ + struct route_type_iterator *rtip; + + rtip = malloc(sizeof(*rtip)); + if (rtip == NULL) + return (-1); + + bzero(rtip, sizeof(*rtip)); + rtip->rti_list = list; + rtip->rti_first = TAILQ_FIRST(&list->rtl_list); + if (rtip->rti_first != NULL) + rtip->rti_next = TAILQ_NEXT(rtip->rti_first, rt_list); + *iterator = rtip; + return (0); +} + +const struct route_type * +netstat_rti_first(struct route_type_iterator *rtip) +{ + if (rtip->rti_first != NULL) + rtip->rti_next = TAILQ_NEXT(rtip->rti_first, rt_list); + return (rtip->rti_first); +} + +const struct route_type * +netstat_rti_next(struct route_type_iterator *rtip) +{ + const struct route_type *rtp; + + rtp = rtip->rti_next; + if (rtip->rti_next != NULL) + rtip->rti_next = TAILQ_NEXT(rtip->rti_next, rt_list); + + return (rtp); +} + +void +netstat_rti_free(struct route_type_iterator *rtip) +{ + free(rtip); +} + +int +netstat_rt_get_fib(const struct route_type *rtp) +{ + return (rtp->rt_fib); +} + +int +netstat_rt_get_family(const struct route_type *rtp) +{ + return (rtp->rt_family); +} + +const struct routeaddr_type * +netstat_rt_get_destination(const struct route_type *rtp) +{ + return (rtp->rt_destination); +} + +const struct routeaddr_type * +netstat_rt_get_gateway(const struct route_type *rtp) +{ + return (rtp->rt_gateway); +} + +int +netstat_rt_get_flags(const struct route_type *rtp) +{ + return (rtp->rt_flags); +} + +u_int64_t +netstat_rt_get_refs(const struct route_type *rtp) +{ + return (rtp->rt_refs); +} + +u_int64_t +netstat_rt_get_used(const struct route_type *rtp) +{ + return (rtp->rt_used); +} + +const char * +netstat_rt_get_interface(const struct route_type *rtp) +{ + return (rtp->rt_interface); +} + +u_int64_t +netstat_rt_get_expire(const struct route_type *rtp) +{ + return (rtp->rt_expire); +} + +u_int32_t +netstat_rt_get_mtu(const struct route_type *rtp) +{ + return (rtp->rt_mtu); +} + +u_int64_t +netstat_rt_get_address(const struct route_type *rtp) +{ + return (rtp->rt_address); +} + static const char *icmpnames[ICMP_MAXTYPE + 1] = { "echo reply", /* RFC 792 */ "#1", From owner-p4-projects@FreeBSD.ORG Sun Aug 9 22:28:16 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C73C31065673; Sun, 9 Aug 2009 22:28:15 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 848601065670 for ; Sun, 9 Aug 2009 22:28:15 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 738F88FC1A for ; Sun, 9 Aug 2009 22:28:15 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79MSFlu012486 for ; Sun, 9 Aug 2009 22:28:15 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79MSFNs012484 for perforce@freebsd.org; Sun, 9 Aug 2009 22:28:15 GMT (envelope-from pgj@FreeBSD.org) Date: Sun, 9 Aug 2009 22:28:15 GMT Message-Id: <200908092228.n79MSFNs012484@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 167147 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 22:28:16 -0000 http://perforce.freebsd.org/chv.cgi?CH=167147 Change 167147 by pgj@petymeg-current on 2009/08/09 22:27:37 Add netstat_family_name(), a utility function for resolving protocol family values into a string representation. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#60 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#65 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#60 (text+ko) ==== @@ -265,6 +265,8 @@ const char *netstat_strerror(int); const char *netstat_kvmerror(const struct session_type *); +const char *netstat_family_name(int); + /* "Session" */ struct session_type *netstat_session_new(void* kvm_handle); void netstat_session_free(struct session_type *); ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#65 (text+ko) ==== @@ -160,6 +160,49 @@ return ("Unknown error"); } +const char * +netstat_family_name(int pf) +{ + const char *pfname; + static char buf[64]; + + switch (pf) { + case PF_INET: + pfname = "Internet"; + break; +#ifdef INET6 + case PF_INET6: + pfname = "Internet6"; + break; +#endif + case PF_IPX: + pfname = "IPX"; + break; + case PF_ISO: + pfname = "ISO"; + break; + case PF_APPLETALK: + pfname = "AppleTalk"; + break; + case PF_CCITT: + pfname = "X.25"; + break; + case PF_NETGRAPH: + pfname = "Netgraph"; + break; + default: + pfname = NULL; + break; + } + + if (pfname != NULL) + snprintf(buf, sizeof(buf), "%s", pfname); + else + snprintf(buf, sizeof(buf), "Protocol Family %d", pf); + + return (buf); +} + struct session_type * netstat_session_new(void *kvm_handle) { From owner-p4-projects@FreeBSD.ORG Sun Aug 9 22:39:28 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 54E5E1065670; Sun, 9 Aug 2009 22:39:28 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 14D72106566B for ; Sun, 9 Aug 2009 22:39:28 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 02FDB8FC0A for ; Sun, 9 Aug 2009 22:39:28 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79MdR3x013291 for ; Sun, 9 Aug 2009 22:39:27 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79MdR94013289 for perforce@freebsd.org; Sun, 9 Aug 2009 22:39:27 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Sun, 9 Aug 2009 22:39:27 GMT Message-Id: <200908092239.n79MdR94013289@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Cc: Subject: PERFORCE change 167149 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 22:39:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=167149 Change 167149 by rwatson@rwatson_freebsd_capabilities on 2009/08/09 22:38:50 Need a newer version of libsbuf due to library version bump; these library specifications are temporary and will go away once lch_start speaks ELF better. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability_host.c#22 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability_host.c#22 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability_host.c#21 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability_host.c#22 $ */ #include @@ -67,7 +67,7 @@ #define _PATH_USR_LIB "/usr/lib" #define LIBC_SO "libc.so.7" #define LIBCAPABILITY_SO "libcapability.so.1" -#define LIBSBUF_SO "libsbuf.so.4" +#define LIBSBUF_SO "libsbuf.so.5" extern char **environ; From owner-p4-projects@FreeBSD.ORG Sun Aug 9 22:40:29 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8DD241065672; Sun, 9 Aug 2009 22:40:29 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4E1B6106566C for ; Sun, 9 Aug 2009 22:40:29 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 3C41D8FC08 for ; Sun, 9 Aug 2009 22:40:29 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79MeT4N013429 for ; Sun, 9 Aug 2009 22:40:29 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79MeTob013427 for perforce@freebsd.org; Sun, 9 Aug 2009 22:40:29 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Sun, 9 Aug 2009 22:40:29 GMT Message-Id: <200908092240.n79MeTob013427@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Cc: Subject: PERFORCE change 167150 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 22:40:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=167150 Change 167150 by rwatson@rwatson_freebsd_capabilities on 2009/08/09 22:39:56 Handle library version bumps in 8.0-beta2. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/usr.bin/gzip/gzsandbox.c#8 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/usr.bin/gzip/gzsandbox.c#8 (text+ko) ==== @@ -53,11 +53,11 @@ * In the future, these library dependencies won't need to be explicit, so * this will go away. */ -#define LC_LIB_LIBZ_SO "/lib/libz.so.4" -#define LC_LIBZ_SO "libz.so.4" +#define LC_LIB_LIBZ_SO "/lib/libz.so.5" +#define LC_LIBZ_SO "libz.so.5" -#define LC_USR_LIB_LIBBZ2_SO "/usr/lib/libbz2.so.3" -#define LC_LIBBZ2_SO "libbz2.so.3" +#define LC_USR_LIB_LIBBZ2_SO "/usr/lib/libbz2.so.4" +#define LC_LIBBZ2_SO "libbz2.so.4" #define LC_USR_BIN_GZIP_SANDBOX "/usr/bin/gzip" From owner-p4-projects@FreeBSD.ORG Sun Aug 9 22:42:32 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E18621065673; Sun, 9 Aug 2009 22:42:31 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A09E9106564A for ; Sun, 9 Aug 2009 22:42:31 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 8EAB08FC1A for ; Sun, 9 Aug 2009 22:42:31 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79MgV6E013617 for ; Sun, 9 Aug 2009 22:42:31 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79MgViA013615 for perforce@freebsd.org; Sun, 9 Aug 2009 22:42:31 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Sun, 9 Aug 2009 22:42:31 GMT Message-Id: <200908092242.n79MgViA013615@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Cc: Subject: PERFORCE change 167151 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 22:42:32 -0000 http://perforce.freebsd.org/chv.cgi?CH=167151 Change 167151 by rwatson@rwatson_freebsd_capabilities on 2009/08/09 22:41:33 Temporarily disable assertion which now fires in capability mode. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf/rtld.c#25 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf/rtld.c#25 (text+ko) ==== @@ -1449,10 +1449,16 @@ objtmp.dynamic = rtld_dynamic(&objtmp); digest_dynamic(&objtmp, 1); assert(objtmp.needed == NULL); +#if 0 + /* + * XXXRW: For reasons as yet undetermined, this assertion fires in + * capability mode. + */ #if !defined(__mips__) /* MIPS and SH{3,5} have a bogus DT_TEXTREL. */ assert(!objtmp.textrel); #endif +#endif /* * Temporarily put the dynamic linker entry into the object list, so From owner-p4-projects@FreeBSD.ORG Sun Aug 9 23:57:56 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 54C7C1065697; Sun, 9 Aug 2009 23:57:55 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A22E9106568D for ; Sun, 9 Aug 2009 23:57:54 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 718C08FC24 for ; Sun, 9 Aug 2009 23:57:54 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n79NvsIA020112 for ; Sun, 9 Aug 2009 23:57:54 GMT (envelope-from julian@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n79NvsOQ020110 for perforce@freebsd.org; Sun, 9 Aug 2009 23:57:54 GMT (envelope-from julian@freebsd.org) Date: Sun, 9 Aug 2009 23:57:54 GMT Message-Id: <200908092357.n79NvsOQ020110@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to julian@freebsd.org using -f From: Julian Elischer To: Perforce Change Reviews Cc: Subject: PERFORCE change 167158 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Aug 2009 23:58:00 -0000 http://perforce.freebsd.org/chv.cgi?CH=167158 Change 167158 by julian@julian-mac on 2009/08/09 23:57:13 slight change of the sample code. Affected files ... .. //depot/projects/vimage/porting_to_vimage.txt#14 edit Differences ... ==== //depot/projects/vimage/porting_to_vimage.txt#14 (text+ko) ==== @@ -279,7 +279,7 @@ * Called for the removal of the last instance only on module unload. */ static void -mymod_destroy(void) +mymod_uninit(void) { } @@ -302,7 +302,7 @@ break; case MOD_UNLOAD: - /* checkthat unloading is ok */ + /* check that unloading is ok */ break; case MOD_QUIESCE: @@ -342,23 +342,25 @@ 0 }; -#define MYMOD_SYSINIT_ORDER SI_SUB_PROTO_IFATTACHDOMAIN -#define MYMOD_MODEVENT_ORDER (SI_ORDER_ANY - 255) -#define MYMOD_MODULE_ORDER (MYMOD_MODEVENT_ORDER + 1) -#define MYMOD_VNET_ORDER (MYMOD_MODULE_ORDER + 1 ) - -DECLARE_MODULE(mymod, mymodmod, MYMOD_SYSINIT_ORDER, MYMOD_MODEVENT_ORDER); -MODULE_VERSION(mymod, 2); +#define MYMOD_MAJOR_ORDER SI_SUB_PROTO_IFATTACHDOMAIN /* for example */ +#define MYMOD_MODULE_ORDER (SI_ORDER_ANY + 64) /* not fussy */ +#define MYMOD_SYSINIT_ORDER (MYMOD_MODULE_ORDER + 1) /* a bit later */ +#define MYMOD_VNET_ORDER (MYMOD_SYSINIT_ORDER + 1 ) /* later still */ -SYSINIT(mymod_init, MYMOD_SYSINIT_ORDER, MYMOD_MODULE_ORDER, - mymod_init, NULL); -SYSUNINIT(mymod_destroy, MYMOD_SYSINIT_ORDER, MYMOD_MODULE_ORDER, - mymod_destroy, NULL); +DECLARE_MODULE(mymod, mymodmod, MYMOD_MAJOR_ORDER, MYMOD_MODULE_ORDER); +MODULE_DEPEND(dummynet, ipfw, 2, 2, 2); +MODULE_VERSION(mymod, 1); + +SYSINIT(mymod_init, MYMOD_MAJOR_ORDER, MYMOD_SYSINIT_ORDER, + mymod_init, NULL); +SYSUNINIT(mymod_uninit, MYMOD_MAJOR_ORDER, MYMOD_SYSINIT_ORDER, + mymod_uninit, NULL); -VNET_SYSINIT(mymod_vnet_init, MYMOD_SYSINIT_ORDER, MYMOD_VNET_ORDER, - mymod_vnet_init, NULL); -VNET_SYSUNINIT(mymod_vnet_uninit, MYMOD_SYSINIT_ORDER, MYMOD_VNET_ORDER, - mymod_vnet_uninit, NULL); +VNET_SYSINIT(mymod_vnet_init, MYMOD_MAJOR_ORDER, MYMOD_VNET_ORDER, + mymod_vnet_init, NULL); +VNET_SYSUNINIT(mymod_vnet_uninit, MYMOD_MAJOR_ORDER, MYMOD_VNET_ORDER, + mymod_vnet_uninit, NULL); + ========== end sample code ======= From owner-p4-projects@FreeBSD.ORG Mon Aug 10 03:37:55 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2DE5F1065673; Mon, 10 Aug 2009 03:37:55 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D791D106566B for ; Mon, 10 Aug 2009 03:37:54 +0000 (UTC) (envelope-from zjriggl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C6D268FC22 for ; Mon, 10 Aug 2009 03:37:54 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7A3bsPQ050194 for ; Mon, 10 Aug 2009 03:37:54 GMT (envelope-from zjriggl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7A3bsgZ050192 for perforce@freebsd.org; Mon, 10 Aug 2009 03:37:54 GMT (envelope-from zjriggl@FreeBSD.org) Date: Mon, 10 Aug 2009 03:37:54 GMT Message-Id: <200908100337.n7A3bsgZ050192@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zjriggl@FreeBSD.org using -f From: Zachariah Riggle To: Perforce Change Reviews Cc: Subject: PERFORCE change 167159 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 03:37:55 -0000 http://perforce.freebsd.org/chv.cgi?CH=167159 Change 167159 by zjriggl@zjriggl_tcpregression on 2009/08/10 03:37:36 Updated makefile, moved 'tests' directory. Affected files ... .. //depot/projects/soc2009/zjriggl_tcpregression/Makefile#2 edit .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/tests/__init__.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/tests/segmentBufferTest.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tcpregression/tests/tcpFilterTest.py#1 add .. //depot/projects/soc2009/zjriggl_tcpregression/src/tests/segmentBufferTest.py#2 delete .. //depot/projects/soc2009/zjriggl_tcpregression/src/tests/tcpFilterTest.py#2 edit Differences ... ==== //depot/projects/soc2009/zjriggl_tcpregression/Makefile#2 (text+ko) ==== @@ -5,14 +5,14 @@ SO=pcap.so all: pcap - if [ ! -e $(PCAP)/$(SO) ]; then echo "ERROR: cannot find $(PCAP)/$(SO)"; exit 1; fi - cp $(PCAP)/$(SO) $(PCS)/$(SO) + cp $(PCAP)/build/lib*/pcap.so $(PCS)/pcap.so + if [ ! -e $(PCS)/$(SO) ]; then echo "ERROR: cannot find $(PCAP)/$(SO)"; exit 1; else echo "BUILD SUCCESSFUL"; fi pcap: echo "Building PCAP for pcs.pcap module" pyrexc $(PCAP)/pcap.pyx - $(PYTHON) $(PCAP)/setup.py config $(CONFIG_ARGS) - cd $(PCAP); $(PYTHON) setup.py build_ext -i + cd $(PCAP); $(PYTHON) setup.py config $(CONFIG_ARGS) + cd $(PCAP); $(PYTHON) setup.py build $(CONFIG_ARGS) test: $(PYTHON) @@ -20,4 +20,5 @@ clean: cd $(PCAP); make clean - rm -f $(PCS)/$(SO) $(PCAP)/$(SO)+ rm -f $(PCS)/$(SO) $(PCAP)/$(SO) + rm -f `find * | grep "pyc$$"` ==== //depot/projects/soc2009/zjriggl_tcpregression/src/tests/tcpFilterTest.py#2 (text+ko) ==== @@ -10,4 +10,4 @@ from tcpFilter import tcpFilter - +print 'done' From owner-p4-projects@FreeBSD.ORG Mon Aug 10 06:21:55 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2E21A1065672; Mon, 10 Aug 2009 06:21:54 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E0549106566C for ; Mon, 10 Aug 2009 06:21:53 +0000 (UTC) (envelope-from tsel@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id CDE7B8FC19 for ; Mon, 10 Aug 2009 06:21:53 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7A6LrMd075565 for ; Mon, 10 Aug 2009 06:21:53 GMT (envelope-from tsel@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7A6LrMR075563 for perforce@freebsd.org; Mon, 10 Aug 2009 06:21:53 GMT (envelope-from tsel@FreeBSD.org) Date: Mon, 10 Aug 2009 06:21:53 GMT Message-Id: <200908100621.n7A6LrMR075563@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to tsel@FreeBSD.org using -f From: Tatsiana Elavaya To: Perforce Change Reviews Cc: Subject: PERFORCE change 167161 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 06:21:55 -0000 http://perforce.freebsd.org/chv.cgi?CH=167161 Change 167161 by tsel@tsel_mz on 2009/08/10 06:21:30 Reimplement rule dump Escape strings with spaces Check if same name is used to define cond or ruleset Use file command line argument More tests Affected files ... .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/Makefile#3 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/ipfw.hll.c#3 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/ipfw.hll.h#3 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/parse.y#3 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/subr.c#2 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/Makefile#2 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/t_dup_name1#1 add .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/t_dup_name1.err#1 add .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/t_dup_name2#1 add .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/t_dup_name2.err#1 add .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test1.err#2 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test2#2 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test2.err#2 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test3.output#2 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test4#2 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test4.output#1 add .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test5#1 add .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test5.output#1 add .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test6#1 add .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test6.output#1 add .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test7#1 add .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test7.output#1 add .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/token.l#3 edit Differences ... ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/Makefile#3 (text+ko) ==== @@ -11,7 +11,7 @@ DPADD= ${LIBL} LDADD= -ll -DEBUG_FLAGS+= -g +DEBUG_FLAGS+= -g -O0 .PHONY: test test: ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/ipfw.hll.c#3 (text+ko) ==== @@ -24,6 +24,7 @@ */ #include +#include #include #include #include @@ -33,225 +34,166 @@ struct ruleset *toplevel_ruleset; extern int yyparse(); +extern const char * yyfile; -#define TRACE_ACTIONS 0x001 -#define TRACE_CONDS 0x002 -#define TRACE_ALL (TRACE_ACTIONS | TRACE_CONDS) - -struct trace_stack; -struct trace_entry; - -typedef int (*trace_func_t)(struct trace_stack *stack, struct trace_entry *t); - -struct trace_entry { - int cmds_pos; - void *arg; - void *data; - int flags; - trace_func_t func; -}; - -struct trace_stack { - char **cmds; - int last_push; - int cmds_used; - int cmds_capacity; -}; +static void expand_rule(struct rule *rule, struct ruleset *ruleset); +static void expand_cond(struct cond *cond, struct condset *condset); static void -trace_push_cmd(struct trace_stack *stack, char *cmd) +expand_ruleset(struct ruleset *ruleset) { - if (stack->cmds_used == stack->cmds_capacity) { - stack->cmds_capacity *= 2; - stack->cmds = safe_realloc(stack->cmds, - stack->cmds_capacity * sizeof(void*)); + struct rule *r, *rtmp; + + TAILQ_FOREACH_SAFE(r, &ruleset->rules, rule_entries, rtmp) { + expand_rule(r, ruleset); } - stack->cmds[stack->cmds_used++] = cmd; -} - -static inline void -trace_entry_init(struct trace_entry *t, void *arg, trace_func_t func, int flags) -{ - t->arg = arg; - t->flags = flags; - t->data = NULL; - t->func = func; } static void -trace_complete(struct trace_stack *stack) +expand_rule(struct rule *rule, struct ruleset *ruleset) { - int i; + struct rule *ri; - if (!stack->cmds_used) - return; - - printf("add "); - for (i = 0; i < stack->cmds_used; i++) { - printf("%s ", stack->cmds[i]); + if (rule->action_ruleset) { + expand_ruleset(rule->action_ruleset); + while (!TAILQ_EMPTY(&rule->action_ruleset->rules)) { + ri = TAILQ_FIRST(&rule->action_ruleset->rules); + cmds_copy(&ri->cond->cmds, 0, TAILQ_FIRST(&rule->cond->cmds), NULL); + TAILQ_REMOVE(&rule->action_ruleset->rules, ri, rule_entries); + TAILQ_INSERT_BEFORE(rule, ri, rule_entries); + } + TAILQ_REMOVE(&ruleset->rules, rule, rule_entries); } - printf("\n"); } -static inline int -trace(struct trace_stack *stack, struct trace_entry *t_parent, struct trace_entry *t) +static void +expand_condset(struct condset *condset) { - int r; + struct cond *c, *ctmp; - stack->last_push = 1; - t->cmds_pos = stack->cmds_used; - r = t->func(stack, t); - - return (r); -} - -static inline void -trace_pop(struct trace_stack *stack, struct trace_entry *t) -{ - if (stack->last_push) { - trace_complete(stack); - stack->last_push = 0; + TAILQ_FOREACH_SAFE(c, &condset->conds, cond_entries, ctmp) { + expand_cond(c, condset); } - stack->cmds_used = t->cmds_pos; } -static int trace_rule(struct trace_stack *stack, struct trace_entry *t); -static int trace_cond(struct trace_stack *stack, struct trace_entry *t); - -static int -trace_ruleset(struct trace_stack *stack, struct trace_entry *t) +static void +expand_cond(struct cond *cond, struct condset *condset) { - struct trace_entry t_rule; - struct ruleset *ruleset = t->arg; - struct rule *rule = t->data; - - if (rule == NULL) { - if (TAILQ_EMPTY(&ruleset->rules)) { - return (0); - } - rule = TAILQ_FIRST(&ruleset->rules); - } - trace_entry_init(&t_rule, rule, trace_rule, t->flags); - trace(stack, t, &t_rule); - rule = TAILQ_NEXT(rule, rule_entries); - t->data = rule; - if (rule == NULL) { - return (0); - } - return (1); -} - -static int -trace_rule(struct trace_stack *stack, struct trace_entry *t) -{ - struct trace_entry t_cond; - struct rule *rule = t->arg; + struct cond *ci, *c, *begin, *end; struct cmd *cmd; - int flags = t->flags; - if (flags & TRACE_ACTIONS) { - if (0 || rule->action_ruleset) { -#if 0 - tnext = trace(stack, tnext, rule->action_ruleset, trace_ruleset, TRACE_ACTIONS); -#endif - } else { - TAILQ_FOREACH(cmd, &rule->actions, cmd_entries) { - trace_push_cmd(stack, cmd->cmd); + begin = TAILQ_PREV(cond, cond_head, cond_entries); + end = TAILQ_NEXT(cond, cond_entries); +loop: + TAILQ_FOREACH_REVERSE(cmd, &cond->cmds, cmd_head, cmd_entries) { + if (cmd->cmd_condset) { + expand_condset(cmd->cmd_condset); + TAILQ_FOREACH(c, &cmd->cmd_condset->conds, cond_entries) { + ci = cond_alloc(); + ci->lineno = cond->lineno; + cmds_copy(&ci->cmds, 1, TAILQ_FIRST(&cond->cmds), cmd); + cmds_copy(&ci->cmds, 1, TAILQ_FIRST(&c->cmds), NULL); + cmds_copy(&ci->cmds, 1, TAILQ_NEXT(cmd, cmd_entries), NULL); + TAILQ_INSERT_BEFORE(cond, ci, cond_entries); } + TAILQ_REMOVE(&condset->conds, cond, cond_entries); + if (begin == NULL) + cond = TAILQ_FIRST(&condset->conds); + else + cond = TAILQ_NEXT(begin, cond_entries); + goto loop; } } - - if (flags & TRACE_CONDS) { - trace_entry_init(&t_cond, rule->cond, trace_cond, TRACE_CONDS); - trace(stack, t, &t_cond); - trace_pop(stack, t); -#if 0 - if (rule->action_ruleset) - tnext = trace(stack, tnext, rule->action_ruleset, trace_ruleset, TRACE_CONDS); -#endif + cond = TAILQ_NEXT(cond, cond_entries); + if (cond != end && cond != NULL) { + goto loop; } - return (0); } -static int -trace_condset(struct trace_stack *stack, struct trace_entry *t) +static void +expand_rulecond(struct rule *rule, struct ruleset *ruleset) { - struct trace_entry t_cond; - struct condset *condset = t->arg; - struct cond *cond = t->data; + struct rule *ri; + struct condset *condset; + struct cond *c; - if (cond == NULL) { - if (TAILQ_EMPTY(&condset->conds)) { - return (0); - } - cond = TAILQ_FIRST(&condset->conds); + condset = condset_alloc(); + TAILQ_INSERT_HEAD(&condset->conds, rule->cond, cond_entries); + rule->cond = NULL; + expand_condset(condset); + TAILQ_FOREACH(c, &condset->conds, cond_entries) { + ri = rule_alloc(); + ri->actions = rule->actions; + ri->lineno = rule->lineno; + ri->cond = c; + TAILQ_INSERT_BEFORE(rule, ri, rule_entries); } - trace_entry_init(&t_cond, cond, trace_cond, TRACE_CONDS); - trace(stack, t, &t_cond); - t->data = TAILQ_NEXT(cond, cond_entries); - if (t->data == NULL) { - return (0); - } - return (1); + TAILQ_REMOVE(&ruleset->rules, rule, rule_entries); } -static int -trace_cond(struct trace_stack *stack, struct trace_entry *t) +static void +show_ruleset(struct ruleset *ruleset) { - struct trace_entry t_condset; - struct trace_entry t_next; - struct cond *cond = t->arg; - struct cmd *cmd = t->data; - int r; + struct rule *r; + struct cmd *c; + char *cmdval; - if (cmd == NULL) { - if (TAILQ_EMPTY(&cond->cmds)) { - return (0); + TAILQ_FOREACH(r, &toplevel_ruleset->rules, rule_entries) { + printf("add "); + TAILQ_FOREACH(c, &r->actions, cmd_entries) { + if (c->cmd_condset) { + printf("@%s ", c->cmd_condset->name); + } else { + printf("%s ", c->cmd); + } } - cmd = TAILQ_FIRST(&cond->cmds); - } - while (cmd) { - if (cmd->cmd_condset) { - trace_entry_init(&t_condset, cmd->cmd_condset, trace_condset, TRACE_CONDS); - cmd = TAILQ_NEXT(cmd, cmd_entries); - if (cmd != NULL) { - trace_entry_init(&t_next, cond, trace_cond, TRACE_CONDS); - t_next.data = cmd; + TAILQ_FOREACH(c, &r->cond->cmds, cmd_entries) { + if (c->cmd_condset) { + printf("@%s ", c->cmd_condset->name); + } else { + cmdval = cmd_escape(c->cmd); + printf("%s ", cmdval); + if (cmdval != c->cmd) + free(cmdval); } - do { - r = trace(stack, t, &t_condset); - if (cmd != NULL) { - trace(stack, t, &t_next); /* trace_cond always completes in one pass */ - } - trace_pop(stack, &t_condset); - } while (r); - break; } - trace_push_cmd(stack, cmd->cmd); - cmd = TAILQ_NEXT(cmd, cmd_entries); + printf("\n", r->lineno); } - return (0); } static void -dump_rules(void) +usage(void) { - struct trace_stack stack; - struct trace_entry t_ruleset; + fprintf(stderr, "usage: ipfw.hll file\n"); + exit(EX_USAGE); - stack.cmds_used = 0; - stack.cmds_capacity = 100; /* Initial capacity. */ - stack.cmds = safe_calloc(sizeof(void*) * stack.cmds_capacity); - trace_entry_init(&t_ruleset, toplevel_ruleset, trace_ruleset, TRACE_ALL); - while (trace(&stack, NULL, &t_ruleset)) - ; /* nothong */ } int main(int argc, char **argv) { - yyparse(); - dump_rules(); + struct rule *r, *rtmp; + int error; + + if (argc > 2) { + usage(); + } else if (argc == 2) { + yyfile = argv[1]; + if (freopen(yyfile, "r", stdin) == NULL) + err(EX_OSERR, "%s", yyfile); + } else { + yyfile = ""; + } + + error = yyparse(); + if (error != 0) + return (EX_DATAERR); + + expand_ruleset(toplevel_ruleset); + TAILQ_FOREACH_SAFE(r, &toplevel_ruleset->rules, rule_entries, rtmp) { + expand_rulecond(r, toplevel_ruleset); + } + show_ruleset(toplevel_ruleset); return (0); } ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/ipfw.hll.h#3 (text+ko) ==== @@ -28,9 +28,21 @@ #define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ## __VA_ARGS__) +TAILQ_HEAD(rule_head, rule); +TAILQ_HEAD(cond_head, cond); +TAILQ_HEAD(cmd_head, cmd); + struct ruleset { TAILQ_ENTRY(ruleset) ruleset_entries; - TAILQ_HEAD(, rule) rules; + struct rule_head rules; + char *name; + int count; + int lineno; +}; + +struct condset { + TAILQ_ENTRY(condset) condset_entries; + struct cond_head conds; char *name; int count; int lineno; @@ -38,23 +50,15 @@ struct rule { TAILQ_ENTRY(rule) rule_entries; - TAILQ_HEAD(, cmd) actions; + struct cmd_head actions; struct ruleset *action_ruleset; struct cond *cond; int lineno; }; -struct condset { - TAILQ_ENTRY(condset) condset_entries; - TAILQ_HEAD(, cond) conds; - char *name; - int count; - int lineno; -}; - struct cond { TAILQ_ENTRY(cond) cond_entries; - TAILQ_HEAD(, cmd) cmds; + struct cmd_head cmds; int lineno; }; @@ -65,8 +69,31 @@ int lineno; }; +struct var { + TAILQ_ENTRY(var) vars_entries; + char *name; + char *value; + int lineno; +}; + extern struct ruleset *toplevel_ruleset; void *safe_calloc(int size); void *safe_realloc(void *mem, int size); +int valid_name(char *name); +struct ruleset * ruleset_alloc(void); +struct ruleset * ruleset_lookup(char *name); +void rulesets_insert(struct ruleset *ruleset); +struct rule * rule_alloc(void); +struct condset * condset_alloc(void); +void condsets_insert(struct condset *condset); +struct condset * condset_lookup(char *name); +struct cond * cond_alloc(void); +void cmds_copy(struct cmd_head *dst, int insert_tail, struct cmd *begin, struct cmd *end); +struct cmd * cmd_alloc(void); +char * cmd_escape(char *s); +struct var * var_alloc(void); +struct var * var_lookup(char *name); +void var_insert(struct var *var); + ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/parse.y#3 (text+ko) ==== @@ -32,173 +32,11 @@ #include "ipfw.hll.h" -struct var { - TAILQ_ENTRY(var) vars_entries; - char *name; - char *value; - int lineno; -}; - extern char *yytext; +extern const char *yyfile; extern int yyline; extern int yylex(); -static TAILQ_HEAD(, ruleset) rulesets = TAILQ_HEAD_INITIALIZER(rulesets); -static TAILQ_HEAD(, condset) condsets = TAILQ_HEAD_INITIALIZER(condsets); -static TAILQ_HEAD(, var) vars = TAILQ_HEAD_INITIALIZER(vars); - -static int -valid_name(char *name) -{ - char *s; - - if (*name != '_' && !isalpha(*name)) - return (0); - for (s = name + 1; *s; s++) { - if (*s != '_' && !isalnum(*s)) - return (0); - } - return (1); -} - -static struct ruleset * -ruleset_alloc(void) -{ - struct ruleset *r; - - r = safe_calloc(sizeof(struct ruleset)); - r->lineno = yyline; - TAILQ_INIT(&r->rules); - return (r); -} - -static struct ruleset * -ruleset_lookup(char *name) -{ - struct ruleset *r; - - TAILQ_FOREACH(r, &rulesets, ruleset_entries) { - if (strcmp(r->name, name) == 0) - return (r); - } - return (NULL); -} - -static void -rulesets_insert(struct ruleset *ruleset) -{ - struct ruleset *dup; - - dup = ruleset_lookup(ruleset->name); - if (dup != NULL) - errx(EX_DATAERR, "line %d: ruleset '%s' is already defined at line %d", - ruleset->lineno, ruleset->name, dup->lineno); - TAILQ_INSERT_TAIL(&rulesets, ruleset, ruleset_entries); - ruleset->count++; -} - -static struct rule * -rule_alloc(void) -{ - struct rule *r; - - r = safe_calloc(sizeof(struct rule)); - TAILQ_INIT(&r->actions); - r->lineno = yyline; - return (r); -} - -static struct condset * -condset_alloc(void) -{ - struct condset *r; - - r = safe_calloc(sizeof(struct condset)); - r->lineno = yyline; - TAILQ_INIT(&r->conds); - return (r); -} - -static struct condset * -condset_lookup(char *name) -{ - struct condset *r; - - TAILQ_FOREACH(r, &condsets, condset_entries) { - if (strcmp(r->name, name) == 0) - return (r); - } - return (NULL); -} - -static void -condsets_insert(struct condset *condset) -{ - struct condset *dup; - - dup = condset_lookup(condset->name); - if (dup != NULL) - errx(EX_DATAERR, "line %d: condition '%s' is already defined at line %d", - condset->lineno, condset->name, dup->lineno); - TAILQ_INSERT_TAIL(&condsets, condset, condset_entries); - condset->count++; -} - -static struct cond * -cond_alloc(void) -{ - struct cond *r; - - r = safe_calloc(sizeof(struct cond)); - r->lineno = yyline; - TAILQ_INIT(&r->cmds); - return (r); -} - -static struct cmd * -cmd_alloc(void) -{ - struct cmd *r; - - r = safe_calloc(sizeof(struct cmd)); - r->lineno = yyline; - return (r); -} - -static struct var * -var_alloc(void) -{ - struct var *r; - - r = safe_calloc(sizeof(struct var)); - r->lineno = yyline; - return (r); -} - -static struct var * -var_lookup(char *name) -{ - struct var *r; - - TAILQ_FOREACH(r, &vars, vars_entries) { - if (strcmp(r->name, name) == 0) - return (r); - } - return (NULL); -} - -static void -var_insert(struct var *var) -{ - struct var *dup; - - dup = var_lookup(var->name); - if (dup != NULL) - errx(EX_DATAERR, "line %d: variable '%s' is already defined at line %d", - var->lineno, var->name, dup->lineno); - TAILQ_INSERT_TAIL(&vars, var, vars_entries); -} - %} %union { @@ -242,7 +80,7 @@ : define_list rule_list { if ($2 == NULL) - errx(EX_DATAERR, "line %d: top level ruleset is empty", yyline); + errx(EX_DATAERR, "%s:%d: top level ruleset is empty", yyfile, yyline); toplevel_ruleset = $2; } ; @@ -375,7 +213,7 @@ $$->lineno = $2.lineno; $$->action_ruleset = ruleset_lookup($2.s); if ($$->action_ruleset == NULL) - errx(EX_DATAERR, "line %d: ruleset not found: %s", $$->lineno, $2.s); + errx(EX_DATAERR, "%s:%d: ruleset not found: %s", yyfile, $$->lineno, $2.s); } | rule_action_list { @@ -437,7 +275,7 @@ $$->lineno = $2.lineno; $$->cmd_condset = condset_lookup($2.s); if ($$->cmd_condset == NULL) - errx(EX_DATAERR, "line %d: condition set not found: %s", $$->lineno, $2.s); + errx(EX_DATAERR, "%s:%d: condition set not found: %s", yyfile, $$->lineno, $2.s); } | str { @@ -451,7 +289,7 @@ : STR { if (!valid_name($1.s)) - errx(EX_DATAERR, "line %d: invalid name '%s'", $1.lineno, $1.s); + errx(EX_DATAERR, "%s:%d: invalid name '%s'", yyfile, $1.lineno, $1.s); $$ = $1; } ; @@ -468,13 +306,13 @@ v = p + 2; if (p[1] != '{' || (p = strchr(v, '}')) == NULL) { errx(EX_DATAERR, - "line %d: syntax error: variable expansion failed", yyline); + "%s:%d: syntax error: variable expansion failed", yyfile, yyline); } else { *p = '\0'; var = var_lookup(v); *p = '}'; if (var == NULL) - errx(EX_DATAERR, "line %d: variable not found: %s", yyline, v); + errx(EX_DATAERR, "%s:%d: variable not found: %s", yyfile, yyline, v); l = (v - s - 2) + strlen(var->value) + strlen(p + 1) + 1; sn = safe_calloc(l); memcpy(sn, s, v - s - 2); @@ -483,20 +321,6 @@ s = sn; } } -/* - if (strchr(s, ' ') != NULL || strchr(s, '"') != NULL) { - sn = safe_calloc(strlen(s) * 2 + 3); - p = sn; - *(p++) = '"'; - for (; *s; s++, p++) { - if (*s == '"') - *(p++) = '\\'; - *p = *s; - } - *(p++) = '"'; - s = sn; - } -*/ $$.s = s; $$.lineno = $1.lineno; } @@ -507,9 +331,9 @@ void yyerror(char *s) { if (yytext) - errx(EX_DATAERR, "line %d: '%s': %s", yyline, yytext, s); + warnx("%s:%d: '%s': %s", yyfile, yyline, yytext, s); else - errx(EX_DATAERR, "line %d: %s", yyline, s); + warnx("%s:%d: %s", yyfile, yyline, s); } ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/subr.c#2 (text+ko) ==== @@ -1,9 +1,18 @@ +#include +#include #include -#include +#include #include #include "ipfw.hll.h" +extern int yyline; +extern const char * yyfile; + +static TAILQ_HEAD(, ruleset) rulesets = TAILQ_HEAD_INITIALIZER(rulesets); +static TAILQ_HEAD(, condset) condsets = TAILQ_HEAD_INITIALIZER(condsets); +static TAILQ_HEAD(, var) vars = TAILQ_HEAD_INITIALIZER(vars); + void *safe_calloc(int size) { void *r; @@ -24,3 +33,204 @@ return r; } +int +valid_name(char *name) +{ + char *s; + + if (*name != '_' && !isalpha(*name)) + return (0); + for (s = name + 1; *s; s++) { + if (*s != '_' && !isalnum(*s)) + return (0); + } + return (1); +} + +struct ruleset * +ruleset_alloc(void) +{ + struct ruleset *r; + + r = safe_calloc(sizeof(struct ruleset)); + r->lineno = yyline; + TAILQ_INIT(&r->rules); + return (r); +} + +struct ruleset * +ruleset_lookup(char *name) +{ + struct ruleset *r; + + TAILQ_FOREACH(r, &rulesets, ruleset_entries) { + if (strcmp(r->name, name) == 0) + return (r); + } + return (NULL); +} + +void +rulesets_insert(struct ruleset *ruleset) +{ + struct condset *cdup; + struct ruleset *rdup; + + rdup = ruleset_lookup(ruleset->name); + if (rdup != NULL) + errx(EX_DATAERR, "%s:%d: ruleset '%s' is already defined at line %d", + yyfile, ruleset->lineno, ruleset->name, rdup->lineno); + cdup = condset_lookup(ruleset->name); + if (cdup != NULL) + errx(EX_DATAERR, "%s:%d: condition '%s' is defined at line %d", + yyfile, ruleset->lineno, ruleset->name, cdup->lineno); + TAILQ_INSERT_TAIL(&rulesets, ruleset, ruleset_entries); + ruleset->count++; +} + +struct rule * +rule_alloc(void) +{ + struct rule *r; + + r = safe_calloc(sizeof(struct rule)); + TAILQ_INIT(&r->actions); + r->lineno = yyline; + r->cond = cond_alloc(); + return (r); +} + +struct condset * +condset_alloc(void) +{ + struct condset *r; + + r = safe_calloc(sizeof(struct condset)); + r->lineno = yyline; + TAILQ_INIT(&r->conds); + return (r); +} + +void +condsets_insert(struct condset *condset) +{ + struct condset *cdup; + struct ruleset *rdup; + + cdup = condset_lookup(condset->name); + if (cdup != NULL) + errx(EX_DATAERR, "%s:%d: condition '%s' is already defined at line %d", + yyfile, condset->lineno, condset->name, cdup->lineno); + rdup = ruleset_lookup(condset->name); + if (rdup != NULL) + errx(EX_DATAERR, "%s:%d: ruleset '%s' is defined at line %d", + yyfile, condset->lineno, condset->name, rdup->lineno); + TAILQ_INSERT_TAIL(&condsets, condset, condset_entries); + condset->count++; +} + +struct condset * +condset_lookup(char *name) +{ + struct condset *r; + + TAILQ_FOREACH(r, &condsets, condset_entries) { + if (strcmp(r->name, name) == 0) + return (r); + } + return (NULL); +} + +struct cond * +cond_alloc(void) +{ + struct cond *r; + + r = safe_calloc(sizeof(struct cond)); + r->lineno = yyline; + TAILQ_INIT(&r->cmds); + return (r); +} + +void +cmds_copy(struct cmd_head *dst, int insert_tail, struct cmd *begin, struct cmd *end) +{ + struct cmd *i, *n; + + for (i = begin; i != end && i != NULL; i = TAILQ_NEXT(i, cmd_entries)) { + n = safe_calloc(sizeof(struct cmd)); + n->cmd = i->cmd; + n->cmd_condset = i->cmd_condset; + n->lineno = i->lineno; + if (insert_tail) + TAILQ_INSERT_TAIL(dst, n, cmd_entries); + else + TAILQ_INSERT_HEAD(dst, n, cmd_entries); + } +} + +struct cmd * +cmd_alloc(void) +{ + struct cmd *r; + + r = safe_calloc(sizeof(struct cmd)); + r->lineno = yyline; + return (r); +} + +char * +cmd_escape(char *s) +{ + char *sn, *p; + + if (strchr(s, ' ') == NULL && strchr(s, '"') == NULL) + return s; + + sn = safe_calloc(strlen(s) * 2 + 3); + p = sn; + *(p++) = '"'; + for (; *s; s++, p++) { + if (*s == '"') + *(p++) = '\\'; + *p = *s; + } + *(p++) = '"'; + + return (sn); +} + +struct var * +var_alloc(void) +{ + struct var *r; + + r = safe_calloc(sizeof(struct var)); + r->lineno = yyline; + return (r); +} + +struct var * +var_lookup(char *name) +{ + struct var *r; + + TAILQ_FOREACH(r, &vars, vars_entries) { + if (strcmp(r->name, name) == 0) + return (r); + } + return (NULL); +} + +void +var_insert(struct var *var) +{ + struct var *dup; + + dup = var_lookup(var->name); + if (dup != NULL) + errx(EX_DATAERR, "%s:%d: variable '%s' is already defined at line %d", + yyfile, var->lineno, var->name, dup->lineno); + TAILQ_INSERT_TAIL(&vars, var, vars_entries); +} + ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/Makefile#2 (text+ko) ==== @@ -1,7 +1,5 @@ -TESTS+= test0 test1 - -# TODO -TESTS+= test2 test3 +TESTS+= test0 test1 test2 test3 test4 test5 test6 test7 +TESTS+= t_dup_name1 t_dup_name2 all: test ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test1.err#2 (text+ko) ==== @@ -1,1 +1,1 @@ -ipfw.hll: line 1: 'error': syntax error +ipfw.hll: :1: 'error': syntax error ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test2#2 (text+ko) ==== @@ -1,11 +1,9 @@ -define q { - cond q11 q12 - cond q21 q22 -} +# sdfsdf >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Mon Aug 10 09:55:48 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B9B511065673; Mon, 10 Aug 2009 09:55:47 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 79A6A106564A for ; Mon, 10 Aug 2009 09:55:47 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 68F408FC15 for ; Mon, 10 Aug 2009 09:55:47 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7A9tlEE003896 for ; Mon, 10 Aug 2009 09:55:47 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7A9tlwx003894 for perforce@freebsd.org; Mon, 10 Aug 2009 09:55:47 GMT (envelope-from trasz@freebsd.org) Date: Mon, 10 Aug 2009 09:55:47 GMT Message-Id: <200908100955.n7A9tlwx003894@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167163 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 09:55:48 -0000 http://perforce.freebsd.org/chv.cgi?CH=167163 Change 167163 by trasz@trasz_anger on 2009/08/10 09:55:02 Callback may cause loginclass refcount to drop to zero and be freed; use LIST_FOREACH_SAFE instead of LIST_FOREACH. Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_loginclass.c#6 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_loginclass.c#6 (text+ko) ==== @@ -208,9 +208,9 @@ const struct hrl_rule *filter, void *arg3) { int error; - struct loginclass *lc; + struct loginclass *lc, *lctmp; - LIST_FOREACH(lc, &loginclasses, lc_next) { + LIST_FOREACH_SAFE(lc, &loginclasses, lc_next, lctmp) { error = (callback)(&lc->lc_limits, filter, arg3); if (error) return (error); From owner-p4-projects@FreeBSD.ORG Mon Aug 10 10:01:54 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9E4121065670; Mon, 10 Aug 2009 10:01:54 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5EBE1106566B for ; Mon, 10 Aug 2009 10:01:54 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 3488E8FC23 for ; Mon, 10 Aug 2009 10:01:54 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7AA1s30004307 for ; Mon, 10 Aug 2009 10:01:54 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7AA1seE004305 for perforce@freebsd.org; Mon, 10 Aug 2009 10:01:54 GMT (envelope-from trasz@freebsd.org) Date: Mon, 10 Aug 2009 10:01:54 GMT Message-Id: <200908101001.n7AA1seE004305@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167164 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 10:01:55 -0000 http://perforce.freebsd.org/chv.cgi?CH=167164 Change 167164 by trasz@trasz_anger on 2009/08/10 10:01:38 Fix two LORs. Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#51 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_resource.c#22 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#51 (text+ko) ==== @@ -57,6 +57,7 @@ /* Default buffer size for hrl_get_rules(2). */ #define HRL_DEFAULT_BUFSIZE 4096 +#define HRL_LOG_BUFSIZE 128 int hrl_group_accounting = 0; @@ -329,8 +330,9 @@ int64_t available[HRL_RESOURCE_MAX]; struct hrl_rule *rule; struct hrl_limit *limit; - struct sbuf *sb; + struct sbuf sb; int should_deny = 0; + char *buf; mtx_assert(&hrl_lock, MA_OWNED); @@ -368,13 +370,19 @@ should_deny = 1; break; case HRL_ACTION_LOG: - sb = sbuf_new_auto(); - hrl_rule_to_sbuf(sb, rule); - sbuf_finish(sb); + buf = malloc(HRL_LOG_BUFSIZE, M_HRL, M_NOWAIT); + if (buf == NULL) { + printf("hrl_enforce_proc: out of memory\n"); + continue; + } + sbuf_new(&sb, buf, HRL_LOG_BUFSIZE, SBUF_FIXEDLEN); + hrl_rule_to_sbuf(&sb, rule); + sbuf_finish(&sb); printf("resource limit \"%s\" exceeded by process %d (%s), " - "uid %d\n", sbuf_data(sb), p->p_pid, p->p_comm, + "uid %d\n", sbuf_data(&sb), p->p_pid, p->p_comm, p->p_ucred->cr_uid); - sbuf_delete(sb); + sbuf_delete(&sb); + free(buf, M_HRL); break; case HRL_ACTION_SIGHUP: hrl_deferred_psignal(p, SIGHUP); @@ -1493,17 +1501,18 @@ return (EOPNOTSUPP); } - p = pfind(filter->hr_subject_id); - if (p == NULL) { - hrl_rule_release(filter); - return (ESRCH); - } - again: buf = malloc(bufsize, M_HRL, M_WAITOK); sb = sbuf_new(NULL, buf, bufsize, SBUF_FIXEDLEN); KASSERT(sb != NULL, ("sbuf_new failed")); + p = pfind(filter->hr_subject_id); + if (p == NULL) { + sbuf_delete(sb); + error = ESRCH; + goto out; + } + mtx_lock(&hrl_lock); LIST_FOREACH(limit, &p->p_limits, hl_next) { hrl_rule_to_sbuf(sb, limit->hl_rule); @@ -1525,6 +1534,7 @@ sbuf_setpos(sb, sbuf_len(sb) - 1); error = hrl_write_outbuf(sb, uap->outbufp, uap->outbuflen); +out: hrl_rule_release(filter); free(buf, M_HRL); return (error); ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_resource.c#22 (text+ko) ==== From owner-p4-projects@FreeBSD.ORG Mon Aug 10 10:03:57 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 41F7C106567A; Mon, 10 Aug 2009 10:03:57 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 00C311065676 for ; Mon, 10 Aug 2009 10:03:57 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id CA7AB8FC15 for ; Mon, 10 Aug 2009 10:03:56 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7AA3ufn005419 for ; Mon, 10 Aug 2009 10:03:56 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7AA3uui005417 for perforce@freebsd.org; Mon, 10 Aug 2009 10:03:56 GMT (envelope-from hselasky@FreeBSD.org) Date: Mon, 10 Aug 2009 10:03:56 GMT Message-Id: <200908101003.n7AA3uui005417@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 167165 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 10:03:58 -0000 http://perforce.freebsd.org/chv.cgi?CH=167165 Change 167165 by hselasky@hselasky_laptop001 on 2009/08/10 10:03:29 USB input: - patch to stop keyboard timer when no keys are pressed Affected files ... .. //depot/projects/usb/src/sys/dev/usb/input/ukbd.c#29 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/input/ukbd.c#29 (text+ko) ==== @@ -165,6 +165,7 @@ #define UKBD_FLAG_APPLE_EJECT 0x0040 #define UKBD_FLAG_APPLE_FN 0x0080 #define UKBD_FLAG_APPLE_SWAP 0x0100 +#define UKBD_FLAG_TIMER_RUNNING 0x0200 int32_t sc_mode; /* input mode (K_XLATE,K_RAW,K_CODE) */ int32_t sc_state; /* shift/lock key state */ @@ -279,6 +280,25 @@ static device_detach_t ukbd_detach; static device_resume_t ukbd_resume; +static uint8_t +ukbd_any_key_pressed(struct ukbd_softc *sc) +{ + uint8_t i; + uint8_t j; + + for (j = i = 0; i < UKBD_NKEYCODE; i++) + j |= sc->sc_odata.keycode[i]; + + return (j ? 1 : 0); +} + +static void +ukbd_start_timer(struct ukbd_softc *sc) +{ + sc->sc_flags |= UKBD_FLAG_TIMER_RUNNING; + usb_callout_reset(&sc->sc_callout, hz / 40, &ukbd_timeout, sc); +} + static void ukbd_put_key(struct ukbd_softc *sc, uint32_t key) { @@ -302,9 +322,6 @@ static void ukbd_do_poll(struct ukbd_softc *sc, uint8_t wait) { - uint8_t i; - uint8_t j; - DPRINTFN(2, "polling\n"); while (sc->sc_inputs == 0) { @@ -313,10 +330,7 @@ /* Delay-optimised support for repetition of keys */ - for (j = i = 0; i < UKBD_NKEYCODE; i++) - j |= sc->sc_odata.keycode[i]; - - if (j) { + if (ukbd_any_key_pressed(sc)) { /* a key is pressed - need timekeeping */ DELAY(1000); @@ -480,7 +494,11 @@ } ukbd_interrupt(sc); - usb_callout_reset(&sc->sc_callout, hz / 40, &ukbd_timeout, sc); + if (ukbd_any_key_pressed(sc)) { + ukbd_start_timer(sc); + } else { + sc->sc_flags &= ~UKBD_FLAG_TIMER_RUNNING; + } } static uint8_t @@ -592,6 +610,12 @@ } ukbd_interrupt(sc); + + if (!(sc->sc_flags & UKBD_FLAG_TIMER_RUNNING)) { + if (ukbd_any_key_pressed(sc)) { + ukbd_start_timer(sc); + } + } } case USB_ST_SETUP: tr_setup: @@ -657,11 +681,11 @@ usbd_xfer_set_frames(xfer, 2); usbd_transfer_submit(xfer); } - return; + break; default: /* Error */ DPRINTFN(0, "error=%s\n", usbd_errstr(error)); - return; + break; } } @@ -869,9 +893,6 @@ usbd_transfer_start(sc->sc_xfer[UKBD_INTR_DT]); - /* start the timer */ - - ukbd_timeout(sc); mtx_unlock(&Giant); return (0); /* success */ From owner-p4-projects@FreeBSD.ORG Mon Aug 10 13:03:12 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8A9A71065675; Mon, 10 Aug 2009 13:03:12 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 44DC7106566C for ; Mon, 10 Aug 2009 13:03:12 +0000 (UTC) (envelope-from gabor@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 341178FC15 for ; Mon, 10 Aug 2009 13:03:12 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7AD3C29032750 for ; Mon, 10 Aug 2009 13:03:12 GMT (envelope-from gabor@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7AD3Ck4032748 for perforce@freebsd.org; Mon, 10 Aug 2009 13:03:12 GMT (envelope-from gabor@freebsd.org) Date: Mon, 10 Aug 2009 13:03:12 GMT Message-Id: <200908101303.n7AD3Ck4032748@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gabor@freebsd.org using -f From: Gabor Kovesdan To: Perforce Change Reviews Cc: Subject: PERFORCE change 167168 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 13:03:13 -0000 http://perforce.freebsd.org/chv.cgi?CH=167168 Change 167168 by gabor@gabor_aspire on 2009/08/10 13:03:01 MFHg: - Add a working regression test (reference tables not yet added) - Nits to conversion tables Affected files ... .. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/Makefile#3 edit Differences ... ==== //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/Makefile#3 (text+ko) ==== @@ -1,12 +1,66 @@ -# $FreeBSD$ +# FreeBSD + +SUBDIR= tablegen + +ENCODING= ASCII + +ENCODING+= UTF-7 +ENCODING+= UTF-8 +ENCODING+= UTF-16LE +ENCODING+= UTF-16BE +ENCODING+= UTF-32LE +#ENCODING+= UTF-32BE + +ENCODING+= ISO8859-1 +ENCODING+= ISO8859-2 +ENCODING+= ISO8859-3 +ENCODING+= ISO8859-4 +ENCODING+= ISO8859-5 +ENCODING+= ISO8859-6 +ENCODING+= ISO8859-7 +ENCODING+= ISO8859-8 +ENCODING+= ISO8859-9 +ENCODING+= ISO8859-10 +ENCODING+= ISO8859-11 +ENCODING+= ISO8859-13 +ENCODING+= ISO8859-14 +ENCODING+= ISO8859-15 +ENCODING+= ISO8859-16 + +ENCODING+= ARMSCII-8 +ENCODING+= BIG5 +ENCODING+= BIG5HKSCS +#ENCODING+= CP1131 +ENCODING+= CP1251 +ENCODING+= CP866 +ENCODING+= CP949 +ENCODING+= GB18030 +ENCODING+= GB2312 +ENCODING+= GBK +ENCODING+= VISCII +ENCODING+= KOI8-R +ENCODING+= KOI8-U +ENCODING+= PT154 +ENCODING+= SHIFT_JIS +ENCODING+= EUC-CN +ENCODING+= EUC-JP +ENCODING+= EUC-KR -PROG= gen-rev -NO_MAN= yes +GEN_FWD?= ${.CURDIR}/tablegen/tablegen +GEN_REV?= ${.CURDIR}/tablegen/tablegen -r +CMP?= ${.CURDIR}/tablegen/cmp.sh -CFLAGS+= -I/usr/local/include -g -LDFLAGS+= -L/usr/local/lib +check: ${SUBDIR} + mkdir -p output +.for enc in ${ENCODING} + @echo "Checking ${enc} --> UTF-32 ..." + @${GEN_FWD} ${enc} >output/${enc} + @${CMP} ref/${enc} output/${enc} + @echo "Checking UTF-32 --> ${enc} ..." + @${GEN_REV} ${enc} >output/${enc}-rev + @${CMP} ref/${enc}-rev output/${enc}-rev +.endfor -LDADD= -liconv -DPADD= /usr/local/lib/libiconv.a +CLEANDIRS+= output .include From owner-p4-projects@FreeBSD.ORG Mon Aug 10 13:04:16 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 660D71065673; Mon, 10 Aug 2009 13:04:16 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1781C106566B for ; Mon, 10 Aug 2009 13:04:16 +0000 (UTC) (envelope-from gabor@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 694EC8FC24 for ; Mon, 10 Aug 2009 13:04:13 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7AD4Dgm032807 for ; Mon, 10 Aug 2009 13:04:13 GMT (envelope-from gabor@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7AD4DZD032805 for perforce@freebsd.org; Mon, 10 Aug 2009 13:04:13 GMT (envelope-from gabor@freebsd.org) Date: Mon, 10 Aug 2009 13:04:13 GMT Message-Id: <200908101304.n7AD4DZD032805@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gabor@freebsd.org using -f From: Gabor Kovesdan To: Perforce Change Reviews Cc: Subject: PERFORCE change 167169 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 13:04:18 -0000 http://perforce.freebsd.org/chv.cgi?CH=167169 Change 167169 by gabor@gabor_aspire on 2009/08/10 13:03:46 MFHg Affected files ... .. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/gen-rev.c#3 delete .. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/tablegen/Makefile#1 add .. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/tablegen/cmp.sh#1 add .. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/tablegen/tablegen.c#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Mon Aug 10 13:25:37 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4D8081065674; Mon, 10 Aug 2009 13:25:37 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0DD751065670 for ; Mon, 10 Aug 2009 13:25:37 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id D7C8D8FC16 for ; Mon, 10 Aug 2009 13:25:36 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7ADPac0034377 for ; Mon, 10 Aug 2009 13:25:36 GMT (envelope-from anchie@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7ADPaHr034375 for perforce@freebsd.org; Mon, 10 Aug 2009 13:25:36 GMT (envelope-from anchie@FreeBSD.org) Date: Mon, 10 Aug 2009 13:25:36 GMT Message-Id: <200908101325.n7ADPaHr034375@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anchie@FreeBSD.org using -f From: Ana Kukec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167170 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 13:25:38 -0000 http://perforce.freebsd.org/chv.cgi?CH=167170 Change 167170 by anchie@anchie_malimis on 2009/08/10 13:25:07 Minor corrections. Affected files ... .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/icmp6.c#19 edit .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/send.c#21 edit Differences ... ==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/icmp6.c#19 (text+ko) ==== @@ -814,9 +814,12 @@ goto badcode; if (icmp6len < sizeof(struct nd_neighbor_solicit)) goto badlen; +#if 0 if ((n = m_copym(m, 0, M_COPYALL, M_DONTWAIT)) == NULL) { +#endif + if ((n = m_dup(m, M_DONTWAIT)) == NULL) { - /* Send incoming SeND-protected/ND packet to user space. */ + /* Send incoming SeND/ND packet to user space. */ if (send_input_hook != NULL) { send_input_hook(m, ifp, SND_IN, ip6len); return (IPPROTO_DONE); ==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/send.c#21 (text+ko) ==== @@ -19,7 +19,7 @@ #include static int -send_output(struct mbuf *m, struct ifnet *ifp, int in) +send_output(struct mbuf *m, struct ifnet *ifp, int direction) { struct ip6_hdr *ip6; struct sockaddr_in6 *dst; @@ -34,7 +34,7 @@ * Outgoing packets are sent out using if_output(). */ - switch (in) { + switch (direction) { case SND_IN: icmp6len = m->m_pkthdr.len - sizeof(struct ip6_hdr); printf("send_output: m_pkthdr.len = %d\n", m->m_pkthdr.len); @@ -79,13 +79,16 @@ return (*ifp->if_output)(ifp, m, (struct sockaddr *)dst, NULL); //return (0); break; + + default: + panic("Must be either SND_IN or SND_OUT."); } return (0); } static int -send_input(struct mbuf *m, struct ifnet *ifp, int in, int msglen) +send_input(struct mbuf *m, struct ifnet *ifp, int direction, int msglen) { struct ip6_hdr *ip6; @@ -97,7 +100,7 @@ /* * Send incoming or outgoing traffic to the user space either to be * protected (outgoing) or validated (incoming) according to rfc3971. */ - rt_securendmsg(ifp, in, ip6, msglen); + rt_securendmsg(ifp, direction, ip6, msglen); return (0); } From owner-p4-projects@FreeBSD.ORG Mon Aug 10 13:25:39 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5C95110656ED; Mon, 10 Aug 2009 13:25:37 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1E92A1065672 for ; Mon, 10 Aug 2009 13:25:37 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 0DA9E8FC1E for ; Mon, 10 Aug 2009 13:25:37 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7ADPaAe034382 for ; Mon, 10 Aug 2009 13:25:36 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7ADPa27034380 for perforce@freebsd.org; Mon, 10 Aug 2009 13:25:36 GMT (envelope-from hselasky@FreeBSD.org) Date: Mon, 10 Aug 2009 13:25:36 GMT Message-Id: <200908101325.n7ADPa27034380@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 167171 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 13:25:39 -0000 http://perforce.freebsd.org/chv.cgi?CH=167171 Change 167171 by hselasky@hselasky_laptop001 on 2009/08/10 13:25:35 USB misc: - move fflags check to correct function. - reported by: Krassimir Slavchev Affected files ... .. //depot/projects/usb/src/sys/dev/usb/misc/ufm.c#10 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/misc/ufm.c#10 (text+ko) ==== @@ -86,11 +86,9 @@ static device_detach_t ufm_detach; static usb_fifo_ioctl_t ufm_ioctl; -static usb_fifo_open_t ufm_open; static struct usb_fifo_methods ufm_fifo_methods = { .f_ioctl = &ufm_ioctl, - .f_open = &ufm_open, .basename[0] = "ufm", }; @@ -179,15 +177,6 @@ } static int -ufm_open(struct usb_fifo *dev, int fflags) -{ - if ((fflags & (FWRITE | FREAD)) != (FWRITE | FREAD)) { - return (EACCES); - } - return (0); -} - -static int ufm_do_req(struct ufm_softc *sc, uint8_t request, uint16_t value, uint16_t index, uint8_t *retbuf) { @@ -315,6 +304,10 @@ struct ufm_softc *sc = usb_fifo_softc(fifo); int error = 0; + if ((fflags & (FWRITE | FREAD)) != (FWRITE | FREAD)) { + return (EACCES); + } + switch (cmd) { case FM_SET_FREQ: error = ufm_set_freq(sc, addr); From owner-p4-projects@FreeBSD.ORG Mon Aug 10 13:34:48 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6CE561065675; Mon, 10 Aug 2009 13:34:47 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2C579106564A for ; Mon, 10 Aug 2009 13:34:47 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 1B6FA8FC1F for ; Mon, 10 Aug 2009 13:34:47 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7ADYkbl034994 for ; Mon, 10 Aug 2009 13:34:46 GMT (envelope-from anchie@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7ADYkaL034992 for perforce@freebsd.org; Mon, 10 Aug 2009 13:34:46 GMT (envelope-from anchie@FreeBSD.org) Date: Mon, 10 Aug 2009 13:34:46 GMT Message-Id: <200908101334.n7ADYkaL034992@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anchie@FreeBSD.org using -f From: Ana Kukec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167173 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 13:34:48 -0000 http://perforce.freebsd.org/chv.cgi?CH=167173 Change 167173 by anchie@anchie_malimis on 2009/08/10 13:34:32 Minor changes. Affected files ... .. //depot/projects/soc2009/anchie_send/src/sys/net/rtsock.c#11 edit .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/nd6.c#16 edit Differences ... ==== //depot/projects/soc2009/anchie_send/src/sys/net/rtsock.c#11 (text+ko) ==== @@ -533,6 +533,9 @@ ifp = ifnet_byindex(rtm->rtm_index); if (ifp) { m_adj(m, sizeof (struct if_announcemsghdr)); +#if 0 + m->m_data += sizeof (struct if_announcemsghdr); +#endif printf("rtm->rtm_index = %d\n", rtm->rtm_index); send_output_hook(m, ifp, SND_IN); } else { @@ -543,11 +546,11 @@ case RTM_SND_OUT: ifp = ifnet_byindex(rtm->rtm_index); if (ifp) { -#if 0 m_adj(m, sizeof (struct if_announcemsghdr)); -#endif printf("if_index = %u\n", ifp->if_index); +#if 0 m->m_data += sizeof (struct if_announcemsghdr); +#endif send_output_hook(m, ifp, SND_OUT); } else printf("route_output: ifp == NULL"); ==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/nd6.c#16 (text+ko) ==== @@ -1727,7 +1727,7 @@ struct ip6_hdr *ip6; int error = 0; int flags = 0; - int ip6len; + int ip6len, skip = 0; unsigned short *nd_type; printf("%s %d\n", __FUNCTION__, __LINE__); @@ -1914,14 +1914,15 @@ if (send_input_hook != NULL) { mtag = m_tag_find(m, PACKET_TAG_ND_OUTGOING, NULL); if (mtag != NULL) { + skip = 1; printf("%s: ND_OUTGOING tag found.\n", __FUNCTION__); nd_type = (unsigned short *)(mtag + 1); - send_input_hook(m, ifp, 0, ip6len); + send_input_hook(m, ifp, SND_OUT, ip6len); } else error = EOPNOTSUPP; return error; - } else { + } /* * We were passed in a pointer to an lle with the lock held @@ -1963,7 +1964,7 @@ } error = (*ifp->if_output)(ifp, m, (struct sockaddr *)dst, NULL); printf("%s %d: nakon if_output()\n", __FUNCTION__, __LINE__); - } + return (error); bad: @@ -1977,8 +1978,10 @@ else LLE_RUNLOCK(ln); } - if (m) - m_freem(m); + if (skip) { + if (m) + m_freem(m); + } return (error); } #undef senderr @@ -2059,6 +2062,8 @@ { struct llentry *ln; + printf("nd6_storelladdr\n"); + *lle = NULL; IF_AFDATA_UNLOCK_ASSERT(ifp); if (m->m_flags & M_MCAST) { @@ -2075,6 +2080,7 @@ #endif case IFT_BRIDGE: case IFT_ISO88025: + printf("nd6_storelladdr, IFT_ETHER\n"); ETHER_MAP_IPV6_MULTICAST(&SIN6(dst)->sin6_addr, desten); return (0); @@ -2099,13 +2105,23 @@ /* * the entry should have been created in nd6_store_lladdr */ + { + char ip6buf[INET6_ADDRSTRLEN]; + + printf("XXX-BZ, nd6_storelladdr: ifp=%p, xname=%s, dst=%s\n", ifp, ifp->if_xname, ip6_sprintf(ip6buf, &((struct sockaddr_in6 *)dst)->sin6_addr)); + } + IF_AFDATA_LOCK(ifp); ln = lla_lookup(LLTABLE6(ifp), 0, dst); IF_AFDATA_UNLOCK(ifp); + /* ToFix: ln == NULL! lla_lookup -> generic link layer lookup func. */ if ((ln == NULL) || !(ln->la_flags & LLE_VALID)) { - if (ln != NULL) + printf("ln == NULL etc...\n"); + if (ln != NULL) { LLE_RUNLOCK(ln); + } /* this could happen, if we could not allocate memory */ + printf("nd6_storelladdr: could not allocate memory.\n"); m_freem(m); return (1); } From owner-p4-projects@FreeBSD.ORG Mon Aug 10 13:37:14 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 10B531065674; Mon, 10 Aug 2009 13:37:14 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C2BF4106566C for ; Mon, 10 Aug 2009 13:37:13 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id AFDE78FC33 for ; Mon, 10 Aug 2009 13:37:13 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7ADbDhe035225 for ; Mon, 10 Aug 2009 13:37:13 GMT (envelope-from anchie@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7ADatKF035203 for perforce@freebsd.org; Mon, 10 Aug 2009 13:36:55 GMT (envelope-from anchie@FreeBSD.org) Date: Mon, 10 Aug 2009 13:36:55 GMT Message-Id: <200908101336.n7ADatKF035203@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anchie@FreeBSD.org using -f From: Ana Kukec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167174 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 13:37:15 -0000 http://perforce.freebsd.org/chv.cgi?CH=167174 Change 167174 by anchie@anchie_desnimis on 2009/08/10 13:36:55 Update. Affected files ... .. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/cpu_switch.S#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/exception.S#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/genassym.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/identcpu.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/initcpu.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/intr_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/io_apic.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/local_apic.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/machdep.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/mp_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/msi.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/pmap.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/sys_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/vm_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/conf/GENERIC#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/ia32/ia32_exception.S#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/ia32/ia32_reg.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/ia32/ia32_signal.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/include/cpufunc.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/include/intr_machdep.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/include/md_var.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/include/param.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/include/pcb.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/include/pmap.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/include/vm.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/amd64/isa/atpic.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/isa/clock.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/linux32/linux32_sysvec.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/amd64/pci/pci_bus.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/arm/busdma_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/arm/cpufunc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/arm/elf_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/arm/elf_trampoline.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/arm/minidump_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/arm/pmap.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/arm/vm_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/at91/at91_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/at91/if_ate.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/conf/AVILA#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/conf/AVILA.hints#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/conf/CAMBRIA#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/conf/CAMBRIA.hints#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/conf/DB-78XXX#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/conf/DB-88F5XXX#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/conf/DB-88F6XXX#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/include/param.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/include/pmap.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/include/vm.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/arm/mv/discovery/discovery.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/mv/files.mv#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/mv/kirkwood/kirkwood.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/mv/mv_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/mv/mv_sata.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/arm/mv/mvreg.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/mv/mvwin.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/mv/orion/orion.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/sa11x0/assabet_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/i80321/ep80219_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/i80321/iq31244_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/i8134x/crb_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/avila_ata.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/avila_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/cambria_exp_space.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/files.avila#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/if_npe.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/ixp425.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/ixp425reg.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/ixp425var.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/ixp425/uart_bus_ixp425.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/arm/xscale/pxa/pxa_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/boot/forth/loader.conf#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/boot/i386/libi386/biosdisk.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/boot/powerpc/uboot/version#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/bsm/audit.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/bsm/audit_kevents.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/ata/ata_all.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/cam/ata/ata_all.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/cam/ata/ata_da.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/cam/ata/ata_xpt.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/cam/cam.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/cam.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/cam_ccb.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/cam_periph.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/cam_periph.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/cam_xpt.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/cam_xpt.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/cam_xpt_internal.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/cam/cam_xpt_periph.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/scsi/scsi_all.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/scsi/scsi_cd.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/scsi/scsi_ch.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/scsi/scsi_da.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/scsi/scsi_pass.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/scsi/scsi_pt.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/scsi/scsi_sa.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/scsi/scsi_ses.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/scsi/scsi_sg.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/scsi/scsi_target.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cam/scsi/scsi_xpt.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/cddl/compat/opensolaris/kern/opensolaris_kobj.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cddl/compat/opensolaris/sys/sig.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cddl/compat/opensolaris/sys/vnode.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/common/nvpair/nvpair.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cddl/dev/dtrace/amd64/dtrace_isa.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cddl/dev/dtrace/amd64/dtrace_subr.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cddl/dev/dtrace/i386/dtrace_subr.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/freebsd32/freebsd32_ipc.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/freebsd32/freebsd32_misc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/freebsd32/freebsd32_proto.h#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/freebsd32/freebsd32_syscall.h#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/freebsd32/freebsd32_syscalls.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/freebsd32/freebsd32_sysent.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/freebsd32/syscalls.master#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/linprocfs/linprocfs.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/linux/linux_ioctl.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/linux/linux_ipc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/linux/linux_mib.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/linux/linux_signal.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/linux/linux_socket.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/ndis/kern_ndis.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/ndis/subr_ndis.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/ndis/subr_usbd.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/svr4/svr4_ipc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/svr4/svr4_sockio.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/compat/svr4/svr4_stat.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/conf/NOTES#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/conf/files#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/conf/files.amd64#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/conf/files.i386#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/conf/files.powerpc#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/conf/kmod.mk#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/conf/newvers.sh#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/conf/options#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/contrib/altq/altq/altq_subr.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/contrib/dev/acpica/compiler/aslcompile.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/contrib/dev/acpica/compiler/aslutils.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/contrib/dev/mwl/mw88W8363.fw.uu#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/contrib/ipfilter/netinet/fil.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/contrib/ngatm/netnatm/sig/sig_uni.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/contrib/pf/net/pf.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/contrib/pf/net/pf_if.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/contrib/pf/net/pf_ioctl.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/contrib/pf/net/pf_subr.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/contrib/pf/net/pfvar.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/contrib/rdma/rdma_addr.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/contrib/rdma/rdma_cma.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/ddb/db_expr.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/ddb/db_sym.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/ddb/db_variables.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/ddb/db_variables.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/ddb/ddb.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/aac/aac.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/aac/aac_disk.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/acpi_support/acpi_hp.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/dev/acpi_support/acpi_wmi.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/dev/acpi_support/acpi_wmi_if.m#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/dev/acpica/Osd/OsdSynch.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/acpica/acpi.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/acpica/acpi_battery.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/acpica/acpi_cpu.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/acpica/acpi_dock.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/acpica/acpi_pcib_acpi.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/acpica/acpi_thermal.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/adb/adb_bus.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/advansys/advansys.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/advansys/advlib.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ae/if_ae.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/age/if_age.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ahci/ahci.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/dev/ahci/ahci.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/dev/aic7xxx/aic79xx_osm.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/aic7xxx/aic7xxx_osm.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/alc/if_alc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ale/if_ale.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/amd/amd.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/amdtemp/amdtemp.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/amr/amr.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/asmc/asmc.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/asmc/asmcvar.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/ata-all.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/ata-all.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/ata-dma.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/ata-pci.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/ata-sata.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/ata-usb.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/atapi-cam.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/atapi-cd.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-acard.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-acerlabs.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-adaptec.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-ahci.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-amd.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-ati.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-cenatek.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-cypress.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-cyrix.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-highpoint.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-intel.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-ite.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-jmicron.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-marvell.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-micron.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-national.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-netcell.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-nvidia.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-promise.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-serverworks.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-siliconimage.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-sis.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-via.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ath/ah_osdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ath/ah_osdep.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ath/ath_hal/ah.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ath/ath_hal/ah.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ath/ath_hal/ah_internal.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ath/if_ath.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ath/if_athvar.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/atkbdc/psm.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/bce/if_bce.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/bce/if_bcereg.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/bfe/if_bfe.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/bge/if_bge.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/bktr/bktr_os.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/bm/if_bm.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/cas/if_cas.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/cas/if_casvar.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ciss/ciss.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ciss/cissvar.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/cpuctl/cpuctl.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/cs/if_cs.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/cxgb_adapter.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/cxgb_main.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/cxgb_sge.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/sys/mvec.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/sys/uipc_mvec.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/dc/if_dc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/de/if_de.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/drmP.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/drm_drv.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/drm_irq.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/drm_pciids.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/drm_sysctl.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/i915_dma.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/i915_drv.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/i915_drv.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/i915_irq.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/r600_cp.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/radeon_cp.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/radeon_drv.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/radeon_irq.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_82540.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_82541.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_82542.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_82571.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_82575.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_82575.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_api.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_defines.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_hw.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_ich8lan.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_ich8lan.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_mac.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_osdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_phy.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_phy.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/e1000_regs.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/if_em.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/if_em.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/if_igb.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/if_igb.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ed/if_ed.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/et/if_et.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ex/if_ex.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/fdc/fdc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/fe/if_fe.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/firewire/fwdev.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/fxp/if_fxp.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/fxp/if_fxpvar.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/gem/if_gem.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/gem/if_gem_pci.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/gem/if_gem_sbus.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/dev/gem/if_gemreg.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/gem/if_gemvar.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/hme/if_hme.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/hptmv/atapi.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/hptrr/hptrr_config.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/hwpmc/hwpmc_logging.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/hwpmc/hwpmc_mod.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ic/ns16550.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ie/if_ie.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/if_ndis/if_ndis.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/if_ndis/if_ndis_pccard.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/if_ndis/if_ndis_pci.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/if_ndis/if_ndis_usb.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ips/ips_pci.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ipw/if_ipw.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/iscsi/initiator/isc_soc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/isp.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/isp_freebsd.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/isp_freebsd.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/isp_ioctl.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/isp_library.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/isp_library.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/isp_pci.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/isp_sbus.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/isp_stds.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/isp_target.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/isp_target.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/ispmbox.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/ispreg.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/ispvar.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ispfw/asm_2300.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ispfw/asm_2400.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ispfw/asm_2500.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/dev/ispfw/ispfw.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/iwi/if_iwi.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/iwn/if_iwn.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ixgb/if_ixgb.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ixgbe/ixgbe.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ixgbe/ixgbe.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ixgbe/ixgbe_82598.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ixgbe/ixgbe_82599.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ixgbe/ixgbe_api.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ixgbe/ixgbe_api.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ixgbe/ixgbe_common.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ixgbe/ixgbe_osdep.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ixgbe/ixgbe_phy.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ixgbe/ixgbe_phy.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ixgbe/ixgbe_type.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/jme/if_jme.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/le/lance.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/lge/if_lge.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/malo/if_malo.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/md/md.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mfi/mfi.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mfi/mfivar.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mge/if_mge.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mlx/mlx.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mlx/mlxvar.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mmc/mmc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mpt/mpt.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mpt/mpt_cam.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mpt/mpt_pci.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/msk/if_msk.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mwl/if_mwl.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mwl/if_mwlvar.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mwl/mwlhal.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mwl/mwlhal.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mwl/mwlreg.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mxge/eth_z8e.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mxge/ethp_z8e.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mxge/if_mxge.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mxge/if_mxge_var.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mxge/mxge_lro.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mxge/rss_eth_z8e.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/mxge/rss_ethp_z8e.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/my/if_my.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/nfe/if_nfe.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/nge/if_nge.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/nve/if_nve.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/nxge/if_nxge.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/pccbb/pccbb.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/pci/pci.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/pcn/if_pcn.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/pdq/pdq_ifsubr.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/pst/pst-iop.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ral/rt2560.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ral/rt2661.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/re/if_re.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/rp/rp.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/sf/if_sf.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/siis/siis.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/dev/siis/siis.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/dev/sis/if_sis.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/sk/if_sk.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/sn/if_sn.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/snc/dp83932.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/sound/midi/midi.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/sound/midi/sequencer.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/sound/pci/hda/hdac.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/sound/pcm/feeder_rate.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/sound/usb/uaudio.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/speaker/spkr.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ste/if_ste.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/stge/if_stge.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/ti/if_ti.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/tl/if_tl.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/trm/trm.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/tsec/if_tsec.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/twe/twe.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/tx/if_tx.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/txp/if_txp.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/uart/uart_cpu_powerpc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/at91dci.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/at91dci_atmelarm.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/atmegadci.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/atmegadci_atmelarm.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/avr32dci.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/ehci.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/ehci_ixp4xx.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/ehci_mbus.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/ehci_pci.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/musb_otg.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/musb_otg_atmelarm.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/ohci.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/ohci_atmelarm.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/ohci_pci.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/uhci.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/uhci_pci.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/usb_controller.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/uss820dci.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/uss820dci_atmelarm.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/input/uhid.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/input/ukbd.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/input/ums.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/misc/udbp.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/misc/ufm.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/net/if_aue.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/net/if_axe.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/net/if_cdce.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/net/if_cue.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/net/if_kue.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/net/if_rue.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/net/if_udav.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/net/usb_ethernet.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/quirk/usb_quirk.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/quirk/usb_quirk.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/u3g.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/uark.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/ubsa.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/ubser.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/uchcom.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/ucycom.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/ufoma.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/uftdi.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/ugensa.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/uipaq.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/ulpt.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/umct.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/umodem.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/umoscom.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/uplcom.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/usb_serial.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/uslcom.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/uvisor.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/uvscom.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/storage/umass.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/storage/urio.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/storage/ustorage_fs.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/template/usb_template.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/template/usb_template_cdce.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/template/usb_template_msc.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/template/usb_template_mtp.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_busdma.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_busdma.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_compat_linux.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_compat_linux.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_controller.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_core.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_core.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_debug.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_debug.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_defs.h#3 delete .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_dev.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_dev.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_device.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_device.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_dynamic.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_dynamic.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_error.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_error.h#3 delete .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_freebsd.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_generic.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_handle_request.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_handle_request.h#3 delete .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_hid.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_hid.h#3 delete .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_hub.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_if.m#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_ioctl.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_lookup.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_lookup.h#3 delete .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_mbuf.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_mbuf.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_mfunc.h#3 delete .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_msctest.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_parse.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_parse.h#3 delete .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_process.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_process.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_request.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_request.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_revision.h#3 delete .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_transfer.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_transfer.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_util.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_util.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usbdevs#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usbdi.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usbdi_util.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usbhid.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/wlan/if_rum.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/wlan/if_uath.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/wlan/if_upgt.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/wlan/if_ural.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/wlan/if_urtw.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/wlan/if_zyd.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/vge/if_vge.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/vr/if_vr.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/wb/if_wb.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/wi/if_wi.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/wl/if_wl.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/wpi/if_wpi.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/xe/if_xe.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/xen/blkback/blkback.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/xen/netback/netback.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/xl/if_xl.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/cd9660/cd9660_lookup.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/coda/coda_psdev.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/coda/coda_vnops.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/fifofs/fifo_vnops.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/nfs/nfs_commonkrpc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/nfs/nfs_var.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/nfs/nfsport.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/nfsclient/nfs_clbio.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/nfsclient/nfs_clrpcops.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/nfsclient/nfs_clstate.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/nfsclient/nfs_clvfsops.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/nfsclient/nfs_clvnops.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/nfsserver/nfs_nfsdport.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/ntfs/ntfs.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/nullfs/null_vnops.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/procfs/procfs_map.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/pseudofs/pseudofs_vnops.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/tmpfs/tmpfs_subr.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/fs/unionfs/union_subr.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/geom/geom.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/geom/geom_dev.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/geom/geom_io.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/geom/geom_redboot.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/geom/geom_subr.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/geom/geom_vfs.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/geom/journal/g_journal.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/geom/linux_lvm/g_linux_lvm.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/geom/part/g_part.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/geom/part/g_part_if.m#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/geom/vinum/geom_vinum.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/gnu/fs/xfs/FreeBSD/xfs_ioctl.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/gnu/fs/xfs/FreeBSD/xfs_iops.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/gnu/fs/xfs/FreeBSD/xfs_vnode.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/gnu/fs/xfs/xfs_rw.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/gnu/fs/xfs/xfs_vnodeops.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/acpica/acpi_machdep.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/bios/smapi.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/bios/smbios.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/bios/vpd.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/conf/GENERIC#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/conf/NOTES#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/i386/elf_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/i386/genassym.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/i386/initcpu.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/i386/intr_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/i386/io_apic.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/i386/local_apic.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/i386/machdep.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/i386/mp_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/i386/msi.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/i386/pmap.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/i386/sys_machdep.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/i386/vm_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/ibcs2/ibcs2_ipc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/ibcs2/ibcs2_misc.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/include/cpufunc.h#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/include/intr_machdep.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/include/md_var.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/include/param.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/include/pmap.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/include/sf_buf.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/include/vm.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/i386/isa/atpic.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/isa/clock.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/linux/linux_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/pci/pci_bus.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/xen/mp_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/i386/xen/pmap.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/ia64/conf/GENERIC#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/ia64/ia64/elf_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/ia64/ia64/machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/ia64/ia64/mp_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/ia64/ia64/pmap.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/ia64/include/param.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/ia64/include/pmap.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/ia64/include/vm.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/kern/init_main.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/init_sysent.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_alq.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_cpuset.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_descrip.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_event.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_exec.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_exit.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_fork.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_intr.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_jail.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_linker.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_lockf.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_mbuf.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_poll.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_proc.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_prot.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_resource.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_sig.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_switch.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_synch.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_sysctl.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_thr.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_thread.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_uuid.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_vimage.c#3 delete .. //depot/projects/soc2009/anchie_send/src/sys/kern/link_elf.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/link_elf_obj.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/makesyscalls.sh#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/sched_ule.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/subr_bus.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/subr_param.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/subr_pcpu.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/subr_sleepqueue.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/subr_stack.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/subr_trap.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/sys_generic.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/sys_pipe.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/sys_process.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/sys_socket.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/syscalls.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/syscalls.master#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/systrace_args.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/sysv_ipc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/sysv_msg.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/sysv_sem.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/sysv_shm.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/tty.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/tty_pts.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/tty_ttydisc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/uipc_domain.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/uipc_mbuf.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/uipc_shm.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/uipc_sockbuf.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/uipc_socket.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/uipc_syscalls.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/uipc_usrreq.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/vfs_bio.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/vfs_cache.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/vfs_cluster.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/vfs_default.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/vfs_export.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/vfs_extattr.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/vfs_lookup.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/vfs_mount.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/vfs_subr.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/vfs_syscalls.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/vfs_vnops.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/vnode_if.src#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/libkern/iconv.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/libkern/iconv_converter_if.m#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/libkern/iconv_xlat16.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/mips/adm5120/if_admsw.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/mips/include/param.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/mips/include/pmap.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/mips/include/vm.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/mips/malta/yamon.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/mips/mips/busdma_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/mips/mips/dump_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/mips/mips/elf_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/mips/mips/intr_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/mips/mips/mp_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/mips/mips/pmap.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/modules/Makefile#6 integrate .. //depot/projects/soc2009/anchie_send/src/sys/modules/acpi/Makefile#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/modules/acpi/acpi_hp/Makefile#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/modules/acpi/acpi_wmi/Makefile#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/modules/ahci/Makefile#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/modules/cam/Makefile#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/modules/gem/Makefile#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/modules/geom/geom_label/Makefile#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/modules/if_epair/Makefile#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/modules/igb/Makefile#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/modules/ispfw/Makefile#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/modules/ispfw/isp_2400_multi/Makefile#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/modules/ispfw/isp_2500/Makefile#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/modules/ispfw/isp_2500_multi/Makefile#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/modules/ixgbe/Makefile#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/modules/mxge/mxge/Makefile#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/modules/netgraph/Makefile#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/modules/netgraph/pipe/Makefile#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/modules/nfsclient/Makefile#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/modules/nfsserver/Makefile#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/modules/siis/Makefile#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/modules/wlan/Makefile#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/bpf.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/bridgestp.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/fddi.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/firewire.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/flowtable.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/flowtable.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_arc.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_arcsubr.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_bridge.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_clone.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_clone.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_ef.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_enc.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_epair.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/net/if_ethersubr.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_faith.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_fddisubr.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_fwsubr.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_gif.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_gif.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_gre.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_iso88025subr.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_llatbl.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_loop.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_media.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_mib.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_spppsubr.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_stf.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_tap.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_tun.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_var.h#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/if_vlan.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/iso88025.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/netisr.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/netisr.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/raw_cb.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/raw_cb.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/raw_usrreq.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/route.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/route.h#7 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/rtsock.c#12 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/vnet.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/net/vnet.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/_ieee80211.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_action.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_action.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_adhoc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_ageq.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_ageq.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_crypto.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_crypto.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_ddb.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_freebsd.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_freebsd.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_hostap.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_ht.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_ht.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_hwmp.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_input.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_input.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_ioctl.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_ioctl.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_mesh.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_mesh.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_node.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_node.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_output.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_proto.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_proto.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_scan.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_scan.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_scan_sta.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_sta.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_var.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211_wds.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netatalk/COPYRIGHT#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netatalk/aarp.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netatalk/at_control.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netatalk/at_extern.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netatalk/at_rmx.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netatalk/at_var.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netatalk/ddp_input.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netatalk/ddp_output.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netatalk/ddp_pcb.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netatalk/ddp_usrreq.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/atm/ng_atm.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/atm/uni/ng_uni.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/bluetooth/socket/ng_btsocket.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/netgraph.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/ng_base.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/ng_bridge.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/ng_eiface.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/ng_ether.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/ng_gif.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/ng_iface.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/ng_ksocket.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/ng_pipe.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/ng_socket.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netgraph/ng_source.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/icmp6.h#9 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/icmp_var.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/if_ether.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/igmp.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/in.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/in_gif.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/in_mcast.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/in_pcb.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/in_pcb.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/in_proto.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/in_rmx.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/in_var.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ip_carp.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ip_divert.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ip_dummynet.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ip_fastfwd.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ip_fw.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ip_icmp.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ip_input.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ip_ipsec.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ip_mroute.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ip_mroute.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ip_options.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ip_output.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ip_var.h#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ipfw/ip_dummynet.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ipfw/ip_fw2.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ipfw/ip_fw_nat.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/ipfw/ip_fw_pfil.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/raw_ip.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_auth.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_indata.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_os_bsd.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_sysctl.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_sysctl.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_uio.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctputil.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctputil.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_hostcache.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_input.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_offload.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_offload.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_output.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_reass.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_sack.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_subr.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_syncache.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_syncache.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_timer.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_timewait.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_usrreq.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/tcp_var.h#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/udp_usrreq.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/udp_var.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet/vinet.h#2 delete .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/dest6.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/frag6.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/icmp6.c#20 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/in6.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/in6_gif.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/in6_ifattach.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/in6_mcast.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/in6_pcb.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/in6_pcb.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/in6_proto.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/in6_rmx.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/in6_src.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/in6_var.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/ip6_forward.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/ip6_input.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/ip6_ipsec.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/ip6_mroute.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/ip6_mroute.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/ip6_output.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/ip6_var.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/mld6.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/nd6.c#17 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/nd6.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/nd6_nbr.c#6 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/nd6_rtr.c#6 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/raw_ip6.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/raw_ip6.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/route6.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/scope6.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/tcp6_var.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/udp6_usrreq.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/vinet6.h#3 delete .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/ah_var.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/esp_var.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/ipcomp_var.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/ipip_var.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/ipsec.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/ipsec.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/ipsec6.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/ipsec_input.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/ipsec_mbuf.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/ipsec_output.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/key.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/key_debug.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/key_debug.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/keysock.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/keysock.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/vipsec.h#2 delete .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/xform_ah.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/xform_esp.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/xform_ipcomp.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/xform_ipip.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipsec/xform_tcp.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipx/README#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipx/ipx.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipx/ipx_if.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipx/ipx_input.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipx/ipx_outputfl.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipx/ipx_pcb.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netipx/ipx_var.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfs/nfs_common.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfs/nfs_nfssvc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfs/rpcv2.h#2 delete .. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/bootp_subr.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/krpc_subr.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/nfs.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/nfs_bio.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/nfs_diskless.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/nfs_krpc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/nfs_lock.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/nfs_nfsiod.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/nfs_node.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/nfs_socket.c#3 delete .. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/nfs_subs.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/nfs_vfsops.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/nfs_vnops.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/nfsm_subs.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsclient/nfsmount.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsserver/nfs.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsserver/nfs_fha.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsserver/nfs_serv.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsserver/nfs_srvcache.c#2 delete .. //depot/projects/soc2009/anchie_send/src/sys/nfsserver/nfs_srvkrpc.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsserver/nfs_srvsock.c#4 delete .. //depot/projects/soc2009/anchie_send/src/sys/nfsserver/nfs_srvsubs.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/nfsserver/nfs_syscalls.c#3 delete .. //depot/projects/soc2009/anchie_send/src/sys/nfsserver/nfsrvcache.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/pc98/cbus/fdc.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/pc98/conf/GENERIC#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/pc98/include/vm.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/pc98/pc98/machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/pci/if_rl.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/pci/if_rlreg.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/aim/mmu_oea.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/aim/mmu_oea64.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/booke/pmap.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/conf/GENERIC#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/conf/MPC85XX#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/conf/NOTES#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/cpufreq/pcr.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/include/param.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/include/pmap.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/include/spr.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/include/vm.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/mpc85xx/ds1553_bus_lbc.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/mpc85xx/ds1553_core.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/mpc85xx/ds1553_reg.h#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/mpc85xx/i2c.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/mpc85xx/lbc.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/powermac/smu.c#1 branch .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/powerpc/elf_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/powerpc/powerpc/mp_machdep.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/rpc/clnt_dg.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/rpc/clnt_rc.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/rpc/clnt_vc.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/rpc/rpcsec_gss/rpcsec_gss.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/security/audit/audit.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/security/audit/audit.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/security/audit/audit_arg.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/security/audit/audit_bsm.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/security/audit/audit_bsm_errno.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/security/audit/audit_bsm_klib.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/security/audit/audit_bsm_token.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/security/audit/audit_private.h#2 integrate >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Mon Aug 10 14:46:30 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D04331065672; Mon, 10 Aug 2009 14:46:29 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 83569106564A for ; Mon, 10 Aug 2009 14:46:29 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 71A5C8FC1A for ; Mon, 10 Aug 2009 14:46:29 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7AEkTIg041594 for ; Mon, 10 Aug 2009 14:46:29 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7AEkTPA041592 for perforce@freebsd.org; Mon, 10 Aug 2009 14:46:29 GMT (envelope-from pgj@FreeBSD.org) Date: Mon, 10 Aug 2009 14:46:29 GMT Message-Id: <200908101446.n7AEkTPA041592@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 167176 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 14:46:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=167176 Change 167176 by pgj@petymeg-current on 2009/08/10 14:45:40 - Add extract_address() for extracting destination and gateway address information in routing table entries. Implement support for PF_INET and PF_LINK families. - Add functions for accessing routing addresses. - Respect the "domain" argument in netstat_route(). Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#61 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#57 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_route.c#2 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#66 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#61 (text+ko) ==== @@ -1235,4 +1235,9 @@ u_int64_t netstat_rt_get_expire(const struct route_type *); u_int32_t netstat_rt_get_mtu(const struct route_type *); u_int64_t netstat_rt_get_address(const struct route_type *); + +/* Routing addresses: */ +const char *netstat_rat_get_name(const struct routeaddr_type *, int); +size_t netstat_rat_get_address(const struct routeaddr_type *, void *, size_t); +int netstat_rat_get_family(const struct routeaddr_type *); #endif /* !_NETSTAT_H_ */ ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#57 (text+ko) ==== @@ -441,12 +441,13 @@ /* Route type. */ struct routeaddr_type { + int rat_family; /* protocol family */ /* for printing purposes: */ char *rat_address; /* resolved hostname */ char rat_ni_address[20]; /* numeric */ /* for other: */ void *rat_data; /* raw socket information */ - int rat_data_len; + size_t rat_data_len; }; struct route_type { @@ -507,7 +508,7 @@ void _netstat_rt_free(struct route_type *); void _netstat_rat_free(struct routeaddr_type *); struct route_type *_netstat_rt_allocate(struct route_type_list *); -struct routeaddr_type *_netstat_rat_allocate(void *, size_t); +struct routeaddr_type *_netstat_rat_allocate(int, void *, size_t); const char *resolve_val2str_name(int, const struct val2str *); /* XXX: merge these into a common address resolution routine. */ ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_route.c#2 (text+ko) ==== @@ -31,7 +31,10 @@ #include #include +#include #include +#include +#include #include #include @@ -57,6 +60,8 @@ static int route_tree_sysctl(struct route_type_list *, int, int, int); static void process_tree(kvm_t *, struct route_type_list *, struct radix_node *); static void extract_rtentry_data(struct rtentry *, struct route_type *); +static struct routeaddr_type *extract_address(struct sockaddr*, + struct sockaddr*, int); int netstat_route(const struct session_type *session, int fib, int domain, @@ -129,19 +134,24 @@ goto out; } - for (i = 0; i <= PF_MAX; i++) { - if (i != PF_INET) - tmpfib = 0; - else - tmpfib = fibnum; + if (domain == PF_UNSPEC) + for (i = 0; i <= PF_MAX; i++) { + tmpfib = (i != PF_INET) ? 0 : fibnum; + rnh = rt_tables[tmpfib].tables[i]; - rnh = rt_tables[tmpfib].tables[i]; + if (rnh == NULL) + continue; - if (rnh == NULL) - continue; - - KREAD(rnh, head); - process_tree(kvm, list, head.rnh_treetop); + KREAD(rnh, head); + process_tree(kvm, list, head.rnh_treetop); + } + else { + tmpfib = (domain != PF_INET) ? 0 : fibnum; + rnh = rt_tables[tmpfib].tables[domain]; + if (rnh != NULL) { + KREAD(rnh, head); + process_tree(kvm, list, head.rnh_treetop); + } } result = 0; @@ -164,7 +174,7 @@ struct radix_node *rnode; struct ifnet iface; struct route_type *rtp; - struct sockaddr sa, sagw; + struct sockaddr sa, mk, sagw; again: if (rn == NULL) @@ -191,6 +201,11 @@ rtentry.rt_nodes->rn_key = (caddr_t)&sa; } + if (rnode->rn_mask != NULL) { + KREAD(rnode->rn_mask, mk); + rtentry.rt_nodes->rn_mask = (caddr_t)&mk; + } + if (rtentry.rt_gateway != NULL) { KREAD(rtentry.rt_gateway, sagw); rtentry.rt_gateway = &sagw; @@ -248,7 +263,7 @@ { time_t expire_time; struct timespec uptime; - struct sockaddr *sa; + struct sockaddr *sa, *mask; CNV_FLAG(RTF_UP, NETSTAT_RT_UP); CNV_FLAG(RTF_GATEWAY, NETSTAT_RT_GATEWAY); @@ -267,10 +282,10 @@ CNV_FLAG(RTF_BROADCAST, NETSTAT_RT_BROADCAST); rtp->rt_fib = rte->rt_fibnum; sa = (struct sockaddr *)rte->rt_nodes->rn_key; + mask = (struct sockaddr *)rte->rt_nodes->rn_mask; rtp->rt_family = sa->sa_family; - rtp->rt_destination = _netstat_rat_allocate(sa, sizeof(struct sockaddr)); - rtp->rt_gateway = _netstat_rat_allocate(rte->rt_gateway, - sizeof(struct sockaddr)); + rtp->rt_destination = extract_address(sa, mask, rte->rt_flags); + rtp->rt_gateway = extract_address(rte->rt_gateway, NULL, RTF_HOST); rtp->rt_refs = rte->rt_refcnt; rtp->rt_used = rte->rt_use; if (rte->rt_ifp != NULL) { @@ -291,3 +306,110 @@ rtp->rt_address = (int)rte; } #undef CNV_FLAG + +struct routeaddr_type * +extract_address(struct sockaddr *sa, struct sockaddr *mask, int flags) +{ + struct routeaddr_type *rap; + struct sockaddr_in *sa_in, *mk_in; +#ifdef INET6 + struct sockaddr_in6 *sa_in6, *mk_in6; +#endif + struct sockaddr_dl *sa_dl; + char *cp, *p; + int n; + + sa_in = (struct sockaddr_in *)sa; + mk_in = (struct sockaddr_in *)mask; +#ifdef INET6 + sa_in6 = (struct sockaddr_in6 *)sa; + mk_in6 = (struct sockaddr_in6 *)mask; +#endif + sa_dl = (struct sockaddr_dl *)sa; + + rap = _netstat_rat_allocate(sa->sa_family, sa, sizeof(struct sockaddr)); + if (rap == NULL) + return (NULL); + + switch (sa->sa_family) { + case PF_UNSPEC: + rap->rat_address = strdup("none"); + strlcpy(rap->rat_ni_address, "none", + sizeof(rap->rat_ni_address)); + rap->rat_data = malloc(sizeof(struct sockaddr)); + if (rap->rat_data != NULL) { + rap->rat_data_len = sizeof(struct sockaddr); + memcpy(rap->rat_data, sa, rap->rat_data_len); + } + break; + case PF_INET: + if ((sa_in->sin_addr.s_addr == INADDR_ANY) && + (mask != NULL) && + (ntohl(mk_in->sin_addr.s_addr) == 0L)) { + rap->rat_address = strdup("default"); + strlcpy(rap->rat_ni_address, "default", + sizeof(rap->rat_ni_address)); + } else if (flags & RTF_HOST) { + inet_ntop(PF_INET, &sa_in->sin_addr, + rap->rat_ni_address, sizeof(rap->rat_ni_address)); + rap->rat_address = + strdup(routename(sa_in->sin_addr.s_addr, 0)); + } else if (mask != NULL) { + strlcpy(rap->rat_ni_address, + netname(sa_in->sin_addr.s_addr, + ntohl(mk_in->sin_addr.s_addr), 1), + sizeof(rap->rat_ni_address)); + rap->rat_address = + strdup(netname(sa_in->sin_addr.s_addr, + ntohl(mk_in->sin_addr.s_addr), 0)); + } else { + rap->rat_address = + strdup(netname(sa_in->sin_addr.s_addr, + 0L, 0)); + strlcpy(rap->rat_ni_address, rap->rat_address, + sizeof(rap->rat_ni_address)); + } + rap->rat_data = malloc(sizeof(struct sockaddr_in)); + if (rap->rat_data != NULL) { + rap->rat_data_len = sizeof(struct sockaddr_in); + memcpy(rap->rat_data, sa_in, rap->rat_data_len); + } + break; +#ifdef INET6 + case PF_INET6: + break; +#endif + case PF_IPX: + break; + case PF_APPLETALK: + break; + case PF_NETGRAPH: + break; + case PF_LINK: + if (sa_dl->sdl_nlen == 0 && sa_dl->sdl_alen == 0 && + sa_dl->sdl_slen == 0) { + sprintf(rap->rat_ni_address, "", + sa_dl->sdl_index); + } else { + cp = (char *)LLADDR(sa_dl); + n = sa_dl->sdl_alen; + p = rap->rat_address; + while (--n >= 0) { + sprintf(p, "%02x%s", *cp++ & 0xff, + n > 0 ? ":" : ""); + p += 3; + } + } + rap->rat_address = strdup(rap->rat_ni_address); + rap->rat_data = malloc(sizeof(struct sockaddr_dl)); + if (rap->rat_data != NULL) { + rap->rat_data_len = sizeof(struct sockaddr_dl); + memcpy(rap->rat_data, sa_dl, rap->rat_data_len); + } + break; + default: + break; + } + + return (rap); +} ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#66 (text+ko) ==== @@ -2279,7 +2279,7 @@ } struct routeaddr_type * -_netstat_rat_allocate(void *address, size_t len) +_netstat_rat_allocate(int family, void *address, size_t len) { struct routeaddr_type *ratp; @@ -2298,6 +2298,7 @@ ratp->rat_data_len = len; } } + ratp->rat_family = family; return (ratp); } @@ -2446,6 +2447,34 @@ return (rtp->rt_address); } +const char * +netstat_rat_get_name(const struct routeaddr_type *ratp, int numeric) +{ + if (numeric) + return (ratp->rat_ni_address); + return (ratp->rat_address); +} + +size_t +netstat_rat_get_address(const struct routeaddr_type *ratp, void *addr, + size_t size) +{ + if ((ratp->rat_data != NULL) && (addr != NULL) && + (ratp->rat_data_len <= size)) { + memcpy(addr, ratp->rat_data, ratp->rat_data_len); + return (ratp->rat_data_len); + } + + return (0); +} + +int +netstat_rat_get_family(const struct routeaddr_type *ratp) +{ + return (ratp->rat_family); +} + + static const char *icmpnames[ICMP_MAXTYPE + 1] = { "echo reply", /* RFC 792 */ "#1", From owner-p4-projects@FreeBSD.ORG Mon Aug 10 14:53:37 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A5E861065670; Mon, 10 Aug 2009 14:53:37 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 65D63106566B for ; Mon, 10 Aug 2009 14:53:37 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 550838FC23 for ; Mon, 10 Aug 2009 14:53:37 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7AErbOS042062 for ; Mon, 10 Aug 2009 14:53:37 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7AErb4M042060 for perforce@freebsd.org; Mon, 10 Aug 2009 14:53:37 GMT (envelope-from pgj@FreeBSD.org) Date: Mon, 10 Aug 2009 14:53:37 GMT Message-Id: <200908101453.n7AErb4M042060@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 167177 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 14:53:38 -0000 http://perforce.freebsd.org/chv.cgi?CH=167177 Change 167177 by pgj@petymeg-current on 2009/08/10 14:53:23 Add a default value for network interface, when no interface exists for a given route. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_route.c#3 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_route.c#3 (text+ko) ==== @@ -288,9 +288,10 @@ rtp->rt_gateway = extract_address(rte->rt_gateway, NULL, RTF_HOST); rtp->rt_refs = rte->rt_refcnt; rtp->rt_used = rte->rt_use; - if (rte->rt_ifp != NULL) { + if (rte->rt_ifp != NULL) rtp->rt_interface = strdup(rte->rt_ifp->if_xname); - } + else + rtp->rt_interface = strdup("---"); if (rte->rt_rmx.rmx_expire > 0) { if (clock_gettime(CLOCK_UPTIME, &uptime) < 0) { warn("netstat_route: clock_gettime() failed"); From owner-p4-projects@FreeBSD.ORG Mon Aug 10 17:06:02 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 85DDB106567A; Mon, 10 Aug 2009 17:06:02 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1DF4C1065673 for ; Mon, 10 Aug 2009 17:06:02 +0000 (UTC) (envelope-from fangwang@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 0C5BA8FC35 for ; Mon, 10 Aug 2009 17:06:02 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7AH612L064961 for ; Mon, 10 Aug 2009 17:06:01 GMT (envelope-from fangwang@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7AH61V7064959 for perforce@freebsd.org; Mon, 10 Aug 2009 17:06:01 GMT (envelope-from fangwang@FreeBSD.org) Date: Mon, 10 Aug 2009 17:06:01 GMT Message-Id: <200908101706.n7AH61V7064959@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fangwang@FreeBSD.org using -f From: Fang Wang To: Perforce Change Reviews Cc: Subject: PERFORCE change 167179 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 17:06:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=167179 Change 167179 by fangwang@fangwang_utobsd on 2009/08/10 17:05:59 Fix bug. Affected files ... .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_timer.c#7 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_timer.h#6 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_usrreq.c#9 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_var.h#13 edit Differences ... ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_timer.c#7 (text+ko) ==== @@ -492,16 +492,7 @@ tcp_free_sackholes(tp); if (tp->t_rxtshift == 0) { - if (tp->uto_flags & TCPUTO_ENABLE && - tp->uto_flags & TCPUTO_RCVD && - tp->uto_flags & TCPUTO_CHANGEABLE) { - u_int utoval; - TCPT_UTOGET(utoval, tp->rcv_uto); - tp->t_uto_impl = min(tcp_uto_max, - max(tp->t_uto_adv, max(utoval, tcp_uto_min))); - tp->uto_flags &= ~TCPUTO_RCVD; - tp->uto_flags |= TCPUTO_IMPL; - } + TCPT_RESOLVE_UTO(tp); tp->t_uto_left = tp->t_uto_impl / hz; } /* ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_timer.h#6 (text+ko) ==== @@ -93,7 +93,7 @@ #define TCPTV_UTO_MIN ( 120*hz) /* min user timeout */ #define TCPTV_UTO_MAX (1020*hz) /* max user timeout */ -#define TCPTV_UTO_DEFAULT ( 511*hz) /* default user timeout */ +#define TCPTV_UTO_DEFAULT ( 447*hz) /* default user timeout */ /* * Minimum retransmit timer is 3 ticks, for algorithmic stability. @@ -143,16 +143,6 @@ (tv) = (tvmax); \ } while(0) -/* -* Get user timeout value(ticks). -*/ -#define TCPT_UTOGET(utoval, uto) do { \ - (utoval) = (uto) >> 1; \ - if ((uto) & 1) \ - (utoval) *= 60; \ - (utoval) *= hz; \ -} while(0) - #ifdef _KERNEL struct tcp_timer { ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_usrreq.c#9 (text+ko) ==== @@ -1211,7 +1211,8 @@ ti->tcpi_options |= TCPI_OPT_WSCALE; ti->tcpi_snd_wscale = tp->snd_scale; ti->tcpi_rcv_wscale = tp->rcv_scale; - } + } + TCPT_RESOLVE_UTO(tp); if (tp->uto_flags & TCPUTO_IMPL) { ti->tcpi_options |= TCPI_OPT_UTO; ti->tcpi_uto = tp->t_uto_impl / hz; @@ -1403,8 +1404,7 @@ tp->uto_flags &= ~TCPUTO_CHANGEABLE; tp->uto_flags |= TCPUTO_IMPL; } - } - else + } else error = EINVAL; } if ( tu.flags & ENABLE_CHANGE) @@ -1461,18 +1461,10 @@ tu.flags |= ENABLE_UTO; if (tp->uto_flags & TCPUTO_CHANGEABLE) tu.flags |= ENABLE_CHANGE; - if (tp->uto_flags & TCPUTO_ENABLE && - tp->uto_flags & TCPUTO_RCVD && - tp->uto_flags & TCPUTO_CHANGEABLE) { - TCPT_UTOGET(tp->t_uto_impl, tp->rcv_uto); - tp->t_uto_impl = min(tcp_uto_max, - max(tp->t_uto_adv, max(tp->t_uto_impl, tcp_uto_min))); - tp->uto_flags &= ~TCPUTO_RCVD; - tp->uto_flags |= TCPUTO_IMPL; - } + TCPT_RESOLVE_UTO(tp); if (tp->uto_flags & TCPUTO_IMPL) { tu.flags |= STORE_UTO; - tu.uto = tp->t_uto_impl; + tu.uto = tp->t_uto_impl / hz; } INP_WUNLOCK(inp); error = sooptcopyout(sopt, &tu, sizeof tu); ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_var.h#13 (text+ko) ==== @@ -251,6 +251,24 @@ #define TCPUTO_NEED 0x10 /* user timeout need to be sent */ #define TCPUTO_SENDING 0x20 /* user timeout is in the process of sending */ +/* +* Resolve user timeout value(ticks). +*/ +#define TCPT_RESOLVE_UTO(tp) do { \ + if ((tp)->uto_flags & TCPUTO_ENABLE && \ + (tp)->uto_flags & TCPUTO_RCVD && \ + (tp)->uto_flags & TCPUTO_CHANGEABLE) { \ + (tp)->t_uto_impl = (tp)->rcv_uto >> 1; \ + if ((tp)->rcv_uto & 1) \ + (tp)->t_uto_impl *= 60; \ + (tp)->t_uto_impl *= hz; \ + (tp)->t_uto_impl = min(tcp_uto_max, \ + max((tp)->t_uto_adv, max((tp)->t_uto_impl, tcp_uto_min))); \ + (tp)->uto_flags &= ~TCPUTO_RCVD; \ + (tp)->uto_flags |= TCPUTO_IMPL; \ + } \ +} while(0) + #ifdef TCP_SIGNATURE /* * Defines which are needed by the xform_tcp module and tcp_[in|out]put From owner-p4-projects@FreeBSD.ORG Mon Aug 10 17:59:07 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id AC3801065674; Mon, 10 Aug 2009 17:59:07 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6C33D106564A for ; Mon, 10 Aug 2009 17:59:07 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 5AF9D8FC35 for ; Mon, 10 Aug 2009 17:59:07 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7AHx7TF068971 for ; Mon, 10 Aug 2009 17:59:07 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7AHx7HG068969 for perforce@freebsd.org; Mon, 10 Aug 2009 17:59:07 GMT (envelope-from trasz@freebsd.org) Date: Mon, 10 Aug 2009 17:59:07 GMT Message-Id: <200908101759.n7AHx7HG068969@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167181 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 17:59:08 -0000 http://perforce.freebsd.org/chv.cgi?CH=167181 Change 167181 by trasz@trasz_anger on 2009/08/10 17:59:04 Make 'sig*' actions work. Affected files ... .. //depot/projects/soc2009/trasz_limits/TODO#10 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#52 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/TODO#10 (text+ko) ==== @@ -17,6 +17,10 @@ - Some things need to be accounted for per-euid, and some per-egid. Geez. + - In maxproc limit, make sure the 'p' argument is a child process. Otherwise, + if one adds rule with 'sig*' action, the signal will be sent to the parent + instead of the child. + - Add sorting to hrl(8). - Use expand_number(3) in hrl(8). ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#52 (text+ko) ==== @@ -233,10 +233,19 @@ static void hrl_deferred_psignal(struct proc *p, int signum) { + int need_lock; + + /* + * XXX: This is ugly. Either turn it into a real taskqueue, + * or think about the locking and don't lock proc here. + */ + need_lock = !PROC_LOCKED(p); - PROC_LOCK(p); + if (need_lock) + PROC_LOCK(p); psignal(p, signum); - PROC_UNLOCK(p); + if (need_lock) + PROC_UNLOCK(p); } /* From owner-p4-projects@FreeBSD.ORG Mon Aug 10 18:25:37 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CBE161065674; Mon, 10 Aug 2009 18:25:36 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8BA5E106564A for ; Mon, 10 Aug 2009 18:25:36 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 79A228FC33 for ; Mon, 10 Aug 2009 18:25:36 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7AIPaBU072172 for ; Mon, 10 Aug 2009 18:25:36 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7AIPaFk072170 for perforce@freebsd.org; Mon, 10 Aug 2009 18:25:36 GMT (envelope-from trasz@freebsd.org) Date: Mon, 10 Aug 2009 18:25:36 GMT Message-Id: <200908101825.n7AIPaFk072170@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167183 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 18:25:38 -0000 http://perforce.freebsd.org/chv.cgi?CH=167183 Change 167183 by trasz@trasz_anger on 2009/08/10 18:25:06 Style fixes. Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#53 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#53 (text+ko) ==== @@ -62,7 +62,8 @@ int hrl_group_accounting = 0; TUNABLE_INT("kern.hrl_group_accounting", &hrl_group_accounting); -SYSCTL_INT(_kern, OID_AUTO, hrl_group_accounting, CTLFLAG_RD, &hrl_group_accounting, 0, ""); +SYSCTL_INT(_kern, OID_AUTO, hrl_group_accounting, CTLFLAG_RD, + &hrl_group_accounting, 0, ""); struct dict { const char *d_name; @@ -387,9 +388,9 @@ sbuf_new(&sb, buf, HRL_LOG_BUFSIZE, SBUF_FIXEDLEN); hrl_rule_to_sbuf(&sb, rule); sbuf_finish(&sb); - printf("resource limit \"%s\" exceeded by process %d (%s), " - "uid %d\n", sbuf_data(&sb), p->p_pid, p->p_comm, - p->p_ucred->cr_uid); + printf("resource limit \"%s\" exceeded by process %d " + "(%s), uid %d\n", sbuf_data(&sb), p->p_pid, + p->p_comm, p->p_ucred->cr_uid); sbuf_delete(&sb); free(buf, M_HRL); break; @@ -496,14 +497,15 @@ if (hrl_group_accounting) { for (i = 0; i < cred->cr_ngroups; i++) { /* - * Make sure we don't account a group more than once if it appears - * in cr_groups[] more than once. + * Make sure we don't account a group more than once + * if it appears in cr_groups[] more than once. */ for (j = 0; j < i; j++) { if (cred->cr_groups[i] == cred->cr_groups[j]) goto skip_group; } - cred->cr_gidinfos[i]->gi_usage.hu_resources[resource] += amount; + cred->cr_gidinfos[i]->gi_usage.hu_resources[resource] += + amount; skip_group: continue; } @@ -558,14 +560,15 @@ if (hrl_group_accounting) { for (i = 0; i < cred->cr_ngroups; i++) { /* - * Make sure we don't account a group more than once if it appears - * in cr_groups[] more than once. + * Make sure we don't account a group more than once + * if it appears in cr_groups[] more than once. */ for (j = 0; j < i; j++) { if (cred->cr_groups[i] == cred->cr_groups[j]) goto skip_group; } - cred->cr_gidinfos[i]->gi_usage.hu_resources[resource] += diff; + cred->cr_gidinfos[i]->gi_usage.hu_resources[resource] += + diff; skip_group: continue; } @@ -598,9 +601,9 @@ mtx_lock(&hrl_lock); #ifdef notyet KASSERT(amount <= p->p_usage.hu_resources[resource], - ("hrl_free_proc: freeing %lld of %s, which is more than allocated %lld " - "for %s (pid %d)", amount, hrl_resource_name(resource), p->p_usage.hu_resources[resource], - p->p_comm, p->p_pid)); + ("hrl_free_proc: freeing %lld of %s, which is more than allocated " + "%lld for %s (pid %d)", amount, hrl_resource_name(resource), + p->p_usage.hu_resources[resource], p->p_comm, p->p_pid)); #endif p->p_usage.hu_resources[resource] -= amount; cred = p->p_ucred; @@ -613,14 +616,15 @@ if (hrl_group_accounting) { for (i = 0; i < cred->cr_ngroups; i++) { /* - * Make sure we don't account a group more than once if it appears - * in cr_groups[] more than once. + * Make sure we don't account a group more than once + * if it appears in cr_groups[] more than once. */ for (j = 0; j < i; j++) { if (cred->cr_groups[i] == cred->cr_groups[j]) goto skip_group; } - cred->cr_gidinfos[i]->gi_usage.hu_resources[resource] -= amount; + cred->cr_gidinfos[i]->gi_usage.hu_resources[resource] -= + amount; skip_group: continue; } @@ -658,12 +662,15 @@ mtx_lock(&hrl_lock); for (i = 0; i < HRL_RESOURCE_MAX; i++) { #ifdef notyet - KASSERT(dest->hu_resources[i] >= 0, ("resource usage propagation meltdown")); - KASSERT(src->hu_resources[i] >= 0, ("resource usage propagation meltdown")); + KASSERT(dest->hu_resources[i] >= 0, + ("resource usage propagation meltdown")); + KASSERT(src->hu_resources[i] >= 0, + ("resource usage propagation meltdown")); #endif dest->hu_resources[i] += src->hu_resources[i]; #ifdef notyet - KASSERT(dest->hu_resources[i] >= 0, ("resource usage propagation meltdown")); + KASSERT(dest->hu_resources[i] >= 0, + ("resource usage propagation meltdown")); #endif } mtx_unlock(&hrl_lock); @@ -677,13 +684,17 @@ mtx_lock(&hrl_lock); for (i = 0; i < HRL_RESOURCE_MAX; i++) { #ifdef notyet - KASSERT(dest->hu_resources[i] >= 0, ("resource usage propagation meltdown")); - KASSERT(src->hu_resources[i] >= 0, ("resource usage propagation meltdown")); - KASSERT(src->hu_resources[i] <= dest->hu_resources[i], ("resource usage propagation meltdown")); + KASSERT(dest->hu_resources[i] >= 0, + ("resource usage propagation meltdown")); + KASSERT(src->hu_resources[i] >= 0, + ("resource usage propagation meltdown")); + KASSERT(src->hu_resources[i] <= dest->hu_resources[i], + ("resource usage propagation meltdown")); #endif dest->hu_resources[i] -= src->hu_resources[i]; #ifdef notyet - KASSERT(dest->hu_resources[i] >= 0, ("resource usage propagation meltdown")); + KASSERT(dest->hu_resources[i] >= 0, + ("resource usage propagation meltdown")); #endif } mtx_unlock(&hrl_lock); @@ -1171,11 +1182,14 @@ return (ESRCH); } - error = loginclass_limits_foreach(hrl_rule_remove_callback, filter, (void *)&found); + error = loginclass_limits_foreach(hrl_rule_remove_callback, filter, + (void *)&found); KASSERT(error == 0, ("loginclass_limits_foreach failed")); - error = ui_limits_foreach(hrl_rule_remove_callback, filter, (void *)&found); + error = ui_limits_foreach(hrl_rule_remove_callback, filter, + (void *)&found); KASSERT(error == 0, ("ui_limits_foreach failed")); - error = gi_limits_foreach(hrl_rule_remove_callback, filter, (void *)&found); + error = gi_limits_foreach(hrl_rule_remove_callback, filter, + (void *)&found); KASSERT(error == 0, ("gi_limits_foreach failed")); sx_slock(&proctree_lock); @@ -1365,16 +1379,20 @@ switch (filter->hr_subject) { case HRL_SUBJECT_PROCESS: - error = hrl_get_usage_pid(td, filter->hr_subject_id, &outputsbuf); + error = hrl_get_usage_pid(td, filter->hr_subject_id, + &outputsbuf); break; case HRL_SUBJECT_USER: - error = hrl_get_usage_uid(td, filter->hr_subject_id, &outputsbuf); + error = hrl_get_usage_uid(td, filter->hr_subject_id, + &outputsbuf); break; case HRL_SUBJECT_GROUP: - error = hrl_get_usage_gid(td, filter->hr_subject_id, &outputsbuf); + error = hrl_get_usage_gid(td, filter->hr_subject_id, + &outputsbuf); break; case HRL_SUBJECT_JAIL: - error = hrl_get_usage_jid(td, filter->hr_subject_id, &outputsbuf); + error = hrl_get_usage_jid(td, filter->hr_subject_id, + &outputsbuf); break; default: error = EINVAL; @@ -1389,7 +1407,8 @@ } static int -hrl_get_rules_callback(struct hrl_limits_head *limits, const struct hrl_rule *filter, void *arg3) +hrl_get_rules_callback(struct hrl_limits_head *limits, + const struct hrl_rule *filter, void *arg3) { struct hrl_limit *limit; struct sbuf *sb = (struct sbuf *)arg3; From owner-p4-projects@FreeBSD.ORG Mon Aug 10 19:21:38 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 063EE106567A; Mon, 10 Aug 2009 19:21:38 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B4AC81065678 for ; Mon, 10 Aug 2009 19:21:37 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id A2C648FC20 for ; Mon, 10 Aug 2009 19:21:37 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7AJLbAH077187 for ; Mon, 10 Aug 2009 19:21:37 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7AJLbUb077185 for perforce@freebsd.org; Mon, 10 Aug 2009 19:21:37 GMT (envelope-from syl@FreeBSD.org) Date: Mon, 10 Aug 2009 19:21:37 GMT Message-Id: <200908101921.n7AJLbUb077185@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 167185 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 19:21:40 -0000 http://perforce.freebsd.org/chv.cgi?CH=167185 Change 167185 by syl@syl_atuin on 2009/08/10 19:21:01 Add usb_roothub_exec.c in usb module Makefile. Add usb_generic_roothub prototypes in usb_controller.h. Add structure definition need by usb_generic_roothub in usb_controller.h. First shot for the usb_generic_roothub. 2 functions implementation are still missing. clock and pull-{up|down} code are still missing. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_controller.h#8 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_roothub_exec.c#5 edit .. //depot/projects/soc2009/syl_usb/src/sys/modules/usb/usb/Makefile#2 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_controller.h#8 (text+ko) ==== @@ -39,6 +39,7 @@ struct usb_page_cache; struct usb_setup_params; struct usb_hw_ep_profile; +struct usb_generic_softc; struct usb_fs_isoc_schedule; struct usb_config_descriptor; struct usb_endpoint_descriptor; @@ -184,6 +185,53 @@ usb_error_t err; }; +/* + * usb_generic_roothub_exec structures + */ + +struct usb_generic_flags { + uint8_t change_connect:1; + uint8_t change_suspend:1; + uint8_t status_suspend:1; + uint8_t status_vbus:1; + uint8_t status_bus_reset:1; + uint8_t remote_wakeup:1; + uint8_t self_powered:1; + uint8_t clocks_off:1; + uint8_t port_powered:1; + uint8_t port_enabled:1; + uint8_t d_pulled_up:1; +}; + +struct usb_generic_hub_temp { + uWord wValue; + struct usb_port_status ps; +}; + +typedef usb_error_t (*usb_roothub_fops_t)(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index); + +struct usb_roothub_fops { + usb_roothub_fops_t handle_get_descriptor; + usb_roothub_fops_t handle_get_config; + usb_roothub_fops_t handle_get_status; + usb_roothub_fops_t handle_set_address; + usb_roothub_fops_t handle_set_config; + usb_roothub_fops_t handle_clear_halt; + usb_roothub_fops_t handle_clear_wakeup; + usb_roothub_fops_t handle_set_halt; + usb_roothub_fops_t handle_set_wakeup; + usb_roothub_fops_t handle_get_ep_status; + usb_roothub_fops_t handle_set_interface; + usb_roothub_fops_t handle_get_interface; + usb_roothub_fops_t handle_get_iface_status; + usb_roothub_fops_t handle_clear_port_feature; + usb_roothub_fops_t handle_set_port_feature; + usb_roothub_fops_t handle_get_tt_state; + usb_roothub_fops_t handle_get_port_status; + usb_roothub_fops_t handle_get_class_descriptor; + usb_roothub_fops_t handle_get_class_status; +}; + /* prototypes */ void usb_bus_mem_flush_all(struct usb_bus *bus, usb_bus_mem_cb_t *cb); @@ -192,5 +240,6 @@ uint16_t usb_isoc_time_expand(struct usb_bus *bus, uint16_t isoc_time_curr); uint16_t usbd_fs_isoc_schedule_isoc_time_expand(struct usb_device *udev, struct usb_fs_isoc_schedule **pp_start, struct usb_fs_isoc_schedule **pp_end, uint16_t isoc_time); uint8_t usbd_fs_isoc_schedule_alloc(struct usb_fs_isoc_schedule *fss, uint8_t *pstart, uint16_t len); +usb_error_t generic_roothub_exec(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, struct usb_device_request *req, const void **pptr, uint16_t *plength); #endif /* _USB_CONTROLLER_H_ */ ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_roothub_exec.c#5 (text+ko) ==== @@ -46,7 +46,7 @@ #include #include -#define USB_DEBUG_VAR s3c24dcidebug +#define USB_DEBUG_VAR usb_debug #include #include @@ -60,25 +60,6 @@ #include #include -struct usb_generic_flags { - uint8_t change_connect:1; - uint8_t change_suspend:1; - uint8_t status_suspend:1; - uint8_t status_vbus:1; - uint8_t status_bus_reset:1; - uint8_t remote_wakeup:1; - uint8_t self_powered:1; - uint8_t clocks_off:1; - uint8_t port_powered:1; - uint8_t port_enabled:1; - uint8_t d_pulled_up:1; -}; - -struct usb_generic_hub_temp { - uWord wValue; - struct usb_port_status ps; -}; - struct usb_generic_softc { struct usb_bus sc_bus; struct usb_generic_hub_temp sc_hub_temp; @@ -89,8 +70,219 @@ struct usb_generic_flags sc_flags; }; +static struct usb_roothub_fops generic_roothub_fops; + +static usb_error_t +generic_get_descriptor(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + switch ((*value) >> 8) { + case UDESC_DEVICE: + if ((*value) & 0xff) { + return (USB_ERR_STALLED); + } + /* XXX Descriptor's devd stuff */ + break; + case UDESC_CONFIG: + if ((*value) & 0xff) { + return (USB_ERR_STALLED); + } + /* XXX Descriptor's confd stuff */ + break; + case UDESC_STRING: + switch ((*value) & 0xff) { + case 0: + /* XXX Descriptor's lantab stuff */ + break; + case 1: + /* XXX Descriptor's vendor stuff */ + break; + case 2: + /* XXX Descriptor's product stuff */ + break; + default: + return (USB_ERR_STALLED); + } + default: + return (USB_ERR_STALLED); + } + return (0); +} + +static usb_error_t +generic_get_config(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + *len = 1; + sc->sc_hub_temp.wValue[0] = sc->sc_conf; + return (0); +} + +static usb_error_t +generic_get_status(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + *len = 2; + USETW(sc->sc_hub_temp.wValue, UDS_SELF_POWERED); + return (0); +} + +static usb_error_t +generic_set_address(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + if ((*value) & 0xff00) { + return (USB_ERR_STALLED); + } + sc->sc_rt_addr = *value; + return (0); +} + +static usb_error_t +generic_set_config(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + if ((*value) >= 2) { + return (USB_ERR_STALLED); + } + sc->sc_conf = *value; + return (0); +} + +static usb_error_t +generic_clear_halt(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + return (0); +} + +static usb_error_t +generic_clear_wakeup(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + return (0); +} + +static usb_error_t +generic_set_halt(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + return (0); +} + +static usb_error_t +generic_set_wakeup(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + return (0); +} + +static usb_error_t +generic_get_ep_status(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + *len = 2; + USETW(sc->sc_hub_temp.wValue, 0); + return (0); +} + +static usb_error_t +generic_set_interface(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + return (0); +} + +static usb_error_t +generic_get_interface(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + *len = 1; + sc->sc_hub_temp.wValue[0] = 0; + return (0); +} + +static usb_error_t +generic_get_iface_status(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + *len = 2; + USETW(sc->sc_hub_temp.wValue, 0); + return (0); +} + +static usb_error_t +generic_clear_port_feature(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + if ((*index) != 1) { + return (USB_ERR_STALLED); + } + DPRINTFN(9, "UR_CLEAR_PORT_FEATURE on port %d\n", *index); + + switch (*value) { + case UHF_PORT_SUSPEND: + /* XXX xxxdci_wakeup_peer */ + break; + + case UHF_PORT_ENABLE: + sc->sc_flags.port_enabled = 0; + break; + + case UHF_PORT_TEST: + case UHF_PORT_INDICATOR: + case UHF_C_PORT_ENABLE: + case UHF_C_PORT_OVER_CURRENT: + case UHF_C_PORT_RESET: + break; + case UHF_PORT_POWER: + sc->sc_flags.port_powered = 0; + /* XXX Pull down clock off */ + break; + case UHF_C_PORT_CONNECTION: + sc->sc_flags.change_connect = 0; + break; + case UHF_C_PORT_SUSPEND: + sc->sc_flags.change_suspend = 0; + break; + default: + return (USB_ERR_IOERROR); + } + return (0); +} + +static usb_error_t +generic_set_port_feature(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + return (0); +} + +static usb_error_t +generic_get_tt_state(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + *len = 2; + USETW(sc->sc_hub_temp.wValue, 0); + return (0); +} + +static usb_error_t +generic_get_port_status(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + return (0); +} + +static usb_error_t +generic_get_class_descriptor(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + if ((*value) & 0xff) { + return (USB_ERR_STALLED); + } + /* XXX HUB Descriptor stuff */ + return (0); +} + static usb_error_t -genric_roothub_exec(struct usb_device *udev, struct usb_generic_softc *sc, +generic_get_class_status(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +{ + *len = 2; + USETW(sc->sc_hub_temp.wValue, 0); + return (0); +} + +#define SAFE_OPS(fops, field, err) \ + if (fops->field == NULL) \ + err = generic_roothub_fops.field(sc, &len, &value, &index); \ + else \ + err = fops->field(sc, &len, &value, &index) + +usb_error_t +generic_roothub_exec(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, struct usb_device_request *req, const void **pptr, uint16_t *plength) { const void *ptr; @@ -105,6 +297,9 @@ ptr = (const void*)&sc->sc_hub_temp; len = 0; err = 0; + + if (fops == NULL) + fops = &generic_roothub_fops; value = UGETW(req->wValue); index = UGETW(req->wIndex); @@ -114,11 +309,14 @@ case UT_READ_DEVICE: switch (req->bRequest) { case UR_GET_DESCRIPTOR: - /* handle_get_descriptor */ + SAFE_OPS(fops, handle_get_descriptor, err); + break; case UR_GET_CONFIG: - /* handle_get_config */ + SAFE_OPS(fops, handle_get_config, err); + break; case UR_GET_STATUS: - /* handle_get_status */ + SAFE_OPS(fops, handle_get_status, err); + break; default: err = USB_ERR_STALLED; break; @@ -128,9 +326,11 @@ case UT_WRITE_DEVICE: switch (req->bRequest) { case UR_SET_ADDRESS: - /* handle_set_address */ + SAFE_OPS(fops, handle_set_address, err); + break; case UR_SET_CONFIG: - /* handle_set_config */ + SAFE_OPS(fops, handle_set_config, err); + break; case UR_CLEAR_FEATURE: break; case UR_SET_DESCRIPTOR: @@ -147,9 +347,11 @@ case UR_CLEAR_FEATURE: switch (UGETW(req->wValue)) { case UF_ENDPOINT_HALT: - /* handle_clear_halt */ + SAFE_OPS(fops, handle_clear_halt, err); + break; case UF_DEVICE_REMOTE_WAKEUP: - /* handle_clear_wakeup */ + SAFE_OPS(fops, handle_clear_wakeup, err); + break; default: err = USB_ERR_STALLED; break; @@ -158,9 +360,11 @@ case UR_SET_FEATURE: switch (UGETW(req->wValue)) { case UF_ENDPOINT_HALT: - /* handle_set_halt */ + SAFE_OPS(fops, handle_set_halt, err); + break; case UF_DEVICE_REMOTE_WAKEUP: - /* handle_set_wakeup */ + SAFE_OPS(fops, handle_set_wakeup, err); + break; default: err = USB_ERR_STALLED; break; @@ -177,7 +381,8 @@ case UT_READ_ENDPOINT: switch (req->bRequest) { case UR_GET_STATUS: - /* handle_get_ep_status */ + SAFE_OPS(fops, handle_get_ep_status, err); + break; default: err = USB_ERR_STALLED; break; @@ -187,7 +392,8 @@ case UT_WRITE_INTERFACE: switch (req->bRequest) { case UR_SET_INTERFACE: - /* handle_set_interface */ + SAFE_OPS(fops, handle_set_interface, err); + break; case UR_CLEAR_FEATURE: break; case UR_SET_FEATURE: @@ -200,9 +406,11 @@ case UT_READ_INTERFACE: switch (req->bRequest) { case UR_GET_INTERFACE: - /* handle_get_interfac */ + SAFE_OPS(fops, handle_get_interface, err); + break; case UR_GET_STATUS: - /* handle_get_iface_status */ + SAFE_OPS(fops, handle_get_iface_status, err); + break; default: err = USB_ERR_STALLED; break; @@ -235,9 +443,11 @@ case UT_WRITE_CLASS_OTHER: switch (req->bRequest) { case UR_CLEAR_FEATURE: - /* handle_clear_port_feature */ + SAFE_OPS(fops, handle_clear_port_feature, err); + break; case UR_SET_FEATURE: - /* handle_set_port_feature */ + SAFE_OPS(fops, handle_set_port_feature, err); + break; case UR_CLEAR_TT_BUFFER: case UR_RESET_TT: case UR_STOP_TT: @@ -251,9 +461,11 @@ case UT_READ_CLASS_OTHER: switch (req->bRequest) { case UR_GET_TT_STATE: - /* handle_get_tt_state */ + SAFE_OPS(fops, handle_get_tt_state, err); + break; case UR_GET_STATUS: - /* handle_get_port_status */ + SAFE_OPS(fops, handle_get_port_status, err); + break; default: err = USB_ERR_STALLED; break; @@ -263,20 +475,44 @@ case UT_READ_CLASS_DEVICE: switch (req->bRequest) { case UR_GET_DESCRIPTOR: - /* handle_get_class_descriptor */ + SAFE_OPS(fops, handle_get_class_descriptor, err); + break; case UR_GET_STATUS: - /* handle_get_class_status */ - + SAFE_OPS(fops, handle_get_class_status, err); + break; default: err = USB_ERR_STALLED; break ; } break; default: - goto tr_stalled; + err = USB_ERR_STALLED; } *plength = len; *pptr = ptr; return (err); } + +static struct usb_roothub_fops generic_roothub_fops = { + &generic_get_descriptor, + &generic_get_config, + &generic_get_status, + &generic_set_address, + &generic_set_config, + &generic_clear_halt, + &generic_clear_wakeup, + &generic_set_halt, + &generic_set_wakeup, + &generic_get_ep_status, + &generic_set_interface, + &generic_get_interface, + &generic_get_iface_status, + &generic_clear_port_feature, + &generic_set_port_feature, + &generic_get_tt_state, + &generic_get_port_status, + &generic_get_class_descriptor, + &generic_get_class_status, +}; + ==== //depot/projects/soc2009/syl_usb/src/sys/modules/usb/usb/Makefile#2 (text+ko) ==== @@ -37,6 +37,6 @@ usb_dev.c usb_device.c usb_dynamic.c usb_error.c usb_generic.c \ usb_handle_request.c usb_hid.c usb_hub.c usb_lookup.c usb_mbuf.c \ usb_msctest.c usb_parse.c usb_process.c usb_request.c \ - usb_transfer.c usb_util.c + usb_roothub_exec.c usb_transfer.c usb_util.c .include From owner-p4-projects@FreeBSD.ORG Mon Aug 10 19:29:47 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 19A851065677; Mon, 10 Aug 2009 19:29:47 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CC4F81065670 for ; Mon, 10 Aug 2009 19:29:46 +0000 (UTC) (envelope-from marinosi@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id BADBC8FC15 for ; Mon, 10 Aug 2009 19:29:46 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7AJTkO6077699 for ; Mon, 10 Aug 2009 19:29:46 GMT (envelope-from marinosi@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7AJTkh5077697 for perforce@freebsd.org; Mon, 10 Aug 2009 19:29:46 GMT (envelope-from marinosi@FreeBSD.org) Date: Mon, 10 Aug 2009 19:29:46 GMT Message-Id: <200908101929.n7AJTkh5077697@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marinosi@FreeBSD.org using -f From: Ilias Marinos To: Perforce Change Reviews Cc: Subject: PERFORCE change 167187 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 19:29:48 -0000 http://perforce.freebsd.org/chv.cgi?CH=167187 Change 167187 by marinosi@marinosi_redrum on 2009/08/10 19:29:17 - Several fixes. - Added audit_slice_lookup() function. Affected files ... .. //depot/projects/soc2009/marinosi_appaudit/src/sys/bsm/audit_internal.h#6 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#15 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.h#13 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_worker.c#7 edit Differences ... ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/bsm/audit_internal.h#6 (text) ==== @@ -130,6 +130,9 @@ * milliseconds of time 4 bytes/8 bytes (32-bit/64-bit value) * * XXXRW: Should use fixed-length types here rather than struct timespec. + * + * Removed struct timespec to avoid padding. Have to check the length for the + * different architectures. */ struct bsm_rec_hdr { u_char token_id; @@ -137,7 +140,8 @@ u_char version; u_int16_t e_type; u_int16_t e_mod; - struct timespec tm; + time_t tv_sec; /* seconds */ + long tv_nsec; /* and nanoseconds */ } __packed; /* ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#15 (text) ==== @@ -711,9 +711,9 @@ /* * XXXRW: Locking needed here. Possibly we should fully initialize * the slice before inserting it on the list? + * FIXED. */ as_ptr = as; - TAILQ_INSERT_TAIL(&audit_slice_q, as, as_q); /* Initialize the base slice */ audit_slice_init(as, name); @@ -729,6 +729,9 @@ /* Create the special device node */ audit_slice_cdev_init(as); + /* Insert the slice on the list */ + TAILQ_INSERT_TAIL(&audit_slice_q, as, as_q); + AUDIT_SLICES_UNLOCK(); } @@ -806,9 +809,18 @@ * never be the base slice as it is not a slice queue element. */ int -audit_slice_destroy(struct audit_slice *as) +audit_slice_destroy(char *as_name) { + int error; + struct audit_slice *as = NULL; + error = audit_slice_lookup(as_name, as); + if (error) + return (1); + + if ( as == audit_base_slice ) + return (1); /* Cannot destroy base slice */ + AUDIT_SLICES_LOCK(); /* * XXXRW: Should either assert the record queue is empty, or drain @@ -816,11 +828,19 @@ * * XXXRW: Need to mtx_destroy the lock, cv_destroy the condition * variables? + * FIXED. + * Note: Maybe it's better to use macros for this. */ if (as != NULL) { AUDIT_SLICES_LOCK_ASSERT(); + cv_destroy(&(as)->audit_worker_cv); + cv_destroy(&(as)->audit_watermark_cv); + cv_destroy(&(as)->audit_fail_cv); + sx_destroy(&(as)->audit_worker_lock); + mtx_destroy(&(as)->audit_mtx); + mtx_destroy(&(as)->as_dev_mtx); + destroy_dev(as->as_dev); TAILQ_REMOVE(&audit_slice_q, as, as_q); - destroy_dev(as->as_dev); free(as, M_AUDITSLICE); } AUDIT_SLICES_UNLOCK(); @@ -841,7 +861,6 @@ int error; struct thread *td = NULL; - /* * XXXRW: This error value seems never to be used? Possibly we * should validate the record before calling audit_new, and return @@ -916,3 +935,44 @@ mtx_unlock(&(as->audit_mtx)); return (0); } + +/* + * audit_slice_lookup() performs a linear lookup in the audit slices queue + * bases on the slice name and sets up as to point to the actual slice + * instance. + * Returns '0' on success, error code on failure. + */ +int +audit_slice_lookup(char *as_name, struct audit_slice *as) +{ + int nbytes; + struct audit_slice *cur = NULL; + + nbytes = strlen(as_name); + if ( nbytes <= 0 || nbytes > AUDIT_SLICE_NAME_LEN ) + return (EINVAL); + + if ( strcmp(as_name, "audit_base_slice") == 0 ) { + as = audit_base_slice; + return (0); + } + + /* + * Use lock to prevent slice creation/removal while iterating through + * the queue, searching for a slice. + */ + AUDIT_SLICES_LOCK(); + TAILQ_FOREACH(cur, &audit_slice_q, as_q) { + if ( strcmp(cur->as_name, as_name) == 0 ) { + as = cur; + AUDIT_SLICES_UNLOCK(); + return (0); + } + } + + /* + * On failure.(slice not found) + */ + return (1); + +} ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.h#13 (text+ko) ==== @@ -176,7 +176,6 @@ /* Audit slices queue. */ extern struct audit_slice_queue audit_slice_q; - /* * Functions to manage the allocation, release, and commit of kernel audit * records and require audit_slice struct as arguments. @@ -191,8 +190,9 @@ void audit_worker_start(struct audit_slice *as); void audit_slice_init(struct audit_slice *as, char *name); void audit_slice_create(char *name); -int audit_slice_destroy(struct audit_slice *as); +int audit_slice_destroy(char *as_name); void audit_slice_cdev_init(struct audit_slice *as); int audit_slice_commit_rec(void *rec, struct audit_slice *as); +int audit_slice_lookup(char *as_name, struct audit_slice *as); #endif /* ! _SECURITY_AUDIT_SLICE_H_ */ ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_worker.c#7 (text) ==== @@ -445,6 +445,8 @@ * * XXXRW: We'd like to be able to rotate for slices other than * audit_base_slice in the future, as well. + * FIXED. + * Note: Added slice as argument. */ void audit_rotate_vnode(struct audit_slice *as, struct ucred *cred, struct vnode *vp) From owner-p4-projects@FreeBSD.ORG Mon Aug 10 19:29:48 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8ABC41065709; Mon, 10 Aug 2009 19:29:47 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ED4981065675 for ; Mon, 10 Aug 2009 19:29:46 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id DC56B8FC16 for ; Mon, 10 Aug 2009 19:29:46 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7AJTk1W077704 for ; Mon, 10 Aug 2009 19:29:46 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7AJTks9077702 for perforce@freebsd.org; Mon, 10 Aug 2009 19:29:46 GMT (envelope-from trasz@freebsd.org) Date: Mon, 10 Aug 2009 19:29:46 GMT Message-Id: <200908101929.n7AJTks9077702@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167188 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 19:29:49 -0000 http://perforce.freebsd.org/chv.cgi?CH=167188 Change 167188 by trasz@trasz_anger on 2009/08/10 19:29:42 Fix a bug, enable kassert. Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#54 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_prot.c#20 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#54 (text+ko) ==== @@ -599,12 +599,10 @@ #endif mtx_lock(&hrl_lock); -#ifdef notyet KASSERT(amount <= p->p_usage.hu_resources[resource], ("hrl_free_proc: freeing %lld of %s, which is more than allocated " "%lld for %s (pid %d)", amount, hrl_resource_name(resource), p->p_usage.hu_resources[resource], p->p_comm, p->p_pid)); -#endif p->p_usage.hu_resources[resource] -= amount; cred = p->p_ucred; cred->cr_ruidinfo->ui_usage.hu_resources[resource] -= amount; ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_prot.c#20 (text+ko) ==== @@ -2266,14 +2266,11 @@ { (void)chgproccnt(newcred->cr_ruidinfo, -1, 0); - hrl_free(HRL_RESOURCE_MAXPROCESSES, 1); newcred->cr_ruid = ruip->ui_uid; uihold(ruip); uifree(newcred->cr_ruidinfo); newcred->cr_ruidinfo = ruip; (void)chgproccnt(newcred->cr_ruidinfo, 1, 0); - /* XXX: What about the return value? */ - hrl_alloc(HRL_RESOURCE_MAXPROCESSES, 1); } /*- From owner-p4-projects@FreeBSD.ORG Mon Aug 10 20:21:44 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 16BE41065674; Mon, 10 Aug 2009 20:21:44 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C9183106566C for ; Mon, 10 Aug 2009 20:21:43 +0000 (UTC) (envelope-from stas@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B88418FC35 for ; Mon, 10 Aug 2009 20:21:43 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7AKLhBF082504 for ; Mon, 10 Aug 2009 20:21:43 GMT (envelope-from stas@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7AKLh6b082502 for perforce@freebsd.org; Mon, 10 Aug 2009 20:21:43 GMT (envelope-from stas@freebsd.org) Date: Mon, 10 Aug 2009 20:21:43 GMT Message-Id: <200908102021.n7AKLh6b082502@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to stas@freebsd.org using -f From: Stanislav Sedov To: Perforce Change Reviews Cc: Subject: PERFORCE change 167190 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 20:21:45 -0000 http://perforce.freebsd.org/chv.cgi?CH=167190 Change 167190 by stas@stas_orion on 2009/08/10 20:21:37 - For DSOs use filename for DebugInfo soname if .soname isn't available. This fixes spontaneous warnings on unitialised variables in ld-elf.so.1, as without properly initialized soname valgrind is unable to replace important functions in ld.so, which confused it. Affected files ... .. //depot/projects/valgrind/coregrind/m_debuginfo/readelf.c#6 edit Differences ... ==== //depot/projects/valgrind/coregrind/m_debuginfo/readelf.c#6 (text+ko) ==== @@ -1210,7 +1210,8 @@ prev_svma = phdr->p_vaddr; } - /* Try to get the soname. If there isn't one, use "NONE". + /* Try to get the soname. If there isn't one, try to use last + component of filename instead in DSO case. Otherwise use "NONE". The seginfo needs to have some kind of soname in order to facilitate writing redirect functions, since all redirect specifications require a soname (pattern). */ @@ -1254,6 +1255,19 @@ /* If, after looking at all the program headers, we still didn't find a soname, add a fake one. */ + if (di->soname == NULL && ehdr_img->e_type == ET_DYN && di->filename != NULL) { + char *filename = di->filename; + char *p = filename + VG_(strlen)(filename); + /* Extract last component. */ + while (*p != '/' && p > filename) + p--; + if (*p == '/') + p++; + if (*p != '\0') { + TRACE_SYMTAB("No soname found; using filename instead\n"); + di->soname = ML_(dinfo_strdup)("di.redi.1", p); + } + } if (di->soname == NULL) { TRACE_SYMTAB("No soname found; using (fake) \"NONE\"\n"); di->soname = "NONE"; From owner-p4-projects@FreeBSD.ORG Tue Aug 11 06:51:12 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8C632106566C; Tue, 11 Aug 2009 06:51:11 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4A5F0106564A for ; Tue, 11 Aug 2009 06:51:11 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 205D88FC1E for ; Tue, 11 Aug 2009 06:51:11 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7B6pB7t068378 for ; Tue, 11 Aug 2009 06:51:11 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7B6pA5s068376 for perforce@freebsd.org; Tue, 11 Aug 2009 06:51:10 GMT (envelope-from hselasky@FreeBSD.org) Date: Tue, 11 Aug 2009 06:51:10 GMT Message-Id: <200908110651.n7B6pA5s068376@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 167199 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 06:51:13 -0000 http://perforce.freebsd.org/chv.cgi?CH=167199 Change 167199 by hselasky@hselasky_laptop001 on 2009/08/11 06:50:16 USB storage: - remove incorrect fflags check. - reported by: Krassimir Slavchev Affected files ... .. //depot/projects/usb/src/sys/dev/usb/storage/urio.c#15 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/storage/urio.c#15 (text+ko) ==== @@ -390,9 +390,6 @@ { struct urio_softc *sc = usb_fifo_softc(fifo); - if ((fflags & (FWRITE | FREAD)) != (FWRITE | FREAD)) { - return (EACCES); - } if (fflags & FREAD) { /* clear stall first */ mtx_lock(&sc->sc_mtx); From owner-p4-projects@FreeBSD.ORG Tue Aug 11 07:57:28 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 017771065673; Tue, 11 Aug 2009 07:57:28 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B2BA6106566B; Tue, 11 Aug 2009 07:57:27 +0000 (UTC) (envelope-from hselasky@c2i.net) Received: from swip.net (mailfe12.swip.net [212.247.155.97]) by mx1.freebsd.org (Postfix) with ESMTP id 1F11F8FC2B; Tue, 11 Aug 2009 07:57:26 +0000 (UTC) X-Cloudmark-Score: 0.000000 [] X-Cloudmark-Analysis: v=1.0 c=1 a=8kq7sC2nJEMA:10 a=hlIU1J3LQChSjWV/CGRL5g==:17 a=9XHMQrXkheRothPeSJ0A:9 a=PoJaZNCj66FC4aB3vcWrCyqGg8MA:4 Received: from [193.217.167.6] (account mc467741@c2i.net HELO laptop.adsl.tele2.no) by mailfe12.swip.net (CommuniGate Pro SMTP 5.2.13) with ESMTPA id 1120686282; Tue, 11 Aug 2009 08:57:22 +0200 From: Hans Petter Selasky To: Sylvestre Gallon Date: Tue, 11 Aug 2009 08:57:27 +0200 User-Agent: KMail/1.11.4 (FreeBSD/8.0-BETA2; KDE/4.2.4; i386; ; ) References: <200908101921.n7AJLbUb077185@repoman.freebsd.org> In-Reply-To: <200908101921.n7AJLbUb077185@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200908110857.28422.hselasky@c2i.net> Cc: Perforce Change Reviews Subject: Re: PERFORCE change 167185 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 07:57:29 -0000 On Monday 10 August 2009 21:21:37 Sylvestre Gallon wrote: > +#define SAFE_OPS(fops, field, err) \ > + if (fops->field == NULL) \ > + err = generic_roothub_fops.field(sc, &len, &value, &index); > \ + else \ > + err = fops->field(sc, &len, &value, &index) > + There is another way you can solve this at compile time! #define USB_RHUB_SAFE_OPS \ .fieldxxx = , .fieldyyy = , struct usb_root_hub_ops table = { USB_ROOT_HUB_SAFE_OPS, .fieldxxx = , /* override */ }; This almost sounds like virtuals in C. Please check what the C99 standard says about initialising the same field multiple times. --HPS From owner-p4-projects@FreeBSD.ORG Tue Aug 11 08:51:23 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 158871065672; Tue, 11 Aug 2009 08:51:23 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C9730106566C for ; Tue, 11 Aug 2009 08:51:22 +0000 (UTC) (envelope-from zhaoshuai@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id AD1DA8FC15 for ; Tue, 11 Aug 2009 08:51:22 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7B8pMs2089085 for ; Tue, 11 Aug 2009 08:51:22 GMT (envelope-from zhaoshuai@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7B8pMFP089083 for perforce@freebsd.org; Tue, 11 Aug 2009 08:51:22 GMT (envelope-from zhaoshuai@FreeBSD.org) Date: Tue, 11 Aug 2009 08:51:22 GMT Message-Id: <200908110851.n7B8pMFP089083@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zhaoshuai@FreeBSD.org using -f From: Zhao Shuai To: Perforce Change Reviews Cc: Subject: PERFORCE change 167203 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 08:51:23 -0000 http://perforce.freebsd.org/chv.cgi?CH=167203 Change 167203 by zhaoshuai@zhaoshuai on 2009/08/11 08:51:05 - add __FBSDID in subr_pipe.c,sys_pipe.c and fifo_vnops.c - re-order pipepair_create() - move funsetown() to the top of pipe_close() Affected files ... .. //depot/projects/soc2009/fifo/sys/fs/fifofs/fifo_vnops.c#20 edit .. //depot/projects/soc2009/fifo/sys/kern/subr_pipe.c#9 edit .. //depot/projects/soc2009/fifo/sys/kern/sys_pipe.c#18 edit Differences ... ==== //depot/projects/soc2009/fifo/sys/fs/fifofs/fifo_vnops.c#20 (text+ko) ==== @@ -32,7 +32,7 @@ * SUCH DAMAGE. * * @(#)fifo_vnops.c 8.10 (Berkeley) 5/27/95 - * + * $FreeBSD: src/sys/fs/fifofs/fifo_vnops.c, XXX */ #include ==== //depot/projects/soc2009/fifo/sys/kern/subr_pipe.c#9 (text+ko) ==== @@ -2,9 +2,6 @@ * Copyright (c) 1996 John S. Dyson * All rights reserved. * - * Copyright (c) 2009 Zhao Shuai - * Google Summer of Code Project - * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -92,6 +89,7 @@ */ #include +__FBSDID("$FreeBSD"); #include "opt_mac.h" @@ -279,6 +277,46 @@ mtx_destroy(&pp->pp_mtx); } +int +pipepair_create(struct thread *td, struct pipe **p_rpipe, struct pipe **p_wpipe) +{ + struct pipepair *pp; + struct pipe *rpipe, *wpipe; + int error; + + pp = uma_zalloc(pipe_zone, M_WAITOK); +#ifdef MAC + /* + * The MAC label is shared between the connected endpoints. As a + * result mac_pipe_init() and mac_pipe_create() are called once + * for the pair, and not on the endpoints. + */ + mac_pipe_init(pp); + mac_pipe_create(td->td_ucred, pp); +#endif + rpipe = &pp->pp_rpipe; + wpipe = &pp->pp_wpipe; + *p_rpipe = rpipe; + *p_wpipe = wpipe; + + knlist_init(&rpipe->pipe_sel.si_note, PIPE_MTX(rpipe), NULL, NULL, + NULL); + knlist_init(&wpipe->pipe_sel.si_note, PIPE_MTX(wpipe), NULL, NULL, + NULL); + + if ((error = pipe_create(rpipe, 1)) != 0 || + (error = pipe_create(wpipe, 0)) != 0) { + pipe_close(rpipe); + pipe_close(wpipe); + return (error); + } + + rpipe->pipe_state |= PIPE_DIRECTOK; + wpipe->pipe_state |= PIPE_DIRECTOK; + + return (0); +} + /* * Allocate kva for pipe circular buffer, the space is pageable * This routine will 'realloc' the size of a pipe safely, if it fails @@ -1325,6 +1363,8 @@ KASSERT(cpipe != NULL, ("pipe_close: cpipe == NULL")); + funsetown(&cpipe->pipe_sigio); + PIPE_LOCK(cpipe); pipelock(cpipe, 0); pp = cpipe->pipe_pair; @@ -1377,9 +1417,6 @@ cpipe->pipe_present = PIPE_FINALIZED; knlist_destroy(&cpipe->pipe_sel.si_note); - /* XXX: is it OK to put it here? */ - funsetown(&cpipe->pipe_sigio); - /* * If both endpoints are now closed, release the memory for the * pipe pair. If not, unlock. @@ -1481,44 +1518,3 @@ PIPE_UNLOCK(rpipe); return (kn->kn_data >= PIPE_BUF); } - -int -pipepair_create(struct thread *td, struct pipe **p_rpipe, struct pipe **p_wpipe) -{ - struct pipepair *pp; - struct pipe *rpipe, *wpipe; - int error; - - pp = uma_zalloc(pipe_zone, M_WAITOK); - rpipe = &pp->pp_rpipe; - wpipe = &pp->pp_wpipe; - *p_rpipe = rpipe; - *p_wpipe = wpipe; - - knlist_init(&rpipe->pipe_sel.si_note, PIPE_MTX(rpipe), NULL, NULL, - NULL); - knlist_init(&wpipe->pipe_sel.si_note, PIPE_MTX(wpipe), NULL, NULL, - NULL); - - if ((error = pipe_create(rpipe, 1)) != 0 || - (error = pipe_create(wpipe, 0)) != 0) { - pipe_close(rpipe); - pipe_close(wpipe); - return (error); - } - - rpipe->pipe_state |= PIPE_DIRECTOK; - wpipe->pipe_state |= PIPE_DIRECTOK; - -#ifdef MAC - /* - * The MAC label is shared between the connected endpoints. As a - * result mac_pipe_init() and mac_pipe_create() are called once - * for the pair, and not on the endpoints. - */ - mac_pipe_init(pp); - mac_pipe_create(td->td_ucred, pp); -#endif - return (0); -} - ==== //depot/projects/soc2009/fifo/sys/kern/sys_pipe.c#18 (text+ko) ==== @@ -26,6 +26,7 @@ */ #include +__FBSDID("$FreeBSD"); #include #include From owner-p4-projects@FreeBSD.ORG Tue Aug 11 09:59:55 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9D1BC1065678; Tue, 11 Aug 2009 09:59:54 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 567BF106566B for ; Tue, 11 Aug 2009 09:59:54 +0000 (UTC) (envelope-from zhaoshuai@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 42E858FC20 for ; Tue, 11 Aug 2009 09:59:54 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7B9xs9B094898 for ; Tue, 11 Aug 2009 09:59:54 GMT (envelope-from zhaoshuai@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7B9xb82094884 for perforce@freebsd.org; Tue, 11 Aug 2009 09:59:37 GMT (envelope-from zhaoshuai@FreeBSD.org) Date: Tue, 11 Aug 2009 09:59:37 GMT Message-Id: <200908110959.n7B9xb82094884@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zhaoshuai@FreeBSD.org using -f From: Zhao Shuai To: Perforce Change Reviews Cc: Subject: PERFORCE change 167204 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 09:59:55 -0000 http://perforce.freebsd.org/chv.cgi?CH=167204 Change 167204 by zhaoshuai@zhaoshuai on 2009/08/11 09:59:04 integrate with HEAD Affected files ... .. //depot/projects/soc2009/fifo/sys/Makefile#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/acpica/OsdEnvironment.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/acpica/acpi_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/acpica/acpi_wakeup.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/acpica/madt.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/cpu_switch.S#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/dump_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/exception.S#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/genassym.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/identcpu.c#3 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/initcpu.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/intr_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/io_apic.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/local_apic.c#3 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/mca.c#1 branch .. //depot/projects/soc2009/fifo/sys/amd64/amd64/minidump_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/mp_machdep.c#3 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/msi.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/pmap.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/support.S#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/sys_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/trap.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/amd64/vm_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/conf/DEFAULTS#3 integrate .. //depot/projects/soc2009/fifo/sys/amd64/conf/GENERIC#3 integrate .. //depot/projects/soc2009/fifo/sys/amd64/conf/GENERIC.hints#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/conf/MAC#2 delete .. //depot/projects/soc2009/fifo/sys/amd64/conf/NOTES#3 integrate .. //depot/projects/soc2009/fifo/sys/amd64/ia32/ia32_exception.S#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/ia32/ia32_reg.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/ia32/ia32_signal.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/include/cpufunc.h#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/include/intr_machdep.h#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/include/mca.h#1 branch .. //depot/projects/soc2009/fifo/sys/amd64/include/md_var.h#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/include/param.h#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/include/pcb.h#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/include/pmap.h#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/include/smp.h#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/include/specialreg.h#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/include/vm.h#1 branch .. //depot/projects/soc2009/fifo/sys/amd64/include/vmparam.h#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/isa/atpic.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/isa/clock.c#3 integrate .. //depot/projects/soc2009/fifo/sys/amd64/linux32/linux.h#3 integrate .. //depot/projects/soc2009/fifo/sys/amd64/linux32/linux32_sysent.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/linux32/linux32_sysvec.c#3 integrate .. //depot/projects/soc2009/fifo/sys/amd64/pci/pci_bus.c#2 integrate .. //depot/projects/soc2009/fifo/sys/amd64/pci/pci_cfgreg.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/arm/busdma_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/arm/cpufunc.c#3 integrate .. //depot/projects/soc2009/fifo/sys/arm/arm/dump_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/arm/elf_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/arm/elf_trampoline.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/arm/intr.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/arm/locore.S#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/arm/machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/arm/minidump_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/arm/pmap.c#3 integrate .. //depot/projects/soc2009/fifo/sys/arm/arm/vm_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/at91/at91.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/at91/at91_cfata.c#3 integrate .. //depot/projects/soc2009/fifo/sys/arm/at91/at91_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/at91/at91_mci.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/at91/at91_spi.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/at91/at91_twi.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/at91/if_ate.c#3 integrate .. //depot/projects/soc2009/fifo/sys/arm/at91/ohci_atmelarm.c#2 delete .. //depot/projects/soc2009/fifo/sys/arm/conf/AVILA#3 integrate .. //depot/projects/soc2009/fifo/sys/arm/conf/AVILA.hints#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/conf/CAMBRIA#3 integrate .. //depot/projects/soc2009/fifo/sys/arm/conf/CAMBRIA.hints#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/conf/DB-78XXX#3 integrate .. //depot/projects/soc2009/fifo/sys/arm/conf/DB-88F5XXX#3 integrate .. //depot/projects/soc2009/fifo/sys/arm/conf/DB-88F6XXX#3 integrate .. //depot/projects/soc2009/fifo/sys/arm/include/intr.h#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/include/param.h#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/include/pmap.h#3 integrate .. //depot/projects/soc2009/fifo/sys/arm/include/vm.h#1 branch .. //depot/projects/soc2009/fifo/sys/arm/mv/common.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/mv/discovery/db78xxx.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/mv/discovery/discovery.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/mv/files.mv#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/mv/ic.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/mv/kirkwood/db88f6xxx.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/mv/kirkwood/kirkwood.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/mv/mv_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/mv/mv_sata.c#1 branch .. //depot/projects/soc2009/fifo/sys/arm/mv/mvreg.h#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/mv/mvwin.h#1 branch .. //depot/projects/soc2009/fifo/sys/arm/mv/orion/db88f5xxx.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/mv/orion/orion.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/mv/twsi.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/sa11x0/assabet_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/sa11x0/sa11x0_irqhandler.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/i80321/ep80219_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/i80321/i80321.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/i80321/i80321_pci.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/i80321/iq31244_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/i8134x/crb_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/i8134x/i81342.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/avila_ata.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/avila_led.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/avila_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/cambria_exp_space.c#1 branch .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/cambria_led.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/files.avila#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/files.ixp425#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/if_npe.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/ixp425.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/ixp425_iic.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/ixp425_npe.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/ixp425_npereg.h#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/ixp425_qmgr.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/ixp425_qmgr.h#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/ixp425reg.h#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/ixp425var.h#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/ixp425/uart_bus_ixp425.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/pxa/pxa_icu.c#2 integrate .. //depot/projects/soc2009/fifo/sys/arm/xscale/pxa/pxa_machdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/boot/common/boot.c#2 integrate .. //depot/projects/soc2009/fifo/sys/boot/common/ufsread.c#2 integrate .. //depot/projects/soc2009/fifo/sys/boot/forth/loader.conf#2 integrate .. //depot/projects/soc2009/fifo/sys/boot/i386/libi386/Makefile#2 integrate .. //depot/projects/soc2009/fifo/sys/boot/i386/libi386/biosacpi.c#2 integrate .. //depot/projects/soc2009/fifo/sys/boot/i386/libi386/biosdisk.c#2 integrate .. //depot/projects/soc2009/fifo/sys/boot/i386/libi386/biospnp.c#2 integrate .. //depot/projects/soc2009/fifo/sys/boot/i386/zfsboot/zfsboot.c#2 integrate .. //depot/projects/soc2009/fifo/sys/boot/ia64/ski/acpi_stub.c#2 integrate .. //depot/projects/soc2009/fifo/sys/boot/pc98/boot2/sys.c#2 integrate .. //depot/projects/soc2009/fifo/sys/boot/powerpc/uboot/version#2 integrate .. //depot/projects/soc2009/fifo/sys/boot/uboot/lib/disk.c#3 integrate .. //depot/projects/soc2009/fifo/sys/boot/uboot/lib/net.c#2 integrate .. //depot/projects/soc2009/fifo/sys/boot/zfs/zfsimpl.c#2 integrate .. //depot/projects/soc2009/fifo/sys/bsm/audit.h#2 integrate .. //depot/projects/soc2009/fifo/sys/bsm/audit_kevents.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/ata/ata_all.c#1 branch .. //depot/projects/soc2009/fifo/sys/cam/ata/ata_all.h#1 branch .. //depot/projects/soc2009/fifo/sys/cam/ata/ata_da.c#1 branch .. //depot/projects/soc2009/fifo/sys/cam/ata/ata_xpt.c#1 branch .. //depot/projects/soc2009/fifo/sys/cam/cam.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/cam.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/cam_ccb.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/cam_periph.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/cam_periph.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/cam_xpt.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/cam_xpt.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/cam_xpt_internal.h#1 branch .. //depot/projects/soc2009/fifo/sys/cam/cam_xpt_periph.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/scsi/scsi_all.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/scsi/scsi_cd.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/scsi/scsi_ch.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/scsi/scsi_da.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/scsi/scsi_pass.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/scsi/scsi_pt.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/scsi/scsi_sa.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/scsi/scsi_ses.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/scsi/scsi_sg.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/scsi/scsi_target.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cam/scsi/scsi_xpt.c#1 branch .. //depot/projects/soc2009/fifo/sys/cddl/boot/zfs/README#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/boot/zfs/zfsimpl.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/boot/zfs/zfssubr.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/compat/opensolaris/kern/opensolaris.c#3 integrate .. //depot/projects/soc2009/fifo/sys/cddl/compat/opensolaris/kern/opensolaris_acl.c#1 branch .. //depot/projects/soc2009/fifo/sys/cddl/compat/opensolaris/kern/opensolaris_kobj.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/compat/opensolaris/kern/opensolaris_misc.c#3 integrate .. //depot/projects/soc2009/fifo/sys/cddl/compat/opensolaris/kern/opensolaris_policy.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/compat/opensolaris/sys/acl.h#1 branch .. //depot/projects/soc2009/fifo/sys/cddl/compat/opensolaris/sys/mutex.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/compat/opensolaris/sys/rwlock.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/compat/opensolaris/sys/sig.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/compat/opensolaris/sys/vnode.h#3 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/common/acl/acl_common.c#3 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/common/acl/acl_common.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/common/nvpair/nvpair.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/fs/gfs.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c#3 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c#3 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#3 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#3 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/sys/acl.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/contrib/opensolaris/uts/common/sys/acl_impl.h#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/dev/dtrace/amd64/dtrace_isa.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/dev/dtrace/amd64/dtrace_subr.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/dev/dtrace/i386/dtrace_subr.c#2 integrate .. //depot/projects/soc2009/fifo/sys/cddl/dev/lockstat/lockstat.c#1 branch .. //depot/projects/soc2009/fifo/sys/compat/freebsd32/freebsd32_ipc.h#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/freebsd32/freebsd32_misc.c#3 integrate .. //depot/projects/soc2009/fifo/sys/compat/freebsd32/freebsd32_proto.h#3 integrate .. //depot/projects/soc2009/fifo/sys/compat/freebsd32/freebsd32_syscall.h#3 integrate .. //depot/projects/soc2009/fifo/sys/compat/freebsd32/freebsd32_syscalls.c#3 integrate .. //depot/projects/soc2009/fifo/sys/compat/freebsd32/freebsd32_sysent.c#3 integrate .. //depot/projects/soc2009/fifo/sys/compat/freebsd32/syscalls.master#3 integrate .. //depot/projects/soc2009/fifo/sys/compat/linprocfs/linprocfs.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/linux/linux_file.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/linux/linux_futex.c#3 integrate .. //depot/projects/soc2009/fifo/sys/compat/linux/linux_getcwd.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/linux/linux_ioctl.c#3 integrate .. //depot/projects/soc2009/fifo/sys/compat/linux/linux_ipc.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/linux/linux_mib.c#3 integrate .. //depot/projects/soc2009/fifo/sys/compat/linux/linux_misc.c#3 integrate .. //depot/projects/soc2009/fifo/sys/compat/linux/linux_signal.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/linux/linux_socket.c#3 integrate .. //depot/projects/soc2009/fifo/sys/compat/linux/linux_socket.h#3 integrate .. //depot/projects/soc2009/fifo/sys/compat/linux/linux_stats.c#3 integrate .. //depot/projects/soc2009/fifo/sys/compat/linux/linux_uid16.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/ndis/kern_ndis.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/ndis/kern_windrv.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/ndis/subr_ndis.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/ndis/subr_usbd.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/svr4/svr4_fcntl.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/svr4/svr4_ioctl.c#3 integrate .. //depot/projects/soc2009/fifo/sys/compat/svr4/svr4_ipc.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/svr4/svr4_misc.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/svr4/svr4_resource.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/svr4/svr4_signal.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/svr4/svr4_socket.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/svr4/svr4_sockio.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/svr4/svr4_stat.c#3 integrate .. //depot/projects/soc2009/fifo/sys/compat/svr4/svr4_stream.c#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/svr4/svr4_sysconfig.h#2 integrate .. //depot/projects/soc2009/fifo/sys/compat/svr4/svr4_sysent.c#3 integrate .. //depot/projects/soc2009/fifo/sys/conf/NOTES#3 integrate .. //depot/projects/soc2009/fifo/sys/conf/files#4 integrate .. //depot/projects/soc2009/fifo/sys/conf/files.amd64#2 integrate .. //depot/projects/soc2009/fifo/sys/conf/files.i386#3 integrate .. //depot/projects/soc2009/fifo/sys/conf/files.pc98#3 integrate .. //depot/projects/soc2009/fifo/sys/conf/files.powerpc#2 integrate .. //depot/projects/soc2009/fifo/sys/conf/kern.pre.mk#2 integrate .. //depot/projects/soc2009/fifo/sys/conf/kmod.mk#2 integrate .. //depot/projects/soc2009/fifo/sys/conf/newvers.sh#2 integrate .. //depot/projects/soc2009/fifo/sys/conf/options#3 integrate .. //depot/projects/soc2009/fifo/sys/contrib/altq/altq/altq_subr.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/CHANGES.txt#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acapps.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acconfig.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acdebug.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acdisasm.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acdispat.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acefi.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acenv.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acevents.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acexcep.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acfreebsd.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acgcc.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acglobal.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/achware.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acinterp.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/aclocal.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acmacros.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acnames.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acnamesp.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acobject.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acopcode.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acoutput.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acparser.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acpi.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acpica_prep.sh#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acpiosxf.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acpixf.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acresrc.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acstruct.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/actables.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/actbl.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/actbl1.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/actbl2.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/actypes.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/acutils.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/aecommon.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/amlcode.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/amlresrc.h#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/changes.txt#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/common/adfile.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/common/adisasm.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/common/adwalk.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/common/dmrestag.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/common/dmtable.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/common/dmtbdump.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/common/dmtbinfo.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/common/getopt.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslanalyze.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslcodegen.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslcompile.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslcompiler.h#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslcompiler.l#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslcompiler.y#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/asldefine.h#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslerror.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslfiles.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslfold.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslglobal.h#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/asllength.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/asllisting.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslload.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/asllookup.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslmain.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslmap.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslopcodes.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/asloperands.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslopt.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslresource.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslrestype1.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslrestype2.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslstartup.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslstubs.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/asltransform.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/asltree.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/asltypes.h#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/compiler/aslutils.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dbcmds.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dbdisply.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dbexec.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dbfileio.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dbhistry.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dbinput.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dbstats.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dbutils.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dbxface.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/debugger/dbcmds.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/debugger/dbdisply.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/debugger/dbexec.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/debugger/dbfileio.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/debugger/dbhistry.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/debugger/dbinput.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/debugger/dbstats.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/debugger/dbutils.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/debugger/dbxface.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/disassembler/dmbuffer.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/disassembler/dmnames.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/disassembler/dmobject.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/disassembler/dmopcode.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/disassembler/dmresrc.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/disassembler/dmresrcl.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/disassembler/dmresrcs.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/disassembler/dmutils.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/disassembler/dmwalk.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dispatcher/dsfield.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dispatcher/dsinit.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dispatcher/dsmethod.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dispatcher/dsmthdat.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dispatcher/dsobject.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dispatcher/dsopcode.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dispatcher/dsutils.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dispatcher/dswexec.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dispatcher/dswload.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dispatcher/dswscope.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dispatcher/dswstate.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dmbuffer.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dmnames.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dmobject.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dmopcode.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dmresrc.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dmresrcl.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dmresrcs.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dmutils.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dmwalk.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dsfield.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dsinit.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dsmethod.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dsmthdat.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dsobject.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dsopcode.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dsutils.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dswexec.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dswload.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dswscope.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/dswstate.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/events/evevent.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/events/evgpe.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/events/evgpeblk.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/events/evmisc.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/events/evregion.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/events/evrgnini.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/events/evsci.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/events/evxface.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/events/evxfevnt.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/events/evxfregn.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/evevent.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/evgpe.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/evgpeblk.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/evmisc.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/evregion.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/evrgnini.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/evsci.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/evxface.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/evxfevnt.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/evxfregn.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exconfig.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exconvrt.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/excreate.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exdump.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exconfig.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exconvrt.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/excreate.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exdump.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exfield.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exfldio.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exmisc.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exmutex.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exnames.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exoparg1.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exoparg2.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exoparg3.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exoparg6.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exprep.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exregion.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exresnte.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exresolv.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exresop.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exstore.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exstoren.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exstorob.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exsystem.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/executer/exutils.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exfield.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exfldio.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exmisc.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exmutex.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exnames.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exoparg1.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exoparg2.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exoparg3.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exoparg6.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exprep.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exregion.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exresnte.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exresolv.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exresop.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exstore.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exstoren.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exstorob.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exsystem.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/exutils.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/hardware/hwacpi.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/hardware/hwgpe.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/hardware/hwregs.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/hardware/hwsleep.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/hardware/hwtimer.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/hardware/hwvalid.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/hardware/hwxface.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/hwacpi.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/hwgpe.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/hwregs.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/hwsleep.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/hwtimer.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acapps.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/accommon.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acconfig.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acdebug.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acdisasm.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acdispat.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acevents.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acexcep.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acglobal.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/achware.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acinterp.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/aclocal.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acmacros.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acnames.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acnamesp.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acobject.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acopcode.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acoutput.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acparser.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acpi.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acpiosxf.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acpixf.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acpredef.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acresrc.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acrestyp.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acstruct.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/actables.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/actbl.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/actbl1.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/actypes.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/acutils.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/amlcode.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/amlresrc.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/platform/acenv.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/platform/acfreebsd.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/include/platform/acgcc.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nsaccess.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nsalloc.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nsdump.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nsdumpdv.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nseval.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nsinit.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nsload.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nsnames.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nsobject.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nsparse.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nspredef.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nssearch.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nsutils.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nswalk.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nsxfeval.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nsxfname.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/namespace/nsxfobj.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nsaccess.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nsalloc.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nsdump.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nsdumpdv.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nseval.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nsinit.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nsload.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nsnames.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nsobject.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nsparse.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nssearch.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nsutils.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nswalk.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nsxfeval.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nsxfname.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/nsxfobj.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/osunixxf.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/parser/psargs.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/parser/psloop.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/parser/psopcode.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/parser/psparse.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/parser/psscope.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/parser/pstree.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/parser/psutils.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/parser/pswalk.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/parser/psxface.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/psargs.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/psloop.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/psopcode.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/psparse.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/psscope.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/pstree.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/psutils.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/pswalk.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/psxface.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/resources/rsaddr.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/resources/rscalc.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/resources/rscreate.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/resources/rsdump.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/resources/rsinfo.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/resources/rsio.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/resources/rsirq.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/resources/rslist.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/resources/rsmemory.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/resources/rsmisc.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/resources/rsutils.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/resources/rsxface.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/rsaddr.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/rscalc.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/rscreate.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/rsdump.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/rsinfo.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/rsio.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/rsirq.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/rslist.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/rsmemory.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/rsmisc.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/rsutils.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/rsxface.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/tables/tbfadt.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/tables/tbfind.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/tables/tbinstal.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/tables/tbutils.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/tables/tbxface.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/tables/tbxfroot.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/tbfadt.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/tbfind.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/tbinstal.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/tbutils.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/tbxface.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/tbxfroot.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/tools/acpiexec/aecommon.h#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utalloc.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utcache.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utclib.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utcopy.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utdebug.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utdelete.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/uteval.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utglobal.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/utalloc.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/utcache.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/utcopy.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/utdebug.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/utdelete.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/uteval.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/utglobal.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/utinit.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/utlock.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/utmath.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/utmisc.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/utmutex.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/utobject.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/utresrc.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/utstate.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/uttrack.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utilities/utxface.c#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utinit.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utmath.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utmisc.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utmutex.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utobject.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utresrc.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utstate.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/uttrack.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/acpica/utxface.c#2 delete .. //depot/projects/soc2009/fifo/sys/contrib/dev/mwl/LICENSE#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/mwl/Makefile#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/mwl/mw88W8363.fw.uu#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/dev/mwl/mwlboot.fw.uu#1 branch .. //depot/projects/soc2009/fifo/sys/contrib/ipfilter/netinet/fil.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/ipfilter/netinet/ip_nat.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/ngatm/netnatm/sig/sig_uni.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/pf/net/if_pflog.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/pf/net/pf.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/pf/net/pf_if.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/pf/net/pf_ioctl.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/pf/net/pf_subr.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/pf/net/pfvar.h#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/rdma/rdma_addr.c#2 integrate .. //depot/projects/soc2009/fifo/sys/contrib/rdma/rdma_cma.c#2 integrate .. //depot/projects/soc2009/fifo/sys/crypto/via/padlock_hash.c#2 integrate .. //depot/projects/soc2009/fifo/sys/ddb/db_expr.c#2 integrate .. //depot/projects/soc2009/fifo/sys/ddb/db_sym.c#2 integrate .. //depot/projects/soc2009/fifo/sys/ddb/db_textdump.c#2 integrate .. //depot/projects/soc2009/fifo/sys/ddb/db_variables.c#2 integrate .. //depot/projects/soc2009/fifo/sys/ddb/db_variables.h#2 integrate .. //depot/projects/soc2009/fifo/sys/ddb/ddb.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/aac/aac.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/aac/aac_disk.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpi_support/acpi_aiboost.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpi_support/acpi_asus.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpi_support/acpi_fujitsu.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpi_support/acpi_hp.c#1 branch .. //depot/projects/soc2009/fifo/sys/dev/acpi_support/acpi_ibm.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpi_support/acpi_panasonic.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpi_support/acpi_sony.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpi_support/acpi_toshiba.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpi_support/acpi_wmi.c#1 branch .. //depot/projects/soc2009/fifo/sys/dev/acpi_support/acpi_wmi_if.m#1 branch .. //depot/projects/soc2009/fifo/sys/dev/acpica/Osd/OsdDebug.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/Osd/OsdHardware.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/Osd/OsdInterrupt.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/Osd/OsdMemory.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/Osd/OsdSchedule.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/Osd/OsdStream.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/Osd/OsdSynch.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/Osd/OsdTable.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_acad.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_battery.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_button.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_cmbat.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_cpu.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_dock.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_ec.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_hpet.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_if.m#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_isab.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_lid.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_package.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_pci.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_pci_link.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_pcib.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_pcib_acpi.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_pcib_pci.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_perf.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_powerres.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_quirk.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_resource.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_smbat.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_thermal.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_throttle.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_timer.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpi_video.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/acpica/acpivar.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/adb/adb_bus.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/advansys/advansys.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/advansys/advlib.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ae/if_ae.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/age/if_age.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/agp/agp_ali.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/agp/agp_amd.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/agp/agp_ati.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/agp/agp_nvidia.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/agp/agp_sis.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ahci/ahci.c#1 branch .. //depot/projects/soc2009/fifo/sys/dev/ahci/ahci.h#1 branch .. //depot/projects/soc2009/fifo/sys/dev/aic/aic.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/aic7xxx/aic79xx_osm.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/aic7xxx/aic7xxx_osm.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/aic7xxx/aicasm/Makefile#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/aic7xxx/aicasm/aicasm.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/aic7xxx/aicasm/aicasm_gram.y#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/aic7xxx/aicasm/aicasm_macro_gram.y#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/aic7xxx/aicasm/aicasm_scan.l#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/aic7xxx/aicasm/aicasm_symbol.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/aic7xxx/aicasm/aicasm_symbol.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/alc/if_alc.c#1 branch .. //depot/projects/soc2009/fifo/sys/dev/alc/if_alcreg.h#1 branch .. //depot/projects/soc2009/fifo/sys/dev/alc/if_alcvar.h#1 branch .. //depot/projects/soc2009/fifo/sys/dev/ale/if_ale.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/amd/amd.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/amdtemp/amdtemp.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/amr/amr.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/amr/amr_linux.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/arcmsr/arcmsr.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/asmc/asmc.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/asmc/asmcvar.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/ata-all.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/ata-all.h#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/ata-dma.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/ata-pci.h#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/ata-sata.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/ata-usb.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/atapi-cam.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/atapi-cd.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-acard.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-acerlabs.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-adaptec.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-ahci.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-amd.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-ati.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-cenatek.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-cypress.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-cyrix.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-highpoint.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-intel.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-ite.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-jmicron.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-marvell.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-micron.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-national.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-netcell.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-nvidia.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-promise.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-serverworks.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-siliconimage.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-sis.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ata/chipsets/ata-via.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ah_osdep.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ah_osdep.h#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ah.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ah.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ah_desc.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ah_internal.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ar5210/ar5210_interrupts.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ar5211/ar5211_interrupts.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ar5212/ar5212_interrupts.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ar5212/ar5212_xmit.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ar5212/ar5212reg.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/ath_rate/sample/sample.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/if_ath.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/if_ath_pci.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ath/if_athvar.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/atkbdc/psm.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/bce/if_bce.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/bce/if_bcereg.h#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/bfe/if_bfe.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/bge/if_bge.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/bktr/bktr_os.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/bm/if_bm.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/bwi/bwiphy.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/bwi/if_bwi.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/bwi/if_bwi_pci.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/bwi/if_bwireg.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/bwi/if_bwivar.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cas/if_cas.c#1 branch .. //depot/projects/soc2009/fifo/sys/dev/cas/if_casreg.h#1 branch .. //depot/projects/soc2009/fifo/sys/dev/cas/if_casvar.h#1 branch .. //depot/projects/soc2009/fifo/sys/dev/ce/if_ce.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cfe/cfe_console.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cfi/cfi_core.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ciss/ciss.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ciss/cissvar.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cp/if_cp.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cpuctl/cpuctl.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cs/if_cs.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ctau/if_ct.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cx/if_cx.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cxgb/common/cxgb_ael1002.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cxgb/common/cxgb_common.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cxgb/common/cxgb_t3_cpl.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cxgb/common/cxgb_t3_hw.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cxgb/cxgb_adapter.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cxgb/cxgb_main.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cxgb/cxgb_multiq.c#3 delete .. //depot/projects/soc2009/fifo/sys/dev/cxgb/cxgb_osdep.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cxgb/cxgb_sge.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cxgb/sys/cxgb_support.c#2 delete .. //depot/projects/soc2009/fifo/sys/dev/cxgb/sys/mvec.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cxgb/sys/uipc_mvec.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/dc/if_dc.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/dcons/dcons_os.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/de/if_de.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/drm/drmP.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/drm/drm_bufs.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/drm/drm_context.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/drm/drm_drv.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/drm/drm_irq.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/drm/drm_pciids.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/drm/drm_sysctl.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/drm/i915_dma.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/drm/i915_drv.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/drm/i915_drv.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/drm/i915_irq.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/drm/r600_cp.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/drm/radeon_cp.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/drm/radeon_drv.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/drm/radeon_irq.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_82540.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_82541.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_82542.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_82571.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_82575.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_82575.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_api.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_defines.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_hw.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_ich8lan.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_ich8lan.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_mac.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_osdep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_phy.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_phy.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/e1000_regs.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/if_em.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/if_em.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/if_igb.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/e1000/if_igb.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ed/if_ed.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/eisa/eisaconf.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ep/if_ep.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/et/if_et.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ex/if_ex.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/fdc/fdc.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/fdc/fdc_acpi.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/fe/if_fe.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/firewire/firewire.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/firewire/fwdev.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/firewire/if_fwe.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/firewire/if_fwip.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/flash/at45d.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/fxp/if_fxp.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/fxp/if_fxpvar.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/gem/if_gem.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/gem/if_gem_pci.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/gem/if_gem_sbus.c#1 branch .. //depot/projects/soc2009/fifo/sys/dev/gem/if_gemreg.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/gem/if_gemvar.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/hme/if_hme.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/hptmv/atapi.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/hptrr/hptrr_config.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/hwpmc/hwpmc_logging.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/hwpmc/hwpmc_mod.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ic/ns16550.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ie/if_ie.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/if_ndis/if_ndis.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/if_ndis/if_ndis_pccard.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/if_ndis/if_ndis_pci.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/if_ndis/if_ndis_usb.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/if_ndis/if_ndisvar.h#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/iir/iir.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/iir/iir_ctrl.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/iir/iir_pci.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ipmi/ipmi_acpi.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ips/ips_pci.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ipw/if_ipw.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/ipw/if_ipwvar.h#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/iscsi/initiator/isc_soc.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/isp/isp.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/isp/isp_freebsd.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/isp/isp_freebsd.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/isp/isp_ioctl.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/isp/isp_library.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/isp/isp_library.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/isp/isp_pci.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/isp/isp_sbus.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/isp/isp_stds.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/isp/isp_target.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/isp/isp_target.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/isp/ispmbox.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/isp/ispreg.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/isp/ispvar.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ispfw/asm_2300.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ispfw/asm_2400.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ispfw/asm_2500.h#1 branch .. //depot/projects/soc2009/fifo/sys/dev/ispfw/ispfw.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/iwi/if_iwi.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/iwi/if_iwivar.h#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/iwn/if_iwn.c#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/iwn/if_iwnvar.h#3 integrate .. //depot/projects/soc2009/fifo/sys/dev/ixgb/if_ixgb.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ixgbe/ixgbe.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ixgbe/ixgbe.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ixgbe/ixgbe_82598.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ixgbe/ixgbe_82599.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ixgbe/ixgbe_api.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ixgbe/ixgbe_api.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ixgbe/ixgbe_common.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ixgbe/ixgbe_osdep.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ixgbe/ixgbe_phy.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ixgbe/ixgbe_phy.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ixgbe/ixgbe_type.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/jme/if_jme.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/kbd/kbd.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/kbdmux/kbdmux.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ksyms/ksyms.c#1 branch .. //depot/projects/soc2009/fifo/sys/dev/le/lance.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/lge/if_lge.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/lmc/if_lmc.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/lmc/if_lmc.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/malo/if_malo.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/malo/if_malo.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/malo/if_malo_pci.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mca/mca_bus.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/md/md.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mfi/mfi.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mfi/mfi_linux.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mfi/mfivar.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mge/if_mge.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mii/e1000phy.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mii/e1000phyreg.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mii/miidevs#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mii/nsgphy.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mlx/mlx.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mlx/mlxvar.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mmc/mmc.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mpt/mpt.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mpt/mpt_cam.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mpt/mpt_pci.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mpt/mpt_raid.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mpt/mpt_user.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/msk/if_msk.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/msk/if_mskreg.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mwl/if_mwl.c#1 branch .. //depot/projects/soc2009/fifo/sys/dev/mwl/if_mwl_pci.c#1 branch .. //depot/projects/soc2009/fifo/sys/dev/mwl/if_mwlioctl.h#1 branch .. //depot/projects/soc2009/fifo/sys/dev/mwl/if_mwlvar.h#1 branch .. //depot/projects/soc2009/fifo/sys/dev/mwl/mwldiag.h#1 branch .. //depot/projects/soc2009/fifo/sys/dev/mwl/mwlhal.c#1 branch .. //depot/projects/soc2009/fifo/sys/dev/mwl/mwlhal.h#1 branch .. //depot/projects/soc2009/fifo/sys/dev/mwl/mwlreg.h#1 branch .. //depot/projects/soc2009/fifo/sys/dev/mxge/eth_z8e.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mxge/ethp_z8e.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mxge/if_mxge.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mxge/if_mxge_var.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mxge/mxge_lro.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mxge/rss_eth_z8e.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/mxge/rss_ethp_z8e.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/my/if_my.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ncv/ncr53c500_pccard.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/nfe/if_nfe.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/nge/if_nge.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/nge/if_ngereg.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/nmdm/nmdm.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/nsp/nsp_pccard.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/nve/if_nve.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/nxge/if_nxge.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ofw/ofw_bus_subr.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ofw/ofw_bus_subr.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ofw/ofw_console.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ofw/ofw_disk.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ofw/ofw_if.m#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ofw/ofw_iicbus.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ofw/ofw_standard.c#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ofw/ofwvar.h#2 integrate .. //depot/projects/soc2009/fifo/sys/dev/ofw/openfirm.c#2 integrate >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Tue Aug 11 10:19:16 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2A7D01065676; Tue, 11 Aug 2009 10:19:16 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DE96F1065673 for ; Tue, 11 Aug 2009 10:19:15 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id CDDDF8FC39 for ; Tue, 11 Aug 2009 10:19:15 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BAJFCb097298 for ; Tue, 11 Aug 2009 10:19:15 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BAJFr3097296 for perforce@freebsd.org; Tue, 11 Aug 2009 10:19:15 GMT (envelope-from zec@fer.hr) Date: Tue, 11 Aug 2009 10:19:15 GMT Message-Id: <200908111019.n7BAJFr3097296@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167205 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 10:19:17 -0000 http://perforce.freebsd.org/chv.cgi?CH=167205 Change 167205 by zec@zec_tpx32 on 2009/08/11 10:18:59 Make VNET_DEBUG a standalone compile-time option, i.e. decouple it from WITNESS. Suggested by: bz Affected files ... .. //depot/projects/vimage-commit2/src/sys/conf/NOTES#36 edit .. //depot/projects/vimage-commit2/src/sys/conf/options#37 edit .. //depot/projects/vimage-commit2/src/sys/net/vnet.h#30 edit Differences ... ==== //depot/projects/vimage-commit2/src/sys/conf/NOTES#36 (text+ko) ==== @@ -273,6 +273,10 @@ options WITNESS_KDB options WITNESS_SKIPSPIN +# VNET_DEBUG attempts to detect usage of faulty / NULL vnets, and +# reports unintended curvnet recursions on console. +options VNET_DEBUG + # LOCK_PROFILING - Profiling locks. See LOCK_PROFILING(9) for details. options LOCK_PROFILING # Set the number of buffers and the hash size. The hash size MUST be larger ==== //depot/projects/vimage-commit2/src/sys/conf/options#37 (text+ko) ==== @@ -659,6 +659,9 @@ WITNESS_KDB opt_witness.h WITNESS_SKIPSPIN opt_witness.h +# VIMAGE / VNET debugging +VNET_DEBUG opt_global.h + # options for ACPI support ACPI_DEBUG opt_acpi.h ACPI_MAX_TASKS opt_acpi.h ==== //depot/projects/vimage-commit2/src/sys/net/vnet.h#30 (text+ko) ==== @@ -107,9 +107,6 @@ * Various macros -- get and set the current network stack, but also * assertions. */ -#ifdef INVARIANTS -#define VNET_DEBUG -#endif #ifdef VNET_DEBUG #define VNET_ASSERT(condition) \ if (!(condition)) { \ From owner-p4-projects@FreeBSD.ORG Tue Aug 11 11:36:41 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CBAAC1065673; Tue, 11 Aug 2009 11:36:40 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8A741106566B for ; Tue, 11 Aug 2009 11:36:40 +0000 (UTC) (envelope-from zhaoshuai@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 77A658FC3D for ; Tue, 11 Aug 2009 11:36:40 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BBaem4004266 for ; Tue, 11 Aug 2009 11:36:40 GMT (envelope-from zhaoshuai@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BBaecd004264 for perforce@freebsd.org; Tue, 11 Aug 2009 11:36:40 GMT (envelope-from zhaoshuai@FreeBSD.org) Date: Tue, 11 Aug 2009 11:36:40 GMT Message-Id: <200908111136.n7BBaecd004264@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zhaoshuai@FreeBSD.org using -f From: Zhao Shuai To: Perforce Change Reviews Cc: Subject: PERFORCE change 167206 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 11:36:41 -0000 http://perforce.freebsd.org/chv.cgi?CH=167206 Change 167206 by zhaoshuai@zhaoshuai on 2009/08/11 11:36:35 integrate with HEAD Affected files ... .. //depot/projects/soc2009/fifo/sys/fs/fifofs/fifo_vnops.c#22 edit .. //depot/projects/soc2009/fifo/sys/kern/sys_pipe.c#20 edit .. //depot/projects/soc2009/fifo/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c#2 integrate .. //depot/projects/soc2009/fifo/sys/netgraph/bluetooth/drivers/ubt/ng_ubt_var.h#2 integrate .. //depot/projects/soc2009/fifo/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c#2 integrate Differences ... ==== //depot/projects/soc2009/fifo/sys/fs/fifofs/fifo_vnops.c#22 (text+ko) ==== @@ -3,6 +3,9 @@ * The Regents of the University of California. * Copyright (c) 2005 Robert N. M. Watson * All rights reserved. + * + * Copyright (c) 2009 Zhao Shuai + * Google Summer of Code project * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -29,50 +32,43 @@ * SUCH DAMAGE. * * @(#)fifo_vnops.c 8.10 (Berkeley) 5/27/95 - * $FreeBSD: src/sys/fs/fifofs/fifo_vnops.c,v 1.152 2009/07/07 09:43:44 kib Exp $ + * $FreeBSD: src/sys/fs/fifofs/fifo_vnops.c, XXX */ #include -#include -#include #include #include #include #include #include #include -#include #include -#include -#include -#include -#include -#include -#include -#include +#include #include #include +#include +#include #include -static fo_rdwr_t fifo_read_f; -static fo_rdwr_t fifo_write_f; -static fo_ioctl_t fifo_ioctl_f; -static fo_poll_t fifo_poll_f; -static fo_kqfilter_t fifo_kqfilter_f; -static fo_stat_t fifo_stat_f; -static fo_close_t fifo_close_f; -static fo_truncate_t fifo_truncate_f; +static fo_rdwr_t fifo_read_f; +static fo_rdwr_t fifo_write_f; +static fo_ioctl_t fifo_ioctl_f; +static fo_poll_t fifo_poll_f; +static fo_kqfilter_t fifo_kqfilter_f; +static fo_stat_t fifo_stat_f; +static fo_close_t fifo_close_f; +static fo_truncate_t fifo_truncate_f; struct fileops fifo_ops_f = { - .fo_read = fifo_read_f, - .fo_write = fifo_write_f, - .fo_truncate = fifo_truncate_f, - .fo_ioctl = fifo_ioctl_f, - .fo_poll = fifo_poll_f, - .fo_kqfilter = fifo_kqfilter_f, - .fo_stat = fifo_stat_f, - .fo_close = fifo_close_f, - .fo_flags = DFLAG_PASSABLE + .fo_read = fifo_read_f, + .fo_write = fifo_write_f, + .fo_truncate = fifo_truncate_f, + .fo_ioctl = fifo_ioctl_f, + .fo_poll = fifo_poll_f, + .fo_kqfilter = fifo_kqfilter_f, + .fo_stat = fifo_stat_f, + .fo_close = fifo_close_f, + .fo_flags = DFLAG_PASSABLE }; /* @@ -80,43 +76,42 @@ * the state associated with the FIFO. */ struct fifoinfo { - struct socket *fi_readsock; - struct socket *fi_writesock; + struct pipe *fi_rpipe; + struct pipe *fi_wpipe; long fi_readers; long fi_writers; - int fi_wgen; }; static vop_print_t fifo_print; static vop_open_t fifo_open; static vop_close_t fifo_close; +static vop_ioctl_t fifo_ioctl; +static vop_kqfilter_t fifo_kqfilter; static vop_pathconf_t fifo_pathconf; static vop_advlock_t fifo_advlock; -static void filt_fifordetach(struct knote *kn); +static void filt_fifodetach(struct knote *kn); static int filt_fiforead(struct knote *kn, long hint); -static void filt_fifowdetach(struct knote *kn); static int filt_fifowrite(struct knote *kn, long hint); static void filt_fifodetach_notsup(struct knote *kn); static int filt_fifo_notsup(struct knote *kn, long hint); static struct filterops fiforead_filtops = - { 1, NULL, filt_fifordetach, filt_fiforead }; + { 1, NULL, filt_fifodetach, filt_fiforead }; static struct filterops fifowrite_filtops = - { 1, NULL, filt_fifowdetach, filt_fifowrite }; -static struct filterops fifo_notsup_filtops = + { 1, NULL, filt_fifodetach, filt_fifowrite }; +static struct filterops fifo_notsup_filtops = { 1, NULL, filt_fifodetach_notsup, filt_fifo_notsup }; struct vop_vector fifo_specops = { .vop_default = &default_vnodeops, - .vop_access = VOP_EBADF, .vop_advlock = fifo_advlock, .vop_close = fifo_close, .vop_create = VOP_PANIC, .vop_getattr = VOP_EBADF, - .vop_ioctl = VOP_PANIC, - .vop_kqfilter = VOP_PANIC, + .vop_ioctl = fifo_ioctl, + .vop_kqfilter = fifo_kqfilter, .vop_link = VOP_PANIC, .vop_mkdir = VOP_PANIC, .vop_mknod = VOP_PANIC, @@ -140,23 +135,6 @@ MTX_SYSINIT(fifo, &fifo_mtx, "fifo mutex", MTX_DEF); /* - * Dispose of fifo resources. - */ -static void -fifo_cleanup(struct vnode *vp) -{ - struct fifoinfo *fip = vp->v_fifoinfo; - - ASSERT_VOP_ELOCKED(vp, "fifo_cleanup"); - if (fip->fi_readers == 0 && fip->fi_writers == 0) { - vp->v_fifoinfo = NULL; - (void)soclose(fip->fi_readsock); - (void)soclose(fip->fi_writesock); - free(fip, M_VNODE); - } -} - -/* * Open called to set up a new instance of a fifo or * to find an active instance of a fifo. */ @@ -168,15 +146,14 @@ int a_mode; struct ucred *a_cred; struct thread *a_td; - struct file *a_fp; + int a_fdidx; } */ *ap; { struct vnode *vp = ap->a_vp; + struct file *fp = ap->a_fp; + struct thread *td = ap->a_td; struct fifoinfo *fip; - struct thread *td = ap->a_td; - struct ucred *cred = ap->a_cred; - struct file *fp = ap->a_fp; - struct socket *rso, *wso; + struct pipe *rpipe, *wpipe; int error; ASSERT_VOP_ELOCKED(vp, "fifo_open"); @@ -184,30 +161,15 @@ return (EINVAL); if ((fip = vp->v_fifoinfo) == NULL) { fip = malloc(sizeof(*fip), M_VNODE, M_WAITOK); - error = socreate(AF_LOCAL, &rso, SOCK_STREAM, 0, cred, td); - if (error) - goto fail1; - fip->fi_readsock = rso; - error = socreate(AF_LOCAL, &wso, SOCK_STREAM, 0, cred, td); - if (error) - goto fail2; - fip->fi_writesock = wso; - error = soconnect2(wso, rso); + error = pipepair_create(td, &rpipe, &wpipe); if (error) { - (void)soclose(wso); -fail2: - (void)soclose(rso); -fail1: free(fip, M_VNODE); return (error); } + fip->fi_rpipe = rpipe; + fip->fi_wpipe = wpipe; fip->fi_readers = fip->fi_writers = 0; - wso->so_snd.sb_lowat = PIPE_BUF; - SOCKBUF_LOCK(&rso->so_rcv); - rso->so_rcv.sb_state |= SBS_CANTRCVMORE; - SOCKBUF_UNLOCK(&rso->so_rcv); - KASSERT(vp->v_fifoinfo == NULL, - ("fifo_open: v_fifoinfo race")); + KASSERT(vp->v_fifoinfo == NULL, ("fifo_open: v_fifoinfo race")); vp->v_fifoinfo = fip; } @@ -224,44 +186,34 @@ mtx_lock(&fifo_mtx); if (ap->a_mode & FREAD) { fip->fi_readers++; - if (fip->fi_readers == 1) { - SOCKBUF_LOCK(&fip->fi_writesock->so_snd); - fip->fi_writesock->so_snd.sb_state &= ~SBS_CANTSENDMORE; - SOCKBUF_UNLOCK(&fip->fi_writesock->so_snd); - if (fip->fi_writers > 0) { - wakeup(&fip->fi_writers); - sowwakeup(fip->fi_writesock); - } - } - fp->f_seqcount = fip->fi_wgen - fip->fi_writers; + if (fip->fi_readers == 1 && fip->fi_writers > 0) + wakeup(&fip->fi_writers); } if (ap->a_mode & FWRITE) { if ((ap->a_mode & O_NONBLOCK) && fip->fi_readers == 0) { + /* XXX release all resources here? */ mtx_unlock(&fifo_mtx); return (ENXIO); } - fip->fi_writers++; - if (fip->fi_writers == 1) { - SOCKBUF_LOCK(&fip->fi_readsock->so_rcv); - fip->fi_readsock->so_rcv.sb_state &= ~SBS_CANTRCVMORE; - SOCKBUF_UNLOCK(&fip->fi_readsock->so_rcv); - if (fip->fi_readers > 0) { - wakeup(&fip->fi_readers); - sorwakeup(fip->fi_readsock); - } - } + fip->fi_writers++; + if (fip->fi_writers == 1 && fip->fi_readers > 0) + wakeup(&fip->fi_readers); } if ((ap->a_mode & O_NONBLOCK) == 0) { if ((ap->a_mode & FREAD) && fip->fi_writers == 0) { VOP_UNLOCK(vp, 0); - error = msleep(&fip->fi_readers, &fifo_mtx, - PDROP | PCATCH | PSOCK, "fifoor", 0); + error = msleep(&fip->fi_readers, &fifo_mtx, + PDROP | PCATCH, "fifoor", 0); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); if (error) { fip->fi_readers--; if (fip->fi_readers == 0) { - socantsendmore(fip->fi_writesock); - fifo_cleanup(vp); + pipe_close(fip->fi_rpipe); + if (fip->fi_writers == 0) { + pipe_close(fip->fi_wpipe); + vp->v_fifoinfo = NULL; + free(fip, M_VNODE); + } } return (error); } @@ -270,21 +222,22 @@ * We must have got woken up because we had a writer. * That (and not still having one) is the condition * that we must wait for. - */ + */ } if ((ap->a_mode & FWRITE) && fip->fi_readers == 0) { VOP_UNLOCK(vp, 0); error = msleep(&fip->fi_writers, &fifo_mtx, - PDROP | PCATCH | PSOCK, "fifoow", 0); + PDROP | PCATCH, "fifoow", 0); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); if (error) { fip->fi_writers--; if (fip->fi_writers == 0) { - socantrcvmore(fip->fi_readsock); - mtx_lock(&fifo_mtx); - fip->fi_wgen++; - mtx_unlock(&fifo_mtx); - fifo_cleanup(vp); + pipe_close(fip->fi_wpipe); + if (fip->fi_readers == 0) { + pipe_close(fip->fi_rpipe); + vp->v_fifoinfo = NULL; + free(fip, M_VNODE); + } } return (error); } @@ -303,60 +256,95 @@ return (0); } +/* + * Now unused vnode ioctl routine. + */ +/* ARGSUSED */ +static int +fifo_ioctl(ap) + struct vop_ioctl_args /* { + struct vnode *a_vp; + u_long a_command; + caddr_t a_data; + int a_fflag; + struct ucred *a_cred; + struct thread *a_td; + } */ *ap; +{ + + printf("WARNING: fifo_ioctl called unexpectedly\n"); + return (ENOTTY); +} + +/* + * Now unused vnode kqfilter routine. + */ +/* ARGSUSED */ +static int +fifo_kqfilter(ap) + struct vop_kqfilter_args /* { + struct vnode *a_vp; + struct knote *a_kn; + } */ *ap; +{ + + printf("WARNING: fifo_kqfilter called unexpectedly\n"); + return (EINVAL); +} + static void -filt_fifordetach(struct knote *kn) +filt_fifodetach(struct knote *kn) { - struct socket *so = (struct socket *)kn->kn_hook; + struct pipe *pipe = (struct pipe *)kn->kn_hook; - SOCKBUF_LOCK(&so->so_rcv); - knlist_remove(&so->so_rcv.sb_sel.si_note, kn, 1); - if (knlist_empty(&so->so_rcv.sb_sel.si_note)) - so->so_rcv.sb_flags &= ~SB_KNOTE; - SOCKBUF_UNLOCK(&so->so_rcv); + PIPE_LOCK(pipe); + knlist_remove(&pipe->pipe_sel.si_note, kn, 1); + PIPE_UNLOCK(pipe); } static int filt_fiforead(struct knote *kn, long hint) { - struct socket *so = (struct socket *)kn->kn_hook; + struct pipe *rpipe = (struct pipe *)kn->kn_hook; + struct pipe *wpipe = rpipe->pipe_peer; + int ret; + + PIPE_LOCK(rpipe); + kn->kn_data = rpipe->pipe_buffer.cnt; + if ((kn->kn_data == 0) && (rpipe->pipe_state & PIPE_DIRECTW)) + kn->kn_data = rpipe->pipe_map.cnt; - SOCKBUF_LOCK_ASSERT(&so->so_rcv); - kn->kn_data = so->so_rcv.sb_cc; - if (so->so_rcv.sb_state & SBS_CANTRCVMORE) { + if ((rpipe->pipe_state & PIPE_EOF) || + wpipe->pipe_present != PIPE_ACTIVE || + (wpipe->pipe_state & PIPE_EOF)) { kn->kn_flags |= EV_EOF; + PIPE_UNLOCK(rpipe); return (1); - } else { - kn->kn_flags &= ~EV_EOF; - return (kn->kn_data > 0); } + ret = kn->kn_data > 0; + PIPE_UNLOCK(rpipe); + return ret; } -static void -filt_fifowdetach(struct knote *kn) -{ - struct socket *so = (struct socket *)kn->kn_hook; - - SOCKBUF_LOCK(&so->so_snd); - knlist_remove(&so->so_snd.sb_sel.si_note, kn, 1); - if (knlist_empty(&so->so_snd.sb_sel.si_note)) - so->so_snd.sb_flags &= ~SB_KNOTE; - SOCKBUF_UNLOCK(&so->so_snd); -} - static int filt_fifowrite(struct knote *kn, long hint) { - struct socket *so = (struct socket *)kn->kn_hook; + struct pipe *wpipe = (struct pipe *)kn->kn_hook; - SOCKBUF_LOCK_ASSERT(&so->so_snd); - kn->kn_data = sbspace(&so->so_snd); - if (so->so_snd.sb_state & SBS_CANTSENDMORE) { + PIPE_LOCK(wpipe); + if (wpipe->pipe_present != PIPE_ACTIVE || + (wpipe->pipe_state & PIPE_EOF)) { + kn->kn_data = 0; kn->kn_flags |= EV_EOF; + PIPE_UNLOCK(wpipe); return (1); - } else { - kn->kn_flags &= ~EV_EOF; - return (kn->kn_data >= so->so_snd.sb_lowat); } + kn->kn_data = wpipe->pipe_buffer.size - wpipe->pipe_buffer.cnt; + if (wpipe->pipe_state & PIPE_DIRECTW) + kn->kn_data = 0; + + PIPE_UNLOCK(wpipe); + return (kn->kn_data >= PIPE_BUF); } static void @@ -389,25 +377,20 @@ struct fifoinfo *fip = vp->v_fifoinfo; ASSERT_VOP_ELOCKED(vp, "fifo_close"); - if (fip == NULL) { - printf("fifo_close: no v_fifoinfo %p\n", vp); - return (0); - } if (ap->a_fflag & FREAD) { fip->fi_readers--; - if (fip->fi_readers == 0) - socantsendmore(fip->fi_writesock); + if (fip->fi_readers == 0) + pipe_close(fip->fi_rpipe); } if (ap->a_fflag & FWRITE) { fip->fi_writers--; - if (fip->fi_writers == 0) { - socantrcvmore(fip->fi_readsock); - mtx_lock(&fifo_mtx); - fip->fi_wgen++; - mtx_unlock(&fifo_mtx); - } + if (fip->fi_writers == 0) + pipe_close(fip->fi_wpipe); + } + if (fip->fi_readers == 0 && fip->fi_writers == 0) { + vp->v_fifoinfo = NULL; + free(fip, M_VNODE); } - fifo_cleanup(vp); return (0); } @@ -415,12 +398,11 @@ * Print out internal contents of a fifo vnode. */ int -fifo_printinfo(vp) - struct vnode *vp; +fifo_printinfo(struct vnode *vp) { - register struct fifoinfo *fip = vp->v_fifoinfo; + struct fifoinfo *fip = vp->v_fifoinfo; - if (fip == NULL){ + if (fip == NULL) { printf(", NULL v_fifoinfo"); return (0); } @@ -473,14 +455,13 @@ } /* - * Fifo advisory byte-level locks. + * FIFO advisory byte-level locks. */ -/* ARGSUSED */ static int fifo_advlock(ap) struct vop_advlock_args /* { struct vnode *a_vp; - caddr_t a_id; + caddr_t a_id; int a_op; struct flock *a_fl; int a_flags; @@ -500,62 +481,32 @@ /* * The implementation of ioctl() for named fifos is complicated by the fact * that we permit O_RDWR fifo file descriptors, meaning that the actions of - * ioctls may have to be applied to both the underlying sockets rather than - * just one. The original implementation simply forward the ioctl to one - * or both sockets based on fp->f_flag. We now consider each ioctl - * separately, as the composition effect requires careful ordering. - * - * We do not blindly pass all ioctls through to the socket in order to avoid - * providing unnecessary ioctls that might be improperly depended on by - * applications (such as socket-specific, routing, and interface ioctls). + * ioctls may have to be applied to both the underlying pipes rather than + * just one. * * Unlike sys_pipe.c, fifos do not implement the deprecated TIOCSPGRP and * TIOCGPGRP ioctls. Earlier implementations of fifos did forward SIOCSPGRP * and SIOCGPGRP ioctls, so we might need to re-add those here. */ static int -fifo_ioctl_f(struct file *fp, u_long com, void *data, struct ucred *cred, +fifo_ioctl_f(struct file *fp, u_long com, void *data, struct ucred *cred, struct thread *td) { - struct fifoinfo *fi; - struct file filetmp; /* Local, so need not be locked. */ - int error; - - error = ENOTTY; - fi = fp->f_data; + int error = ENOTTY; + struct fifoinfo *fip = fp->f_data; switch (com) { case FIONBIO: - /* - * Non-blocking I/O is implemented at the fifo layer using - * MSG_NBIO, so does not need to be forwarded down the stack. - */ - return (0); - case FIOASYNC: case FIOSETOWN: case FIOGETOWN: - /* - * These socket ioctls don't have any ordering requirements, - * so are called in an arbitrary order, and only on the - * sockets indicated by the file descriptor rights. - * - * XXXRW: If O_RDWR and the read socket accepts an ioctl but - * the write socket doesn't, the socketpair is left in an - * inconsistent state. - */ if (fp->f_flag & FREAD) { - filetmp.f_data = fi->fi_readsock; - filetmp.f_cred = cred; - error = soo_ioctl(&filetmp, com, data, cred, td); + error = pipe_ioctl(fip->fi_rpipe, com, data, cred, td); if (error) return (error); } - if (fp->f_flag & FWRITE) { - filetmp.f_data = fi->fi_writesock; - filetmp.f_cred = cred; - error = soo_ioctl(&filetmp, com, data, cred, td); - } + if (fp->f_flag & FWRITE) + error = pipe_ioctl(fip->fi_wpipe, com, data, cred, td); return (error); case FIONREAD: @@ -568,12 +519,10 @@ *(int *)data = 0; return (0); } - filetmp.f_data = fi->fi_readsock; - filetmp.f_cred = cred; - return (soo_ioctl(&filetmp, com, data, cred, td)); + return (pipe_ioctl(fip->fi_rpipe, com, data, cred, td)); default: - return (ENOTTY); + return (ENOTTY); } } @@ -586,11 +535,8 @@ static int fifo_kqfilter_f(struct file *fp, struct knote *kn) { - struct fifoinfo *fi; - struct socket *so; - struct sockbuf *sb; - - fi = fp->f_data; + struct fifoinfo *fip = fp->f_data; + struct pipe *rpipe = fip->fi_rpipe; /* * If a filter is requested that is not supported by this file @@ -601,7 +547,6 @@ kn->kn_fop = &fifo_notsup_filtops; return (0); } - if ((kn->kn_filter == EVFILT_WRITE) && !(fp->f_flag & FWRITE)) { kn->kn_fop = &fifo_notsup_filtops; return (0); @@ -610,92 +555,83 @@ switch (kn->kn_filter) { case EVFILT_READ: kn->kn_fop = &fiforead_filtops; - so = fi->fi_readsock; - sb = &so->so_rcv; break; case EVFILT_WRITE: kn->kn_fop = &fifowrite_filtops; - so = fi->fi_writesock; - sb = &so->so_snd; + PIPE_LOCK(rpipe); + if (rpipe->pipe_present != PIPE_ACTIVE) { + /* other end of pipe has been closed */ + PIPE_UNLOCK(rpipe); + return (EPIPE); + } + PIPE_UNLOCK(rpipe); break; default: return (EINVAL); } - kn->kn_hook = (caddr_t)so; + kn->kn_hook = (void *)rpipe; - SOCKBUF_LOCK(sb); - knlist_add(&sb->sb_sel.si_note, kn, 1); - sb->sb_flags |= SB_KNOTE; - SOCKBUF_UNLOCK(sb); + PIPE_LOCK(rpipe); + knlist_add(&rpipe->pipe_sel.si_note, kn, 1); + PIPE_UNLOCK(rpipe); return (0); } -static int +static int fifo_poll_f(struct file *fp, int events, struct ucred *cred, struct thread *td) { - struct fifoinfo *fip; - struct file filetmp; + struct fifoinfo *fip = fp->f_data; int levents, revents = 0; - fip = fp->f_data; - levents = events & - (POLLIN | POLLINIGNEOF | POLLPRI | POLLRDNORM | POLLRDBAND); - if ((fp->f_flag & FREAD) && levents) { - filetmp.f_data = fip->fi_readsock; - filetmp.f_cred = cred; - mtx_lock(&fifo_mtx); - if (fp->f_seqcount == fip->fi_wgen) - levents |= POLLINIGNEOF; - mtx_unlock(&fifo_mtx); - revents |= soo_poll(&filetmp, levents, cred, td); - } - levents = events & (POLLOUT | POLLWRNORM | POLLWRBAND); - if ((fp->f_flag & FWRITE) && levents) { - filetmp.f_data = fip->fi_writesock; - filetmp.f_cred = cred; - revents |= soo_poll(&filetmp, levents, cred, td); - } + levents = events & (POLLIN | POLLRDNORM); + if ((fp->f_flag & FREAD) && levents) + revents |= pipe_poll(fip->fi_rpipe, levents, cred, td); + levents = events & (POLLOUT | POLLWRNORM); + if ((fp->f_flag & FWRITE) && levents) + revents |= pipe_poll(fip->fi_wpipe, levents, cred, td); return (revents); } static int fifo_read_f(struct file *fp, struct uio *uio, struct ucred *cred, int flags, struct thread *td) { - struct fifoinfo *fip; - int sflags; + + struct fifoinfo *fip = fp->f_data; - fip = fp->f_data; - KASSERT(uio->uio_rw == UIO_READ,("fifo_read mode")); - if (uio->uio_resid == 0) - return (0); - sflags = (fp->f_flag & FNONBLOCK) ? MSG_NBIO : 0; - return (soreceive(fip->fi_readsock, NULL, uio, NULL, NULL, &sflags)); + /* The 4th argument of pipe_read is file flag */ + return (pipe_read(fip->fi_rpipe, uio, cred, fp->f_flag, td)); } static int fifo_stat_f(struct file *fp, struct stat *sb, struct ucred *cred, struct thread *td) { + struct fifoinfo *fip = fp->f_data; + int error; - return (vnops.fo_stat(fp, sb, cred, td)); + error = pipe_stat(fip->fi_rpipe, sb, cred, td); + if (error) + return (error); + /* pipe_stat zeros all fields of *ub, following assignment should be done after it */ + sb->st_uid = fp->f_cred->cr_uid; + sb->st_gid = fp->f_cred->cr_gid; + return (0); } static int fifo_truncate_f(struct file *fp, off_t length, struct ucred *cred, struct thread *td) { - + return (vnops.fo_truncate(fp, length, cred, td)); } static int fifo_write_f(struct file *fp, struct uio *uio, struct ucred *cred, int flags, struct thread *td) { - struct fifoinfo *fip; - int sflags; + + struct fifoinfo *fip = fp->f_data; - fip = fp->f_data; - KASSERT(uio->uio_rw == UIO_WRITE,("fifo_write mode")); - sflags = (fp->f_flag & FNONBLOCK) ? MSG_NBIO : 0; - return (sosend(fip->fi_writesock, NULL, uio, 0, NULL, sflags, td)); + /* The 4th argument of pipe_write is file flag */ + return (pipe_write(fip->fi_wpipe, uio, cred, fp->f_flag, td)); } ==== //depot/projects/soc2009/fifo/sys/kern/sys_pipe.c#20 (text+ko) ==== @@ -1,113 +1,43 @@ /*- - * Copyright (c) 1996 John S. Dyson + * Copyright (c) 2009 Zhao Shuai + * Google Summer of Code project * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright - * notice immediately at the beginning of the file, without modification, - * this list of conditions, and the following disclaimer. + * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. Absolutely no warranty of function or purpose is made by the author - * John S. Dyson. - * 4. Modifications may be freely made to this file if the above conditions - * are met. - */ - -/* - * This file contains a high-performance replacement for the socket-based - * pipes scheme originally used in FreeBSD/4.4Lite. It does not support - * all features of sockets, but does do everything that pipes normally - * do. - */ - -/* - * This code has two modes of operation, a small write mode and a large - * write mode. The small write mode acts like conventional pipes with - * a kernel buffer. If the buffer is less than PIPE_MINDIRECT, then the - * "normal" pipe buffering is done. If the buffer is between PIPE_MINDIRECT - * and PIPE_SIZE in size, it is fully mapped and wired into the kernel, and - * the receiving process can copy it directly from the pages in the sending - * process. * - * If the sending process receives a signal, it is possible that it will - * go away, and certainly its address space can change, because control - * is returned back to the user-mode side. In that case, the pipe code - * arranges to copy the buffer supplied by the user process, to a pageable - * kernel buffer, and the receiving process will grab the data from the - * pageable kernel buffer. Since signals don't happen all that often, - * the copy operation is normally eliminated. - * - * The constant PIPE_MINDIRECT is chosen to make sure that buffering will - * happen for small transfers so that the system will not spend all of - * its time context switching. - * - * In order to limit the resource use of pipes, two sysctls exist: - * - * kern.ipc.maxpipekva - This is a hard limit on the amount of pageable - * address space available to us in pipe_map. This value is normally - * autotuned, but may also be loader tuned. - * - * kern.ipc.pipekva - This read-only sysctl tracks the current amount of - * memory in use by pipes. - * - * Based on how large pipekva is relative to maxpipekva, the following - * will happen: - * - * 0% - 50%: - * New pipes are given 16K of memory backing, pipes may dynamically - * grow to as large as 64K where needed. - * 50% - 75%: - * New pipes are given 4K (or PAGE_SIZE) of memory backing, - * existing pipes may NOT grow. - * 75% - 100%: - * New pipes are given 4K (or PAGE_SIZE) of memory backing, - * existing pipes will be shrunk down to 4K whenever possible. - * - * Resizing may be disabled by setting kern.ipc.piperesizeallowed=0. If - * that is set, the only resize that will occur is the 0 -> SMALL_PIPE_SIZE - * resize which MUST occur for reverse-direction pipes when they are - * first used. - * - * Additional information about the current state of pipes may be obtained - * from kern.ipc.pipes, kern.ipc.pipefragretry, kern.ipc.pipeallocfail, - * and kern.ipc.piperesizefail. - * - * Locking rules: There are two locks present here: A mutex, used via - * PIPE_LOCK, and a flag, used via pipelock(). All locking is done via - * the flag, as mutexes can not persist over uiomove. The mutex - * exists only to guard access to the flag, and is not in itself a - * locking mechanism. Also note that there is only a single mutex for - * both directions of a pipe. - * - * As pipelock() may have to sleep before it can acquire the flag, it - * is important to reread all data after a call to pipelock(); everything - * in the structure may have changed. + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. */ #include -__FBSDID("$FreeBSD: src/sys/kern/sys_pipe.c,v 1.205 2009/07/07 09:43:44 kib Exp $"); +__FBSDID("$FreeBSD"); #include #include #include -#include #include #include #include -#include -#include -#include #include #include -#include #include -#include #include -#include #include #include #include @@ -115,237 +45,50 @@ #include #include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Use this define if you want to disable *fancy* VM things. Expect an - * approx 30% decrease in transfer rate. This could be useful for - * NetBSD or OpenBSD. - */ -/* #define PIPE_NODIRECT */ - /* * interfaces to the outside world */ -static fo_rdwr_t pipe_read; -static fo_rdwr_t pipe_write; -static fo_truncate_t pipe_truncate; -static fo_ioctl_t pipe_ioctl; -static fo_poll_t pipe_poll; -static fo_kqfilter_t pipe_kqfilter; -static fo_stat_t pipe_stat; -static fo_close_t pipe_close; +static fo_rdwr_t pipe_read_f; +static fo_rdwr_t pipe_write_f; +static fo_truncate_t pipe_truncate_f; +static fo_ioctl_t pipe_ioctl_f; +static fo_poll_t pipe_poll_f; +static fo_kqfilter_t pipe_kqfilter_f; +static fo_stat_t pipe_stat_f; +static fo_close_t pipe_close_f; static struct fileops pipeops = { - .fo_read = pipe_read, - .fo_write = pipe_write, - .fo_truncate = pipe_truncate, - .fo_ioctl = pipe_ioctl, - .fo_poll = pipe_poll, - .fo_kqfilter = pipe_kqfilter, - .fo_stat = pipe_stat, - .fo_close = pipe_close, - .fo_flags = DFLAG_PASSABLE + .fo_read = pipe_read_f, + .fo_write = pipe_write_f, + .fo_truncate = pipe_truncate_f, + .fo_ioctl = pipe_ioctl_f, + .fo_poll = pipe_poll_f, + .fo_kqfilter = pipe_kqfilter_f, + .fo_stat = pipe_stat_f, + .fo_close = pipe_close_f, + .fo_flags = DFLAG_PASSABLE }; -static void filt_pipedetach(struct knote *kn); -static int filt_piperead(struct knote *kn, long hint); -static int filt_pipewrite(struct knote *kn, long hint); - -static struct filterops pipe_rfiltops = - { 1, NULL, filt_pipedetach, filt_piperead }; -static struct filterops pipe_wfiltops = - { 1, NULL, filt_pipedetach, filt_pipewrite }; - /* - * Default pipe buffer size(s), this can be kind-of large now because pipe - * space is pageable. The pipe code will try to maintain locality of - * reference for performance reasons, so small amounts of outstanding I/O - * will not wipe the cache. - */ -#define MINPIPESIZE (PIPE_SIZE/3) -#define MAXPIPESIZE (2*PIPE_SIZE/3) - -static long amountpipekva; -static int pipefragretry; -static int pipeallocfail; -static int piperesizefail; -static int piperesizeallowed = 1; - -SYSCTL_LONG(_kern_ipc, OID_AUTO, maxpipekva, CTLFLAG_RDTUN, - &maxpipekva, 0, "Pipe KVA limit"); -SYSCTL_LONG(_kern_ipc, OID_AUTO, pipekva, CTLFLAG_RD, - &amountpipekva, 0, "Pipe KVA usage"); -SYSCTL_INT(_kern_ipc, OID_AUTO, pipefragretry, CTLFLAG_RD, - &pipefragretry, 0, "Pipe allocation retries due to fragmentation"); -SYSCTL_INT(_kern_ipc, OID_AUTO, pipeallocfail, CTLFLAG_RD, - &pipeallocfail, 0, "Pipe allocation failures"); -SYSCTL_INT(_kern_ipc, OID_AUTO, piperesizefail, CTLFLAG_RD, - &piperesizefail, 0, "Pipe resize failures"); -SYSCTL_INT(_kern_ipc, OID_AUTO, piperesizeallowed, CTLFLAG_RW, - &piperesizeallowed, 0, "Pipe resizing allowed"); - -static void pipeinit(void *dummy __unused); -static void pipeclose(struct pipe *cpipe); -static void pipe_free_kmem(struct pipe *cpipe); -static int pipe_create(struct pipe *pipe, int backing); -static __inline int pipelock(struct pipe *cpipe, int catch); -static __inline void pipeunlock(struct pipe *cpipe); -static __inline void pipeselwakeup(struct pipe *cpipe); -#ifndef PIPE_NODIRECT -static int pipe_build_write_buffer(struct pipe *wpipe, struct uio *uio); -static void pipe_destroy_write_buffer(struct pipe *wpipe); -static int pipe_direct_write(struct pipe *wpipe, struct uio *uio); -static void pipe_clone_write_buffer(struct pipe *wpipe); -#endif >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Tue Aug 11 12:00:18 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 906AE1065676; Tue, 11 Aug 2009 12:00:18 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 033AF10656B5 for ; Tue, 11 Aug 2009 12:00:18 +0000 (UTC) (envelope-from zhaoshuai@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id CBB188FC4D for ; Tue, 11 Aug 2009 12:00:17 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BC06c2005989 for ; Tue, 11 Aug 2009 12:00:06 GMT (envelope-from zhaoshuai@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BC06cb005987 for perforce@freebsd.org; Tue, 11 Aug 2009 12:00:06 GMT (envelope-from zhaoshuai@FreeBSD.org) Date: Tue, 11 Aug 2009 12:00:06 GMT Message-Id: <200908111200.n7BC06cb005987@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zhaoshuai@FreeBSD.org using -f From: Zhao Shuai To: Perforce Change Reviews Cc: Subject: PERFORCE change 167207 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 12:00:19 -0000 http://perforce.freebsd.org/chv.cgi?CH=167207 Change 167207 by zhaoshuai@zhaoshuai on 2009/08/11 11:59:38 sync subr_pipe.c in my branch with sys_pipe.c @HEAD Affected files ... .. //depot/projects/soc2009/fifo/sys/kern/subr_pipe.c#10 edit Differences ... ==== //depot/projects/soc2009/fifo/sys/kern/subr_pipe.c#10 (text+ko) ==== @@ -299,10 +299,8 @@ *p_rpipe = rpipe; *p_wpipe = wpipe; - knlist_init(&rpipe->pipe_sel.si_note, PIPE_MTX(rpipe), NULL, NULL, - NULL); - knlist_init(&wpipe->pipe_sel.si_note, PIPE_MTX(wpipe), NULL, NULL, - NULL); + knlist_init_mtx(&rpipe->pipe_sel.si_note, PIPE_MTX(rpipe)); + knlist_init_mtx(&wpipe->pipe_sel.si_note, PIPE_MTX(wpipe)); if ((error = pipe_create(rpipe, 1)) != 0 || (error = pipe_create(wpipe, 0)) != 0) { @@ -677,6 +675,8 @@ pmap = vmspace_pmap(curproc->p_vmspace); endaddr = round_page((vm_offset_t)uio->uio_iov->iov_base + size); addr = trunc_page((vm_offset_t)uio->uio_iov->iov_base); + if (endaddr < addr) + return (EFAULT); for (i = 0; addr < endaddr; addr += PAGE_SIZE, i++) { /* * vm_fault_quick() can sleep. Consequently, @@ -1256,8 +1256,7 @@ #endif if (events & (POLLIN | POLLRDNORM)) if ((rpipe->pipe_state & PIPE_DIRECTW) || - (rpipe->pipe_buffer.cnt > 0) || - (rpipe->pipe_state & PIPE_EOF)) + (rpipe->pipe_buffer.cnt > 0)) revents |= events & (POLLIN | POLLRDNORM); if (events & (POLLOUT | POLLWRNORM)) @@ -1267,10 +1266,14 @@ (wpipe->pipe_buffer.size - wpipe->pipe_buffer.cnt) >= PIPE_BUF)) revents |= events & (POLLOUT | POLLWRNORM); - if ((rpipe->pipe_state & PIPE_EOF) || - wpipe->pipe_present != PIPE_ACTIVE || - (wpipe->pipe_state & PIPE_EOF)) - revents |= POLLHUP; + if ((events & POLLINIGNEOF) == 0) { + if (rpipe->pipe_state & PIPE_EOF) { + revents |= (events & (POLLIN | POLLRDNORM)); + if (wpipe->pipe_present != PIPE_ACTIVE || + (wpipe->pipe_state & PIPE_EOF)) + revents |= POLLHUP; + } + } if (revents == 0) { if (events & (POLLIN | POLLRDNORM)) { From owner-p4-projects@FreeBSD.ORG Tue Aug 11 13:36:52 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 445661065673; Tue, 11 Aug 2009 13:36:52 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0337B106566C for ; Tue, 11 Aug 2009 13:36:52 +0000 (UTC) (envelope-from tatsianka@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id E55C28FC39 for ; Tue, 11 Aug 2009 13:36:51 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BDapq4025319 for ; Tue, 11 Aug 2009 13:36:51 GMT (envelope-from tatsianka@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BDapSh025317 for perforce@freebsd.org; Tue, 11 Aug 2009 13:36:51 GMT (envelope-from tatsianka@FreeBSD.org) Date: Tue, 11 Aug 2009 13:36:51 GMT Message-Id: <200908111336.n7BDapSh025317@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to tatsianka@FreeBSD.org using -f From: Tatsiana Severyna To: Perforce Change Reviews Cc: Subject: PERFORCE change 167209 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 13:36:53 -0000 http://perforce.freebsd.org/chv.cgi?CH=167209 Change 167209 by tatsianka@tatsianka_zonder on 2009/08/11 13:36:44 Import fusefs-ntfs for testing. It works but looks slow (probably because of extra debugging and disabled user space cache) Affected files ... .. //depot/projects/soc2009/tatsianka_puffs/libpuffs/puffs.c#5 edit .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/config.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/attrib.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/attrlist.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/bitmap.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/bootsect.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/collate.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/compat.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/compress.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/debug.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/device.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/device_io.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/dir.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/endians.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/index.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/inode.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/layout.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/lcnalloc.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/logfile.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/logging.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/mft.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/misc.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/mst.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/ntfstime.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/runlist.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/security.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/support.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/types.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/unistr.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/include/ntfs-3g/volume.h#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/Makefile#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/attrib.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/attrlist.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/bitmap.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/bootsect.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/collate.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/compat.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/compress.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/debug.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/device.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/device_io.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/dir.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/index.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/inode.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/lcnalloc.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/logfile.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/logging.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/mft.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/misc.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/mst.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/runlist.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/security.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/unistr.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/unix_io.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/volume.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/libntfs-3g/win32_io.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/ntfs-3g.probe/Makefile#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/ntfs-3g.probe/ntfs-3g.probe.8#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/ntfs-3g.probe/ntfs-3g.probe.8.in#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/ntfs-3g.probe/ntfs-3g.probe.c#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/ntfs-3g/Makefile#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/ntfs-3g/ntfs-3g.8#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/ntfs-3g/ntfs-3g.8.in#1 add .. //depot/projects/soc2009/tatsianka_puffs/ntfs-3g/ntfs-3g/ntfs-3g.c#1 add Differences ... ==== //depot/projects/soc2009/tatsianka_puffs/libpuffs/puffs.c#5 (text+ko) ==== @@ -583,8 +583,6 @@ goto out; } - printf("%s: mount %d\n", __func__, rv); - PU_SETSTATE(pu, PUFFS_STATE_RUNNING); out: From owner-p4-projects@FreeBSD.ORG Tue Aug 11 14:38:03 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BC6CE1065673; Tue, 11 Aug 2009 14:38:02 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 792111065672 for ; Tue, 11 Aug 2009 14:38:02 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 679F68FC21 for ; Tue, 11 Aug 2009 14:38:02 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BEc22x031196 for ; Tue, 11 Aug 2009 14:38:02 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BEc17k031192 for perforce@freebsd.org; Tue, 11 Aug 2009 14:38:01 GMT (envelope-from zec@fer.hr) Date: Tue, 11 Aug 2009 14:38:01 GMT Message-Id: <200908111438.n7BEc17k031192@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167211 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 14:38:04 -0000 http://perforce.freebsd.org/chv.cgi?CH=167211 Change 167211 by zec@zec_tpx32 on 2009/08/11 14:37:08 Merge in Julian's ip_divert V_ work for further testing. Affected files ... .. //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#36 edit .. //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.h#2 edit Differences ... ==== //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#36 (text+ko) ==== @@ -129,10 +129,18 @@ * Initialize divert connection block queue. */ static void -div_zone_change(void *tag) +div_zone_change(struct vnet *vnet) { + VNET_ITERATOR_DECL(vnet_iter); + + VNET_LIST_RLOCK_NOSLEEP(); + VNET_FOREACH(vnet_iter) { + CURVNET_SET(vnet_iter); + uma_zone_set_max(V_divcbinfo.ipi_zone, maxsockets); + CURVNET_RESTORE(); + } + VNET_LIST_RUNLOCK_NOSLEEP(); - uma_zone_set_max(V_divcbinfo.ipi_zone, maxsockets); } static int @@ -152,32 +160,6 @@ INP_LOCK_DESTROY(inp); } -void -div_init(void) -{ - - INP_INFO_LOCK_INIT(&V_divcbinfo, "div"); - LIST_INIT(&V_divcb); - V_divcbinfo.ipi_listhead = &V_divcb; -#ifdef VIMAGE - V_divcbinfo.ipi_vnet = curvnet; -#endif - /* - * XXX We don't use the hash list for divert IP, but it's easier - * to allocate a one entry hash list than it is to check all - * over the place for hashbase == NULL. - */ - V_divcbinfo.ipi_hashbase = hashinit(1, M_PCB, &V_divcbinfo.ipi_hashmask); - V_divcbinfo.ipi_porthashbase = hashinit(1, M_PCB, - &V_divcbinfo.ipi_porthashmask); - V_divcbinfo.ipi_zone = uma_zcreate("divcb", sizeof(struct inpcb), - NULL, NULL, div_inpcb_init, div_inpcb_fini, UMA_ALIGN_PTR, - UMA_ZONE_NOFREE); - uma_zone_set_max(V_divcbinfo.ipi_zone, maxsockets); - EVENTHANDLER_REGISTER(maxsockets_change, div_zone_change, - NULL, EVENTHANDLER_PRI_ANY); -} - /* * IPPROTO_DIVERT is not in the real IP protocol number space; this * function should never be called. Just in case, drop any packets. @@ -524,7 +506,8 @@ div_bind(struct socket *so, struct sockaddr *nam, struct thread *td) { struct inpcb *inp; - int error; + int error = 0; + struct in_addr laddr; inp = sotoinpcb(so); KASSERT(inp != NULL, ("div_bind: inp == NULL")); @@ -535,12 +518,32 @@ * XXX -- divert should not be abusing in_pcbind * and should probably have its own family. */ + if (inp->inp_lport != 0 || inp->inp_laddr.s_addr != INADDR_ANY) + return (EINVAL); + /* possibly not needed.. but play safe */ + inp->inp_fport = 0; + inp->inp_faddr.s_addr = INADDR_ANY; + if (nam->sa_family != AF_INET) return EAFNOSUPPORT; + + laddr.s_addr = INADDR_ANY; + /* just to be sure, since the man page says it is ignored. */ ((struct sockaddr_in *)nam)->sin_addr.s_addr = INADDR_ANY; + INP_INFO_WLOCK(&V_divcbinfo); INP_WLOCK(inp); - error = in_pcbbind(inp, nam, td->td_ucred); + if (in_pcblookup_local(&V_divcbinfo, laddr, + ((struct sockaddr_in *)nam)->sin_port, 0/*not wild ok */, + td->td_ucred)) { + error = EADDRNOTAVAIL; + } else { + inp->inp_lport = ((struct sockaddr_in *)nam)->sin_port; + if (in_pcbinshash(inp) != 0) { + inp->inp_lport = 0; + error = EAGAIN; + } + } INP_WUNLOCK(inp); INP_INFO_WUNLOCK(&V_divcbinfo); return error; @@ -708,25 +711,20 @@ .pr_input = div_input, .pr_ctlinput = div_ctlinput, .pr_ctloutput = ip_ctloutput, - .pr_init = div_init, + .pr_init = NULL, .pr_usrreqs = &div_usrreqs }; +static int div_loaded = 0; +static eventhandler_tag div_evh_tag; static int div_modevent(module_t mod, int type, void *unused) { int err = 0; - int n; switch (type) { case MOD_LOAD: - /* - * Protocol will be initialized by pf_proto_register(). - * We don't have to register ip_protox because we are not - * a true IP protocol that goes over the wire. - */ - err = pf_proto_register(PF_INET, &div_protosw); - ip_divert_ptr = divert_packet; + break; case MOD_QUIESCE: /* @@ -737,29 +735,6 @@ err = EPERM; break; case MOD_UNLOAD: - /* - * Forced unload. - * - * Module ipdivert can only be unloaded if no sockets are - * connected. Maybe this can be changed later to forcefully - * disconnect any open sockets. - * - * XXXRW: Note that there is a slight race here, as a new - * socket open request could be spinning on the lock and then - * we destroy the lock. - */ - INP_INFO_WLOCK(&V_divcbinfo); - n = V_divcbinfo.ipi_count; - if (n != 0) { - err = EBUSY; - INP_INFO_WUNLOCK(&V_divcbinfo); - break; - } - ip_divert_ptr = NULL; - err = pf_proto_unregister(PF_INET, IPPROTO_DIVERT, SOCK_RAW); - INP_INFO_WUNLOCK(&V_divcbinfo); - INP_INFO_LOCK_DESTROY(&V_divcbinfo); - uma_zdestroy(V_divcbinfo.ipi_zone); break; default: err = EOPNOTSUPP; @@ -774,6 +749,125 @@ 0 }; -DECLARE_MODULE(ipdivert, ipdivertmod, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_ANY); +/* init on boot or module load */ +static void +div_init(void) +{ + int err; + + /* + * Protocol will be initialized by pf_proto_register(). + * We don't have to register ip_protox because we are not + * a true IP protocol that goes over the wire. + */ + err = pf_proto_register(PF_INET, &div_protosw); + if (err == 0) { + ip_divert_ptr = divert_packet; + div_evh_tag = + EVENTHANDLER_REGISTER(maxsockets_change, div_zone_change, + NULL, EVENTHANDLER_PRI_ANY); + div_loaded = 1; + } + return; +} + +/**************** + * Stuff that must be initialized for every instance + * (including the first of course). + */ +static int +div_vnet_init(const void *unused) +{ + if (div_loaded == 0) + return (0); + INP_INFO_LOCK_INIT(&V_divcbinfo, "div"); + LIST_INIT(&V_divcb); + V_divcbinfo.ipi_listhead = &V_divcb; +#ifdef VIMAGE + V_divcbinfo.ipi_vnet = curvnet; +#endif + /* + * XXX We don't use the hash list for divert IP, but it's easier + * to allocate a one entry hash list than it is to check all + * over the place for hashbase == NULL. + */ + V_divcbinfo.ipi_hashbase = hashinit(1, M_PCB, &V_divcbinfo.ipi_hashmask); + V_divcbinfo.ipi_porthashbase = hashinit(1, M_PCB, + &V_divcbinfo.ipi_porthashmask); + V_divcbinfo.ipi_zone = uma_zcreate("divcb", sizeof(struct inpcb), + NULL, NULL, div_inpcb_init, div_inpcb_fini, UMA_ALIGN_PTR, + UMA_ZONE_NOFREE); + uma_zone_set_max(V_divcbinfo.ipi_zone, maxsockets); + return (0); +} + +/********************** + * Called for the removal of the last instance only on module unload. + */ +static void +div_uninit(void) +{ + int err; + + if (div_loaded == 0) + return; + div_loaded = 0; + ip_divert_ptr = NULL; + EVENTHANDLER_DEREGISTER(maxsockets_change, div_evh_tag); + err = pf_proto_unregister(PF_INET, IPPROTO_DIVERT, SOCK_RAW); +} + +/*********************** + * Called for the removal of each instance. + */ +static int +div_vnet_uninit(const void *unused) +{ + int err = 0; + int n; + + if (div_loaded == 0) + return (0); + /* + * Forced unload. + * + * Module ipdivert can only be unloaded if no sockets are + * connected. Maybe this can be changed later to forcefully + * disconnect any open sockets. + * + * XXXRW: Note that there is a slight race here, as a new + * socket open request could be spinning on the lock and then + * we destroy the lock. + */ + INP_INFO_WLOCK(&V_divcbinfo); + n = V_divcbinfo.ipi_count; + INP_INFO_WUNLOCK(&V_divcbinfo); + if (n != 0) { + err = EBUSY; + } else { + INP_INFO_LOCK_DESTROY(&V_divcbinfo); + uma_zdestroy(V_divcbinfo.ipi_zone); + } + return (err); +} + + +#define DIV_MAJOR_ORDER SI_SUB_PROTO_IFATTACHDOMAIN +#define DIV_MODULE_ORDER (SI_ORDER_ANY + 64) +#define DIV_SYSINIT_ORDER (DIV_MODULE_ORDER + 1) +#define DIV_VNET_ORDER (DIV_SYSINIT_ORDER + 1 ) + +DECLARE_MODULE(ipdivert, ipdivertmod, DIV_MAJOR_ORDER, DIV_MODULE_ORDER); MODULE_DEPEND(dummynet, ipfw, 2, 2, 2); MODULE_VERSION(ipdivert, 1); + +SYSINIT(div_init, DIV_MAJOR_ORDER, DIV_SYSINIT_ORDER, + div_init, NULL); +SYSUNINIT(div_uninit, DIV_MAJOR_ORDER, DIV_SYSINIT_ORDER, + div_uninit, NULL); + +VNET_SYSINIT(div_vnet_init, DIV_MAJOR_ORDER, DIV_VNET_ORDER, + div_vnet_init, NULL); +VNET_SYSUNINIT(div_vnet_uninit, DIV_MAJOR_ORDER, DIV_VNET_ORDER, + div_vnet_uninit, NULL); + ==== //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.h#2 (text+ko) ==== @@ -83,7 +83,6 @@ typedef void ip_divert_packet_t(struct mbuf *m, int incoming); extern ip_divert_packet_t *ip_divert_ptr; -extern void div_init(void); extern void div_input(struct mbuf *, int); extern void div_ctlinput(int, struct sockaddr *, void *); #endif /* _NETINET_IP_DIVERT_H_ */ From owner-p4-projects@FreeBSD.ORG Tue Aug 11 15:28:59 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 986391065677; Tue, 11 Aug 2009 15:28:58 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 503F3106566B for ; Tue, 11 Aug 2009 15:28:58 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 3501F8FC44 for ; Tue, 11 Aug 2009 15:28:58 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BFSwoN036219 for ; Tue, 11 Aug 2009 15:28:58 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BFSwG1036217 for perforce@freebsd.org; Tue, 11 Aug 2009 15:28:58 GMT (envelope-from zec@fer.hr) Date: Tue, 11 Aug 2009 15:28:58 GMT Message-Id: <200908111528.n7BFSwG1036217@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167213 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 15:29:00 -0000 http://perforce.freebsd.org/chv.cgi?CH=167213 Change 167213 by zec@zec_tpx32 on 2009/08/11 15:28:53 Merge for further testing bz's patch for (re)enabling sysctls to operate on VNET V_irtualized state in jails. Submitted by: bz Affected files ... .. //depot/projects/vimage-commit2/src/sys/kern/kern_jail.c#30 edit .. //depot/projects/vimage-commit2/src/sys/kern/kern_sysctl.c#16 edit .. //depot/projects/vimage-commit2/src/sys/net/vnet.h#31 edit .. //depot/projects/vimage-commit2/src/sys/sys/jail.h#16 edit .. //depot/projects/vimage-commit2/src/sys/sys/sysctl.h#26 edit Differences ... ==== //depot/projects/vimage-commit2/src/sys/kern/kern_jail.c#30 (text+ko) ==== @@ -88,7 +88,11 @@ .pr_childmax = JAIL_MAX, .pr_hostuuid = DEFAULT_HOSTUUID, .pr_children = LIST_HEAD_INITIALIZER(&prison0.pr_children), +#ifdef VIMAGE + .pr_flags = PR_HOST|PR_VNET, +#else .pr_flags = PR_HOST, +#endif .pr_allow = PR_ALLOW_ALL, }; MTX_SYSINIT(prison0, &prison0.pr_mtx, "jail mutex", MTX_DEF); @@ -3307,6 +3311,25 @@ mtx_unlock(&cred->cr_prison->pr_mtx); } +#ifdef VIMAGE +/* + * Determine wheter the prison represented by cred owns + * its vnet rather than having it inherited. + * + * Returns 1 in case the prison owns the vnet, 0 otherwise. + */ +int +prison_owns_vnet(struct ucred *cred) +{ + + /* + * vnets cannot be added/removed after jail creation, + * so no need to lock here. + */ + return (cred->cr_prison->pr_flags & PR_VNET ? 1 : 0); +} +#endif + /* * Determine whether the subject represented by cred can "see" * status of a mount point. ==== //depot/projects/vimage-commit2/src/sys/kern/kern_sysctl.c#16 (text+ko) ==== @@ -1381,10 +1381,18 @@ /* Is this sysctl writable by only privileged users? */ if (req->newptr && !(oid->oid_kind & CTLFLAG_ANYBODY)) { + int priv; + if (oid->oid_kind & CTLFLAG_PRISON) - error = priv_check(req->td, PRIV_SYSCTL_WRITEJAIL); + priv = PRIV_SYSCTL_WRITEJAIL; +#ifdef VIMAGE + else if ((oid->oid_kind & CTLFLAG_VNET) && + prison_owns_vnet(req->td->td_ucred)) + priv = PRIV_SYSCTL_WRITEJAIL; +#endif else - error = priv_check(req->td, PRIV_SYSCTL_WRITE); + priv = PRIV_SYSCTL_WRITE; + error = priv_check(req->td, priv); if (error) return (error); } ==== //depot/projects/vimage-commit2/src/sys/net/vnet.h#31 (text+ko) ==== @@ -227,21 +227,25 @@ int vnet_sysctl_handle_uint(SYSCTL_HANDLER_ARGS); #define SYSCTL_VNET_INT(parent, nbr, name, access, ptr, val, descr) \ - SYSCTL_OID(parent, nbr, name, CTLTYPE_INT|CTLFLAG_MPSAFE|(access), \ + SYSCTL_OID(parent, nbr, name, \ + CTLTYPE_INT|CTLFLAG_MPSAFE|CTLFLAG_VNET|(access), \ ptr, val, vnet_sysctl_handle_int, "I", descr) #define SYSCTL_VNET_PROC(parent, nbr, name, access, ptr, arg, handler, \ fmt, descr) \ - SYSCTL_OID(parent, nbr, name, access, ptr, arg, handler, fmt, \ - descr) + SYSCTL_OID(parent, nbr, name, CTLFLAG_VNET|(access), ptr, arg, \ + handler, fmt, descr) #define SYSCTL_VNET_STRING(parent, nbr, name, access, arg, len, descr) \ - SYSCTL_OID(parent, nbr, name, CTLTYPE_STRING|(access), arg, \ - len, vnet_sysctl_handle_string, "A", descr) + SYSCTL_OID(parent, nbr, name, \ + CTLTYPE_STRING|CTLFLAG_VNET|(access), \ + arg, len, vnet_sysctl_handle_string, "A", descr) #define SYSCTL_VNET_STRUCT(parent, nbr, name, access, ptr, type, descr) \ - SYSCTL_OID(parent, nbr, name, CTLTYPE_OPAQUE|(access), ptr, \ + SYSCTL_OID(parent, nbr, name, \ + CTLTYPE_OPAQUE|CTLFLAG_VNET|(access), ptr, \ sizeof(struct type), vnet_sysctl_handle_opaque, "S," #type, \ descr) #define SYSCTL_VNET_UINT(parent, nbr, name, access, ptr, val, descr) \ - SYSCTL_OID(parent, nbr, name, CTLTYPE_UINT|CTLFLAG_MPSAFE|(access), \ + SYSCTL_OID(parent, nbr, name, \ + CTLTYPE_UINT|CTLFLAG_MPSAFE|CTLFLAG_VNET|(access), \ ptr, val, vnet_sysctl_handle_uint, "IU", descr) #define VNET_SYSCTL_ARG(req, arg1) do { \ if (arg1 != NULL) \ ==== //depot/projects/vimage-commit2/src/sys/sys/jail.h#16 (text+ko) ==== @@ -341,6 +341,7 @@ void getcredhostid(struct ucred *, unsigned long *); int prison_allow(struct ucred *, unsigned); int prison_check(struct ucred *cred1, struct ucred *cred2); +int prison_owns_vnet(struct ucred *); int prison_canseemount(struct ucred *cred, struct mount *mp); void prison_enforce_statfs(struct ucred *cred, struct mount *mp, struct statfs *sp); ==== //depot/projects/vimage-commit2/src/sys/sys/sysctl.h#26 (text+ko) ==== @@ -85,6 +85,7 @@ #define CTLMASK_SECURE 0x00F00000 /* Secure level */ #define CTLFLAG_TUN 0x00080000 /* Tunable variable */ #define CTLFLAG_MPSAFE 0x00040000 /* Handler is MP safe */ +#define CTLFLAG_VNET 0x00020000 /* Prisons with vnet can fiddle */ #define CTLFLAG_RDTUN (CTLFLAG_RD|CTLFLAG_TUN) /* From owner-p4-projects@FreeBSD.ORG Tue Aug 11 16:26:30 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2B2F61065672; Tue, 11 Aug 2009 16:26:30 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D9512106566C for ; Tue, 11 Aug 2009 16:26:29 +0000 (UTC) (envelope-from marinosi@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C64DD8FC4A for ; Tue, 11 Aug 2009 16:26:29 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BGQTnX041406 for ; Tue, 11 Aug 2009 16:26:29 GMT (envelope-from marinosi@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BGQ0S7041379 for perforce@freebsd.org; Tue, 11 Aug 2009 16:26:00 GMT (envelope-from marinosi@FreeBSD.org) Date: Tue, 11 Aug 2009 16:26:00 GMT Message-Id: <200908111626.n7BGQ0S7041379@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marinosi@FreeBSD.org using -f From: Ilias Marinos To: Perforce Change Reviews Cc: Subject: PERFORCE change 167214 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 16:26:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=167214 Change 167214 by marinosi@marinosi_redrum on 2009/08/11 16:25:53 Integrate marinosi_appaudit to the latest 8.0-BETA2. Affected files ... .. //depot/projects/soc2009/marinosi_appaudit/src/MAINTAINERS#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/Makefile.inc1#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/ObsoleteFiles.inc#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/UPDATING#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/chflags/chflags.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/chmod/chmod.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/cp/Makefile#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/cp/utils.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/df/df.1#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/df/df.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/hostname/hostname.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/ln/ln.1#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/ln/ln.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/pkill/pkill.1#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/pkill/pkill.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/ps/print.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/ps/ps.1#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/ps/ps.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/ps/ps.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/rm/rm.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/alias.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/eval.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/eval.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/exec.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/expand.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/histedit.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/input.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/input.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/main.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/memalloc.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/memalloc.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/miscbltin.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/mkinit.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/mksyntax.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/output.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/parser.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/redir.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/sh.1#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/trap.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/trap.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/sh/var.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/test/TEST.sh#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/bin/test/test.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/cddl/contrib/opensolaris/cmd/lockstat/lockstat.1#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/cddl/contrib/opensolaris/cmd/lockstat/lockstat.c#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/cddl/contrib/opensolaris/cmd/lockstat/sym.c#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/cddl/contrib/opensolaris/head/thread.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/cddl/lib/Makefile.inc#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/cddl/lib/libctf/Makefile#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/cddl/lib/libdtrace/Makefile#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/cddl/lib/libzpool/Makefile#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/cddl/usr.sbin/Makefile#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/cddl/usr.sbin/lockstat/Makefile#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/amd/amd/get_args.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/CHANGES#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/COPYRIGHT#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/FAQ#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/FAQ.xml#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/KNOWN-DEFECTS#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/NSEC3-NOTES#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/README#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/README.idnkit#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/README.pkcs11#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/acconfig.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/check/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/check/check-tool.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/check/check-tool.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/check/named-checkconf.8#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/check/named-checkconf.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/check/named-checkconf.docbook#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/check/named-checkconf.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/check/named-checkzone.8#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/check/named-checkzone.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/check/named-checkzone.docbook#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/check/named-checkzone.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dig/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dig/dig.1#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dig/dig.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dig/dig.docbook#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dig/dig.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dig/dighost.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dig/host.1#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dig/host.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dig/host.docbook#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dig/host.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dig/include/dig/dig.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dig/nslookup.1#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dig/nslookup.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dig/nslookup.docbook#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dig/nslookup.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-dsfromkey.8#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-dsfromkey.c#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-dsfromkey.docbook#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-dsfromkey.html#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-keyfromlabel.8#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-keyfromlabel.c#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-keyfromlabel.docbook#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-keyfromlabel.html#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-keygen.8#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-keygen.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-keygen.docbook#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-keygen.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-signzone.8#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-signzone.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-signzone.docbook#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssec-signzone.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssectool.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/dnssec/dnssectool.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/bind9.xsl#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/bind9.xsl.h#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/builtin.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/client.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/config.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/control.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/controlconf.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/convertxsl.pl#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/builtin.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/client.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/config.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/control.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/globals.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/interfacemgr.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/listenlist.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/log.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/logconf.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/lwaddr.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/lwdclient.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/lwresd.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/lwsearch.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/main.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/notify.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/ns_smf_globals.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/query.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/server.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/sortlist.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/statschannel.h#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/tkeyconf.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/tsigconf.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/types.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/update.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/xfrout.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/include/named/zoneconf.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/interfacemgr.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/listenlist.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/log.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/logconf.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/lwaddr.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/lwdclient.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/lwderror.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/lwdgabn.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/lwdgnba.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/lwdgrbn.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/lwdnoop.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/lwresd.8#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/lwresd.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/lwresd.docbook#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/lwresd.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/lwsearch.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/main.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/named.8#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/named.conf.5#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/named.conf.docbook#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/named.conf.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/named.docbook#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/named.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/notify.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/query.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/server.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/sortlist.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/statschannel.c#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/tkeyconf.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/tsigconf.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/unix/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/unix/include/named/os.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/unix/os.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/update.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/xfrout.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/named/zoneconf.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/nsupdate/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/nsupdate/nsupdate.1#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/nsupdate/nsupdate.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/nsupdate/nsupdate.docbook#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/nsupdate/nsupdate.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/include/rndc/os.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/rndc-confgen.8#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/rndc-confgen.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/rndc-confgen.docbook#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/rndc-confgen.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/rndc.8#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/rndc.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/rndc.conf#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/rndc.conf.5#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/rndc.conf.docbook#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/rndc.conf.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/rndc.docbook#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/rndc.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/unix/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/unix/os.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/util.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/bin/rndc/util.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/config.guess#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/config.h.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/configure.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/Bv9ARM-book.xml#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/Bv9ARM.ch01.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/Bv9ARM.ch02.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/Bv9ARM.ch03.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/Bv9ARM.ch04.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/Bv9ARM.ch05.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/Bv9ARM.ch06.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/Bv9ARM.ch07.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/Bv9ARM.ch08.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/Bv9ARM.ch09.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/Bv9ARM.ch10.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/Bv9ARM.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/Bv9ARM.pdf#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/man.dig.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/man.dnssec-dsfromkey.html#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/man.dnssec-keyfromlabel.html#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/man.dnssec-keygen.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/man.dnssec-signzone.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/man.host.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/man.named-checkconf.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/man.named-checkzone.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/man.named.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/man.nsupdate.html#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/man.rndc-confgen.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/man.rndc.conf.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/arm/man.rndc.html#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-baba-dnsext-acl-reqts-01.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-daigle-napstr-04.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-danisch-dns-rr-smtp-03.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-dnsext-opcode-discover-02.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-durand-dnsop-dynreverse-00.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-2929bis-01.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-axfr-clarify-05.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dhcid-rr-12.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dns-name-p-s-00.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-2535typecode-change-06.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-bis-updates-01.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-experiments-01.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-online-signing-02.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-opt-in-07.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-rsasha256-00.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-trans-02.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-ds-sha256-05.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-ecc-key-07.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-interop3597-02.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-keyrr-key-signing-flag-12.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-mdns-43.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-nsec3-04.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-nsid-01.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-rfc2536bis-dsa-06.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-rfc2538bis-04.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-rfc2539bis-dhk-06.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-signed-nonexistence-requirements-01.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-tkey-renewal-mode-05.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-trustupdate-threshold-00.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-trustupdate-timers-02.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-tsig-sha-06.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsext-wcard-clarify-10.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsop-bad-dns-res-05.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsop-dnssec-operational-practices-08.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsop-inaddr-required-07.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-dns-configuration-06.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-dns-issues-11.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-transport-guidelines-01.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsop-key-rollover-requirements-02.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsop-respsize-02.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-dnsop-serverid-06.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-enum-e164-gstn-np-05.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-ipv6-node-requirements-08.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ietf-secsh-dns-05.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-ihren-dnsext-threshold-validation-00.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-kato-dnsop-local-zones-00.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/draft-park-ipv6-extensions-dns-pnp-00.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/draft/update#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/misc/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/misc/format-options.pl#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/misc/ipv6#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/misc/migration#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/misc/options#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/misc/sort-options.pl#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/index#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1032.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1033.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1034.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1035.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1101.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1122.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1123.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1183.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1348.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1535.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1536.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1537.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1591.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1611.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1612.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1706.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1712.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1750.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1876.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1886.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1982.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1995.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc1996.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2052.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2104.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2119.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2133.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2136.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2137.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2163.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2168.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2181.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2230.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2308.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2317.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2373.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2374.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2375.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2418.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2535.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2536.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2537.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2538.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2539.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2540.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2541.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2553.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2671.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2672.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2673.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2782.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2825.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2826.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2845.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2874.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2915.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2929.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2930.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc2931.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3007.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3008.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3071.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3090.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3110.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3123.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3152.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3197.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3225.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3226.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3258.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3363.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3364.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3425.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3445.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3467.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3490.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3491.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3492.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3493.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3513.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3596.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3597.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3645.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3655.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3658.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3757.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3833.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3845.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc3901.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4025.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4033.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4034.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4035.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4074.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4159.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4193.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4255.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4343.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4367.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4398.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4408.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4431.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4470.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4634.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4641.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4648.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc4701.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc5155.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/doc/rfc/rfc952.txt#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/isc-config.sh.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/Makefile.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/README#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/aclocal.m4#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/api#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/Makefile.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/daemon.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/ftruncate.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/gettimeofday.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/mktemp.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/putenv.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/readv.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/setenv.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/setitimer.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/strcasecmp.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/strdup.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/strerror.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/strpbrk.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/strsep.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/strtoul.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/utimes.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/bsd/writev.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/config.h.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/configure.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/dst/Makefile.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/dst/dst_api.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/dst/dst_internal.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/dst/hmac_link.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/dst/md5.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/dst/md5_dgst.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/dst/md5_locl.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/dst/support.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/Makefile.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/arpa/inet.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/arpa/nameser.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/arpa/nameser_compat.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/fd_setsize.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/hesiod.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/irp.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/irs.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/isc/assertions.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/isc/ctl.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/isc/dst.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/isc/eventlib.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/isc/heap.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/isc/irpmarshall.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/isc/list.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/isc/logging.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/isc/memcluster.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/isc/misc.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/isc/platform.h.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/isc/tree.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/netdb.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/netgroup.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/res_update.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/resolv.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/include/resolv_mt.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/Makefile.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/inet_addr.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/inet_cidr_ntop.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/inet_cidr_pton.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/inet_data.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/inet_lnaof.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/inet_makeaddr.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/inet_net_ntop.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/inet_net_pton.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/inet_neta.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/inet_netof.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/inet_network.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/inet_ntoa.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/inet_ntop.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/inet_pton.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/inet/nsap_addr.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/Makefile.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/dns.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/dns_gr.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/dns_ho.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/dns_nw.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/dns_p.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/dns_pr.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/dns_pw.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/dns_sv.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/gai_strerror.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/gen.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/gen_gr.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/gen_ho.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/gen_ng.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/gen_nw.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/gen_p.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/gen_pr.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/gen_pw.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/gen_sv.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/getaddrinfo.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/getgrent.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/getgrent_r.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/gethostent.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/gethostent_r.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/getnameinfo.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/getnetent.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/getnetent_r.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/getnetgrent.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/getnetgrent_r.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/getprotoent.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/getprotoent_r.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/getpwent.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/getpwent_r.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/getservent.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/getservent_r.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/hesiod.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/hesiod_p.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/irp.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/irp_gr.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/irp_ho.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/irp_ng.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/irp_nw.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/irp_p.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/irp_pr.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/irp_pw.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/irp_sv.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/irpmarshall.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/irs_data.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/irs_data.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/irs_p.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/lcl.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/lcl_gr.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/lcl_ho.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/lcl_ng.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/lcl_nw.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/lcl_p.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/lcl_pr.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/lcl_pw.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/lcl_sv.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/nis.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/nis_gr.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/nis_ho.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/nis_ng.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/nis_nw.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/nis_p.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/nis_pr.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/nis_pw.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/nis_sv.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/nul_ng.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/pathnames.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/irs/util.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/Makefile.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/assertions.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/assertions.mdoc#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/base64.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/bitncmp.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/bitncmp.mdoc#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/ctl_clnt.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/ctl_p.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/ctl_p.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/ctl_srvr.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/ev_connects.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/ev_files.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/ev_streams.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/ev_timers.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/ev_waits.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/eventlib.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/eventlib.mdoc#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/eventlib_p.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/heap.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/heap.mdoc#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/hex.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/logging.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/logging.mdoc#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/logging_p.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/memcluster.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/memcluster.mdoc#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/movefile.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/tree.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/isc/tree.mdoc#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/make/includes.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/make/mkdep.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/make/rules.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/mkinstalldirs#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/nameser/Makefile.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/nameser/ns_date.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/nameser/ns_name.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/nameser/ns_netint.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/nameser/ns_parse.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/nameser/ns_print.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/nameser/ns_samedomain.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/nameser/ns_sign.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/nameser/ns_ttl.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/nameser/ns_verify.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/port/Makefile.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/port/freebsd/Makefile.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/port/freebsd/include/Makefile.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/port/freebsd/include/sys/bitypes.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/port_after.h.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/port_before.h.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/Makefile.in#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/herror.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/mtctxres.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/res_comp.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/res_data.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/res_debug.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/res_debug.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/res_findzonecut.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/res_init.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/res_mkquery.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/res_mkupdate.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/res_mkupdate.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/res_private.h#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/res_query.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/res_send.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/res_sendsigned.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind/resolv/res_update.c#2 delete .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind9/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind9/api#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind9/check.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind9/getaddresses.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind9/include/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind9/include/bind9/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind9/include/bind9/check.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind9/include/bind9/getaddresses.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind9/include/bind9/version.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/bind9/version.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/acache.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/acl.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/adb.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/api#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/byaddr.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/cache.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/callbacks.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/compress.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/db.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/dbiterator.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/dbtable.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/diff.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/dispatch.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/dlz.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/dnssec.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/ds.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/dst_api.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/dst_internal.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/dst_lib.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/dst_openssl.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/dst_parse.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/dst_parse.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/dst_result.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/forward.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/gen-unix.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/gen.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/gssapi_link.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/gssapictx.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/hmac_link.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/acache.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/acl.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/adb.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/bit.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/byaddr.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/cache.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/callbacks.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/cert.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/compress.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/db.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/dbiterator.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/dbtable.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/diff.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/dispatch.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/dlz.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/dnssec.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/ds.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/events.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/fixedname.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/forward.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/iptable.h#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/journal.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/keyflags.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/keytable.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/keyvalues.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/lib.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/log.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/lookup.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/master.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/masterdump.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/message.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/name.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/ncache.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/nsec.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/nsec3.h#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/opcode.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/order.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/peer.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/portlist.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/rbt.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/rcode.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/rdata.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/rdataclass.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/rdatalist.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/rdataset.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/rdatasetiter.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/rdataslab.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/rdatatype.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/request.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/resolver.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/result.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/rootns.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/sdb.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/sdlz.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/secalg.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/secproto.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/soa.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/ssu.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/stats.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/tcpmsg.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/time.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/timer.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/tkey.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/tsig.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/ttl.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/types.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/validator.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/version.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/view.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/xfrin.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/zone.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/zonekey.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dns/zt.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dst/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dst/dst.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dst/gssapi.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dst/lib.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/include/dst/result.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/iptable.c#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/journal.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/key.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/keytable.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/lib.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/log.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/lookup.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/master.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/masterdump.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/message.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/name.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/ncache.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/nsec.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/nsec3.c#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/openssl_link.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/openssldh_link.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/openssldsa_link.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/opensslrsa_link.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/order.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/peer.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/portlist.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rbt.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rbtdb.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rbtdb.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rbtdb64.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rbtdb64.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rcode.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/any_255/tsig_250.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/any_255/tsig_250.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/ch_3/a_1.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/ch_3/a_1.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/afsdb_18.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/afsdb_18.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/cert_37.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/cert_37.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/cname_5.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/cname_5.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/dlv_32769.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/dlv_32769.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/dname_39.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/dname_39.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/dnskey_48.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/dnskey_48.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/ds_43.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/ds_43.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/gpos_27.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/gpos_27.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/hinfo_13.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/hinfo_13.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/ipseckey_45.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/ipseckey_45.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/isdn_20.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/isdn_20.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/key_25.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/key_25.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/loc_29.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/loc_29.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/mb_7.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/mb_7.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/md_3.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/md_3.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/mf_4.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/mf_4.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/mg_8.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/mg_8.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/minfo_14.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/minfo_14.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/mr_9.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/mr_9.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/mx_15.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/mx_15.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/ns_2.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/ns_2.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/nsec3_50.c#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/nsec3_50.h#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/nsec3param_51.c#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/nsec3param_51.h#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/nsec_47.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/nsec_47.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/null_10.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/null_10.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/nxt_30.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/nxt_30.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/opt_41.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/opt_41.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/proforma.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/proforma.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/ptr_12.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/ptr_12.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/rp_17.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/rp_17.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/rrsig_46.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/rrsig_46.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/rt_21.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/rt_21.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/sig_24.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/sig_24.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/soa_6.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/soa_6.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/spf_99.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/spf_99.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/sshfp_44.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/sshfp_44.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/tkey_249.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/tkey_249.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/txt_16.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/txt_16.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/unspec_103.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/unspec_103.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/x25_19.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/generic/x25_19.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/hs_4/a_1.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/hs_4/a_1.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/a6_38.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/a6_38.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/a_1.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/a_1.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/aaaa_28.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/aaaa_28.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/apl_42.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/apl_42.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/dhcid_49.c#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/dhcid_49.h#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/kx_36.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/kx_36.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/naptr_35.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/naptr_35.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/nsap-ptr_23.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/nsap-ptr_23.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/nsap_22.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/nsap_22.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/px_26.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/px_26.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/srv_33.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/srv_33.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/wks_11.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/in_1/wks_11.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/rdatastructpre.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdata/rdatastructsuf.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdatalist.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdatalist_p.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdataset.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdatasetiter.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rdataslab.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/request.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/resolver.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/result.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/rootns.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/sdb.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/sdlz.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/soa.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/spnego.asn1#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/spnego.c#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/spnego.h#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/spnego_asn1.c#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/spnego_asn1.pl#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/ssu.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/stats.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/tcpmsg.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/time.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/timer.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/tkey.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/tsig.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/ttl.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/validator.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/version.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/view.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/xfrin.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/zone.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/zonekey.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/dns/zt.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/alpha/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/alpha/include/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/alpha/include/isc/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/alpha/include/isc/atomic.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/api#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/assertions.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/base32.c#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/base64.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/bitstring.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/buffer.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/bufferlist.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/commandline.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/entropy.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/error.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/event.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/fsaccess.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/hash.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/heap.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/hex.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/hmacmd5.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/hmacsha.c#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/httpd.c#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/ia64/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/ia64/include/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/ia64/include/isc/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/ia64/include/isc/atomic.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/Makefile.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/app.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/assertions.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/base32.h#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/base64.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/bitstring.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/boolean.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/buffer.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/bufferlist.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/commandline.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/entropy.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/error.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/event.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/eventclass.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/file.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/formatcheck.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/fsaccess.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/hash.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/heap.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/hex.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/hmacmd5.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/hmacsha.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/httpd.h#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/interfaceiter.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/ipv6.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/iterated_hash.h#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/lang.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/lex.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/lfsr.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/lib.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/list.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/log.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/magic.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/md5.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/mem.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/msgcat.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/msgs.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/mutexblock.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/netaddr.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/netscope.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/ondestroy.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/os.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/parseint.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/platform.h.in#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/portset.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/print.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/quota.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/radix.h#1 branch .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/random.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/ratelimiter.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/refcount.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/region.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/resource.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/result.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/resultclass.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/rwlock.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/serial.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/sha1.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/sha2.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/sockaddr.h#2 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/contrib/bind9/lib/isc/include/isc/socket.h#2 integrate >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Tue Aug 11 16:31:36 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 27A751065674; Tue, 11 Aug 2009 16:31:36 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DBD04106564A for ; Tue, 11 Aug 2009 16:31:35 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id CB7678FC48 for ; Tue, 11 Aug 2009 16:31:35 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BGVZ8S041751 for ; Tue, 11 Aug 2009 16:31:35 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BGVZAS041749 for perforce@freebsd.org; Tue, 11 Aug 2009 16:31:35 GMT (envelope-from zec@fer.hr) Date: Tue, 11 Aug 2009 16:31:35 GMT Message-Id: <200908111631.n7BGVZAS041749@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167215 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 16:31:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=167215 Change 167215 by zec@zec_tpx32 on 2009/08/11 16:30:55 First whitespace cleanup iteration. Affected files ... .. //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#37 edit Differences ... ==== //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#37 (text+ko) ==== @@ -131,16 +131,15 @@ static void div_zone_change(struct vnet *vnet) { - VNET_ITERATOR_DECL(vnet_iter); + VNET_ITERATOR_DECL(vnet_iter); - VNET_LIST_RLOCK_NOSLEEP(); - VNET_FOREACH(vnet_iter) { - CURVNET_SET(vnet_iter); + VNET_LIST_RLOCK_NOSLEEP(); + VNET_FOREACH(vnet_iter) { + CURVNET_SET(vnet_iter); uma_zone_set_max(V_divcbinfo.ipi_zone, maxsockets); - CURVNET_RESTORE(); - } - VNET_LIST_RUNLOCK_NOSLEEP(); - + CURVNET_RESTORE(); + } + VNET_LIST_RUNLOCK_NOSLEEP(); } static int @@ -518,10 +517,10 @@ * XXX -- divert should not be abusing in_pcbind * and should probably have its own family. */ - if (inp->inp_lport != 0 || inp->inp_laddr.s_addr != INADDR_ANY) - return (EINVAL); + if (inp->inp_lport != 0 || inp->inp_laddr.s_addr != INADDR_ANY) + return (EINVAL); /* possibly not needed.. but play safe */ - inp->inp_fport = 0; + inp->inp_fport = 0; inp->inp_faddr.s_addr = INADDR_ANY; if (nam->sa_family != AF_INET) @@ -538,7 +537,7 @@ td->td_ucred)) { error = EADDRNOTAVAIL; } else { - inp->inp_lport = ((struct sockaddr_in *)nam)->sin_port; + inp->inp_lport = ((struct sockaddr_in *)nam)->sin_port; if (in_pcbinshash(inp) != 0) { inp->inp_lport = 0; error = EAGAIN; @@ -765,7 +764,7 @@ ip_divert_ptr = divert_packet; div_evh_tag = EVENTHANDLER_REGISTER(maxsockets_change, div_zone_change, - NULL, EVENTHANDLER_PRI_ANY); + NULL, EVENTHANDLER_PRI_ANY); div_loaded = 1; } return; @@ -852,17 +851,16 @@ } -#define DIV_MAJOR_ORDER SI_SUB_PROTO_IFATTACHDOMAIN -#define DIV_MODULE_ORDER (SI_ORDER_ANY + 64) -#define DIV_SYSINIT_ORDER (DIV_MODULE_ORDER + 1) -#define DIV_VNET_ORDER (DIV_SYSINIT_ORDER + 1 ) +#define DIV_MAJOR_ORDER SI_SUB_PROTO_IFATTACHDOMAIN +#define DIV_MODULE_ORDER (SI_ORDER_ANY + 64) +#define DIV_SYSINIT_ORDER (DIV_MODULE_ORDER + 1) +#define DIV_VNET_ORDER (DIV_SYSINIT_ORDER + 1 ) DECLARE_MODULE(ipdivert, ipdivertmod, DIV_MAJOR_ORDER, DIV_MODULE_ORDER); MODULE_DEPEND(dummynet, ipfw, 2, 2, 2); MODULE_VERSION(ipdivert, 1); -SYSINIT(div_init, DIV_MAJOR_ORDER, DIV_SYSINIT_ORDER, - div_init, NULL); +SYSINIT(div_init, DIV_MAJOR_ORDER, DIV_SYSINIT_ORDER, div_init, NULL); SYSUNINIT(div_uninit, DIV_MAJOR_ORDER, DIV_SYSINIT_ORDER, div_uninit, NULL); From owner-p4-projects@FreeBSD.ORG Tue Aug 11 16:46:53 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1036B1065675; Tue, 11 Aug 2009 16:46:53 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C4124106566C for ; Tue, 11 Aug 2009 16:46:52 +0000 (UTC) (envelope-from marinosi@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B26008FC3D for ; Tue, 11 Aug 2009 16:46:52 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BGkqaN042894 for ; Tue, 11 Aug 2009 16:46:52 GMT (envelope-from marinosi@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BGkqHi042892 for perforce@freebsd.org; Tue, 11 Aug 2009 16:46:52 GMT (envelope-from marinosi@FreeBSD.org) Date: Tue, 11 Aug 2009 16:46:52 GMT Message-Id: <200908111646.n7BGkqHi042892@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marinosi@FreeBSD.org using -f From: Ilias Marinos To: Perforce Change Reviews Cc: Subject: PERFORCE change 167216 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 16:46:53 -0000 http://perforce.freebsd.org/chv.cgi?CH=167216 Change 167216 by marinosi@marinosi_redrum on 2009/08/11 16:46:08 Merge with the latest audit codebase. Affected files ... .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#16 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.h#5 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_private.h#7 integrate .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_worker.c#8 integrate Differences ... ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#16 (text) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/security/audit/audit.c,v 1.51 2009/04/19 14:53:17 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/security/audit/audit.c,v 1.53 2009/07/28 21:39:58 rwatson Exp $"); #include #include @@ -80,6 +80,7 @@ MALLOC_DEFINE(M_AUDITDATA, "audit_data", "Audit data storage"); MALLOC_DEFINE(M_AUDITPATH, "audit_path", "Audit path storage"); MALLOC_DEFINE(M_AUDITTEXT, "audit_text", "Audit text storage"); +MALLOC_DEFINE(M_AUDITGIDSET, "audit_gidset", "Audit GID set storage"); MALLOC_DEFINE(M_AUDITSLICE, "audit_slice", "Audit slice storage"); SYSCTL_NODE(_security, OID_AUTO, audit, CTLFLAG_RW, 0, @@ -221,6 +222,8 @@ free(ar->k_ar.ar_arg_argv, M_AUDITTEXT); if (ar->k_ar.ar_arg_envv != NULL) free(ar->k_ar.ar_arg_envv, M_AUDITTEXT); + if (ar->k_ar.ar_arg_groups.gidset != NULL) + free(ar->k_ar.ar_arg_groups.gidset, M_AUDITGIDSET); } /* @@ -395,17 +398,22 @@ else sorf = AU_PRS_SUCCESS; + /* + * syscalls.master sometimes contains a prototype event number, which + * we will transform into a more specific event number now that we + * have more complete information gathered during the system call. + */ switch(ar->k_ar.ar_event) { case AUE_OPEN_RWTC: - /* - * The open syscall always writes a AUE_OPEN_RWTC event; - * change it to the proper type of event based on the flags - * and the error value. - */ ar->k_ar.ar_event = audit_flags_and_error_to_openevent( ar->k_ar.ar_arg_fflags, error); break; + case AUE_OPENAT_RWTC: + ar->k_ar.ar_event = audit_flags_and_error_to_openatevent( + ar->k_ar.ar_arg_fflags, error); + break; + case AUE_SYSCTL: ar->k_ar.ar_event = audit_ctlname_to_sysctlevent( ar->k_ar.ar_arg_ctlname, ar->k_ar.ar_valid_arg); ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.h#5 (text) ==== @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/security/audit/audit.h,v 1.24 2009/03/09 10:45:58 rwatson Exp $ + * $FreeBSD: src/sys/security/audit/audit.h,v 1.29 2009/07/29 07:44:43 rwatson Exp $ */ /* @@ -56,67 +56,6 @@ extern int audit_enabled; extern int audit_suspended; -/* - * Define the masks for the audited arguments. - * - * XXXRW: These need to remain in audit.h for now because our vnode and name - * lookup audit calls rely on passing in flags to indicate which name or - * vnode is being logged. These should move to audit_private.h when that is - * fixed. - */ -#define ARG_EUID 0x0000000000000001ULL -#define ARG_RUID 0x0000000000000002ULL -#define ARG_SUID 0x0000000000000004ULL -#define ARG_EGID 0x0000000000000008ULL -#define ARG_RGID 0x0000000000000010ULL -#define ARG_SGID 0x0000000000000020ULL -#define ARG_PID 0x0000000000000040ULL -#define ARG_UID 0x0000000000000080ULL -#define ARG_AUID 0x0000000000000100ULL -#define ARG_GID 0x0000000000000200ULL -#define ARG_FD 0x0000000000000400ULL -#define ARG_POSIX_IPC_PERM 0x0000000000000800ULL -#define ARG_FFLAGS 0x0000000000001000ULL -#define ARG_MODE 0x0000000000002000ULL -#define ARG_DEV 0x0000000000004000ULL -#define ARG_ADDR 0x0000000000008000ULL -#define ARG_LEN 0x0000000000010000ULL -#define ARG_MASK 0x0000000000020000ULL -#define ARG_SIGNUM 0x0000000000040000ULL -#define ARG_LOGIN 0x0000000000080000ULL -#define ARG_SADDRINET 0x0000000000100000ULL -#define ARG_SADDRINET6 0x0000000000200000ULL -#define ARG_SADDRUNIX 0x0000000000400000ULL -#define ARG_TERMID_ADDR 0x0000000000400000ULL -#define ARG_UNUSED2 0x0000000001000000ULL -#define ARG_UPATH1 0x0000000002000000ULL -#define ARG_UPATH2 0x0000000004000000ULL -#define ARG_TEXT 0x0000000008000000ULL -#define ARG_VNODE1 0x0000000010000000ULL -#define ARG_VNODE2 0x0000000020000000ULL -#define ARG_SVIPC_CMD 0x0000000040000000ULL -#define ARG_SVIPC_PERM 0x0000000080000000ULL -#define ARG_SVIPC_ID 0x0000000100000000ULL -#define ARG_SVIPC_ADDR 0x0000000200000000ULL -#define ARG_GROUPSET 0x0000000400000000ULL -#define ARG_CMD 0x0000000800000000ULL -#define ARG_SOCKINFO 0x0000001000000000ULL -#define ARG_ASID 0x0000002000000000ULL -#define ARG_TERMID 0x0000004000000000ULL -#define ARG_AUDITON 0x0000008000000000ULL -#define ARG_VALUE 0x0000010000000000ULL -#define ARG_AMASK 0x0000020000000000ULL -#define ARG_CTLNAME 0x0000040000000000ULL -#define ARG_PROCESS 0x0000080000000000ULL -#define ARG_MACHPORT1 0x0000100000000000ULL -#define ARG_MACHPORT2 0x0000200000000000ULL -#define ARG_EXIT 0x0000400000000000ULL -#define ARG_IOVECSTR 0x0000800000000000ULL -#define ARG_ARGV 0x0001000000000000ULL -#define ARG_ENVV 0x0002000000000000ULL -#define ARG_NONE 0x0000000000000000ULL -#define ARG_ALL 0xFFFFFFFFFFFFFFFFULL - void audit_syscall_enter(unsigned short code, struct thread *td); void audit_syscall_exit(int error, struct thread *td); @@ -132,6 +71,8 @@ void audit_arg_addr(void * addr); void audit_arg_exit(int status, int retval); void audit_arg_len(int len); +void audit_arg_atfd1(int atfd); +void audit_arg_atfd2(int atfd); void audit_arg_fd(int fd); void audit_arg_fflags(int fflags); void audit_arg_gid(gid_t gid); @@ -158,8 +99,10 @@ void audit_arg_auid(uid_t auid); void audit_arg_auditinfo(struct auditinfo *au_info); void audit_arg_auditinfo_addr(struct auditinfo_addr *au_info); -void audit_arg_upath(struct thread *td, char *upath, u_int64_t flags); -void audit_arg_vnode(struct vnode *vp, u_int64_t flags); +void audit_arg_upath1(struct thread *td, char *upath); +void audit_arg_upath2(struct thread *td, char *upath); +void audit_arg_vnode1(struct vnode *vp); +void audit_arg_vnode2(struct vnode *vp); void audit_arg_text(char *text); void audit_arg_cmd(int cmd); void audit_arg_svipc_cmd(int cmd); @@ -182,14 +125,175 @@ void audit_thread_free(struct thread *td); /* - * Define a macro to wrap the audit_arg_* calls by checking the global + * Define macros to wrap the audit_arg_* calls by checking the global * audit_enabled flag before performing the actual call. */ -#define AUDIT_ARG(op, args...) do { \ - if (td->td_pflags & TDP_AUDITREC) \ - audit_arg_ ## op (args); \ +#define AUDITING_TD(td) ((td)->td_pflags & TDP_AUDITREC) + +#define AUDIT_ARG_ADDR(addr) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_addr((addr)); \ +} while (0) + +#define AUDIT_ARG_ARGV(argv, argc, length) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_argv((argv), (argc), (length)); \ +} while (0) + +#define AUDIT_ARG_ATFD1(atfd) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_atfd1((atfd)); \ +} while (0) + +#define AUDIT_ARG_ATFD2(atfd) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_atfd2((atfd)); \ +} while (0) + +#define AUDIT_ARG_AUDITON(udata) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_auditon((udata)); \ +} while (0) + +#define AUDIT_ARG_CMD(cmd) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_cmd((cmd)); \ +} while (0) + +#define AUDIT_ARG_DEV(dev) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_dev((dev)); \ +} while (0) + +#define AUDIT_ARG_EGID(egid) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_egid((egid)); \ +} while (0) + +#define AUDIT_ARG_ENVV(envv, envc, length) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_envv((envv), (envc), (length)); \ +} while (0) + +#define AUDIT_ARG_EXIT(status, retval) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_exit((status), (retval)); \ +} while (0) + +#define AUDIT_ARG_EUID(euid) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_euid((euid)); \ +} while (0) + +#define AUDIT_ARG_FD(fd) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_fd((fd)); \ +} while (0) + +#define AUDIT_ARG_FILE(p, fp) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_file((p), (fp)); \ +} while (0) + +#define AUDIT_ARG_FFLAGS(fflags) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_fflags((fflags)); \ +} while (0) + +#define AUDIT_ARG_GID(gid) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_gid((gid)); \ +} while (0) + +#define AUDIT_ARG_GROUPSET(gidset, gidset_size) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_groupset((gidset), (gidset_size)); \ +} while (0) + +#define AUDIT_ARG_MODE(mode) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_mode((mode)); \ +} while (0) + +#define AUDIT_ARG_OWNER(uid, gid) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_owner((uid), (gid)); \ +} while (0) + +#define AUDIT_ARG_PID(pid) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_pid((pid)); \ +} while (0) + +#define AUDIT_ARG_PROCESS(p) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_process((p)); \ +} while (0) + +#define AUDIT_ARG_RGID(rgid) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_gid((rgid)); \ +} while (0) + +#define AUDIT_ARG_RUID(ruid) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_ruid((ruid)); \ +} while (0) + +#define AUDIT_ARG_SIGNUM(signum) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_signum((signum)); \ +} while (0) + +#define AUDIT_ARG_SGID(sgid) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_sgid((sgid)); \ +} while (0) + +#define AUDIT_ARG_SOCKET(sodomain, sotype, soprotocol) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_socket((sodomain), (sotype), (soprotocol)); \ +} while (0) + +#define AUDIT_ARG_SUID(suid) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_suid((suid)); \ +} while (0) + +#define AUDIT_ARG_TEXT(text) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_text((text)); \ +} while (0) + +#define AUDIT_ARG_UID(uid) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_uid((uid)); \ +} while (0) + +#define AUDIT_ARG_UPATH1(td, upath) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_upath1((td), (upath)); \ +} while (0) + +#define AUDIT_ARG_UPATH2(td, upath) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_upath2((td), (upath)); \ +} while (0) + +#define AUDIT_ARG_VALUE(value) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_value((value)); \ +} while (0) + +#define AUDIT_ARG_VNODE1(vp) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_vnode1((vp)); \ } while (0) +#define AUDIT_ARG_VNODE2(vp) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_vnode2((vp)); \ +} while (0) #define AUDIT_SYSCALL_ENTER(code, td) do { \ if (audit_enabled) { \ @@ -217,17 +321,44 @@ #else /* !AUDIT */ -#define AUDIT_ARG(op, args...) do { \ -} while (0) +#define AUDIT_ARG_ADDR(addr) +#define AUDIT_ARG_ARGV(argv, argc, length) +#define AUDIT_ARG_ATFD1(atfd) +#define AUDIT_ARG_ATFD2(atfd) +#define AUDIT_ARG_AUDITON(udata) +#define AUDIT_ARG_CMD(cmd) +#define AUDIT_ARG_DEV(dev) +#define AUDIT_ARG_EGID(egid) +#define AUDIT_ARG_ENVV(envv, envc, length) +#define AUDIT_ARG_EXIT(status, retval) +#define AUDIT_ARG_EUID(euid) +#define AUDIT_ARG_FD(fd) +#define AUDIT_ARG_FILE(p, fp) +#define AUDIT_ARG_FFLAGS(fflags) +#define AUDIT_ARG_GID(gid) +#define AUDIT_ARG_GROUPSET(gidset, gidset_size) +#define AUDIT_ARG_MODE(mode) +#define AUDIT_ARG_OWNER(uid, gid) +#define AUDIT_ARG_PID(pid) +#define AUDIT_ARG_PROCESS(p) +#define AUDIT_ARG_RGID(rgid) +#define AUDIT_ARG_RUID(ruid) +#define AUDIT_ARG_SIGNUM(signum) +#define AUDIT_ARG_SGID(sgid) +#define AUDIT_ARG_SOCKET(sodomain, sotype, soprotocol) +#define AUDIT_ARG_SUID(suid) +#define AUDIT_ARG_TEXT(text) +#define AUDIT_ARG_UID(uid) +#define AUDIT_ARG_UPATH1(td, upath) +#define AUDIT_ARG_UPATH2(td, upath) +#define AUDIT_ARG_VALUE(value) +#define AUDIT_ARG_VNODE1(vp) +#define AUDIT_ARG_VNODE2(vp) -#define AUDIT_SYSCALL_ENTER(code, td) do { \ -} while (0) +#define AUDIT_SYSCALL_ENTER(code, td) +#define AUDIT_SYSCALL_EXIT(error, td) -#define AUDIT_SYSCALL_EXIT(error, td) do { \ -} while (0) - -#define AUDIT_SYSCLOSE(p, fd) do { \ -} while (0) +#define AUDIT_SYSCLOSE(p, fd) #endif /* AUDIT */ ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_private.h#7 (text) ==== @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/security/audit/audit_private.h,v 1.27 2009/04/19 14:53:17 rwatson Exp $ + * $FreeBSD: src/sys/security/audit/audit_private.h,v 1.31 2009/07/29 07:44:43 rwatson Exp $ */ /* @@ -50,6 +50,7 @@ MALLOC_DECLARE(M_AUDITDATA); MALLOC_DECLARE(M_AUDITPATH); MALLOC_DECLARE(M_AUDITTEXT); +MALLOC_DECLARE(M_AUDITGIDSET); MALLOC_DECLARE(M_AUDITSLICE); #endif @@ -105,8 +106,8 @@ }; struct groupset { - gid_t gidset[NGROUPS]; - u_int gidset_size; + gid_t *gidset; + u_int gidset_size; }; struct socket_au_info { @@ -242,6 +243,8 @@ gid_t ar_arg_gid; struct groupset ar_arg_groups; int ar_arg_fd; + int ar_arg_atfd1; + int ar_arg_atfd2; int ar_arg_fflags; mode_t ar_arg_mode; int ar_arg_dev; @@ -281,10 +284,68 @@ * indicate if they are present so they can be included in the audit log * stream only if defined. */ +#define ARG_EUID 0x0000000000000001ULL +#define ARG_RUID 0x0000000000000002ULL +#define ARG_SUID 0x0000000000000004ULL +#define ARG_EGID 0x0000000000000008ULL +#define ARG_RGID 0x0000000000000010ULL +#define ARG_SGID 0x0000000000000020ULL +#define ARG_PID 0x0000000000000040ULL +#define ARG_UID 0x0000000000000080ULL +#define ARG_AUID 0x0000000000000100ULL +#define ARG_GID 0x0000000000000200ULL +#define ARG_FD 0x0000000000000400ULL +#define ARG_POSIX_IPC_PERM 0x0000000000000800ULL +#define ARG_FFLAGS 0x0000000000001000ULL +#define ARG_MODE 0x0000000000002000ULL +#define ARG_DEV 0x0000000000004000ULL +#define ARG_ADDR 0x0000000000008000ULL +#define ARG_LEN 0x0000000000010000ULL +#define ARG_MASK 0x0000000000020000ULL +#define ARG_SIGNUM 0x0000000000040000ULL +#define ARG_LOGIN 0x0000000000080000ULL +#define ARG_SADDRINET 0x0000000000100000ULL +#define ARG_SADDRINET6 0x0000000000200000ULL +#define ARG_SADDRUNIX 0x0000000000400000ULL +#define ARG_TERMID_ADDR 0x0000000000400000ULL +#define ARG_UNUSED2 0x0000000001000000ULL +#define ARG_UPATH1 0x0000000002000000ULL +#define ARG_UPATH2 0x0000000004000000ULL +#define ARG_TEXT 0x0000000008000000ULL +#define ARG_VNODE1 0x0000000010000000ULL +#define ARG_VNODE2 0x0000000020000000ULL +#define ARG_SVIPC_CMD 0x0000000040000000ULL +#define ARG_SVIPC_PERM 0x0000000080000000ULL +#define ARG_SVIPC_ID 0x0000000100000000ULL +#define ARG_SVIPC_ADDR 0x0000000200000000ULL +#define ARG_GROUPSET 0x0000000400000000ULL +#define ARG_CMD 0x0000000800000000ULL +#define ARG_SOCKINFO 0x0000001000000000ULL +#define ARG_ASID 0x0000002000000000ULL +#define ARG_TERMID 0x0000004000000000ULL +#define ARG_AUDITON 0x0000008000000000ULL +#define ARG_VALUE 0x0000010000000000ULL +#define ARG_AMASK 0x0000020000000000ULL +#define ARG_CTLNAME 0x0000040000000000ULL +#define ARG_PROCESS 0x0000080000000000ULL +#define ARG_MACHPORT1 0x0000100000000000ULL +#define ARG_MACHPORT2 0x0000200000000000ULL +#define ARG_EXIT 0x0000400000000000ULL +#define ARG_IOVECSTR 0x0000800000000000ULL +#define ARG_ARGV 0x0001000000000000ULL +#define ARG_ENVV 0x0002000000000000ULL +#define ARG_ATFD1 0x0004000000000000ULL +#define ARG_ATFD2 0x0008000000000000ULL +#define ARG_NONE 0x0000000000000000ULL +#define ARG_ALL 0xFFFFFFFFFFFFFFFFULL + #define ARG_IS_VALID(kar, arg) ((kar)->k_ar.ar_valid_arg & (arg)) #define ARG_SET_VALID(kar, arg) do { \ (kar)->k_ar.ar_valid_arg |= (arg); \ } while (0) +#define ARG_CLEAR_VALID(kar, arg) do { \ + (kar)->k_ar.ar_valid_arg &= ~(arg); \ +} while (0) /* * In-kernel version of audit record; the basic record plus queue meta-data. @@ -358,6 +419,7 @@ au_class_t au_event_class(au_event_t event); au_event_t audit_ctlname_to_sysctlevent(int name[], uint64_t valid_arg); au_event_t audit_flags_and_error_to_openevent(int oflags, int error); +au_event_t audit_flags_and_error_to_openatevent(int oflags, int error); au_event_t audit_msgctl_to_event(int cmd); au_event_t audit_semctl_to_event(int cmr); void audit_canon_path(struct thread *td, char *path, char *cpath); ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_worker.c#8 (text) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/security/audit/audit_worker.c,v 1.31 2008/11/10 22:06:24 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/security/audit/audit_worker.c,v 1.32 2009/05/11 15:33:26 attilio Exp $"); #include #include @@ -121,7 +121,7 @@ * that we know how we're doing on space. Consider failure of these * operations to indicate a future inability to write to the file. */ - error = VFS_STATFS(as->audit_vp->v_mount, mnt_stat, curthread); + error = VFS_STATFS(as->audit_vp->v_mount, mnt_stat); if (error) goto fail; vn_lock(as->audit_vp, LK_EXCLUSIVE | LK_RETRY); From owner-p4-projects@FreeBSD.ORG Tue Aug 11 17:51:03 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0E36A1065677; Tue, 11 Aug 2009 17:51:03 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B7B601065674 for ; Tue, 11 Aug 2009 17:51:02 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id A63B78FC42 for ; Tue, 11 Aug 2009 17:51:02 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BHp2GV058518 for ; Tue, 11 Aug 2009 17:51:02 GMT (envelope-from anchie@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BHp2Cc058516 for perforce@freebsd.org; Tue, 11 Aug 2009 17:51:02 GMT (envelope-from anchie@FreeBSD.org) Date: Tue, 11 Aug 2009 17:51:02 GMT Message-Id: <200908111751.n7BHp2Cc058516@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anchie@FreeBSD.org using -f From: Ana Kukec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167217 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 17:51:04 -0000 http://perforce.freebsd.org/chv.cgi?CH=167217 Change 167217 by anchie@anchie_desnimis on 2009/08/11 17:50:33 Trying to debug kernel panic that appears after the packet is received through icmp6_input() and passed to user land through netinet6/send.c: send_output(). Affected files ... .. //depot/projects/soc2009/anchie_send/src/sys/net/rtsock.c#13 edit .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/icmp6.c#21 edit .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/send.c#22 edit Differences ... ==== //depot/projects/soc2009/anchie_send/src/sys/net/rtsock.c#13 (text+ko) ==== @@ -1280,7 +1280,9 @@ bcopy(data, mtod(n, void *), data_len); printf("rtsock.c: rt_msg3(), nakon bcopy!\n"); n->m_len = data_len; + printf("Nakon n->m_len = data_len;\n"); m->m_next = n; + printf("Nakon m->m_next = n;\n"); } else if (data_len > 0) { printf("rtsock.c: rt_msg3(), prije bcopy 2!\n"); bcopy(data, mtod(m, u_int8_t *) + m->m_len, data_len); @@ -1289,6 +1291,7 @@ } if (m->m_flags & M_PKTHDR) m->m_pkthdr.len += data_len; + printf("prije mtod!\n"); mtod(m, struct if_announcemsghdr *)->ifan_msglen += data_len; printf("prije rt_dispatch\n"); rt_dispatch(m, NULL); ==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/icmp6.c#21 (text+ko) ==== @@ -825,37 +825,24 @@ break; case ND_NEIGHBOR_SOLICIT: - printf("icmp6.c, ND_NEIGHBOR_SOLICIT!\n"); - printf("AK: ip6len = %d\n", ip6len); - printf("icmp6len = %d\n", icmp6len); + printf("icmp6.c: ND_NEIGHBOR_SOLICIT!\n"); + printf("icmp6.c: ip6len = %d\n", ip6len); + printf("icmp6.c: icmp6len = %d\n", icmp6len); icmp6_ifstat_inc(ifp, ifs6_in_neighborsolicit); if (code != 0) goto badcode; if (icmp6len < sizeof(struct nd_neighbor_solicit)) goto badlen; ->>>> ORIGINAL //depot/projects/soc2009/anchie_send/src/sys/netinet6/icmp6.c#18 -==== THEIRS //depot/projects/soc2009/anchie_send/src/sys/netinet6/icmp6.c#19 -#if 0 -==== YOURS //anchie_desnimis/gsoc2009-send/src/sys/netinet6/icmp6.c - #if 0 if ((n = m_copypacket(m, M_DONTWAIT)) == NULL) { #endif -<<<< if ((n = m_copym(m, 0, M_COPYALL, M_DONTWAIT)) == NULL) { #if 0 if ((n = m_dup(m, M_DONTWAIT)) == NULL) { #endif ->>>> ORIGINAL //depot/projects/soc2009/anchie_send/src/sys/netinet6/icmp6.c#18 - -==== THEIRS //depot/projects/soc2009/anchie_send/src/sys/netinet6/icmp6.c#19 - if ((n = m_dup(m, M_DONTWAIT)) == NULL) { - -==== YOURS //anchie_desnimis/gsoc2009-send/src/sys/netinet6/icmp6.c -<<<< /* Send incoming SeND/ND packet to user space. */ if (send_input_hook != NULL) { - printf("send_input_hook 1\n"); + printf("icmp6.c: send_input_hook 1\n"); send_input_hook(m, ifp, SND_IN, ip6len); } else { /* give up local */ @@ -865,7 +852,7 @@ goto freeit; } if (send_input_hook != NULL) { - printf("send_input_hook 2\n"); + printf("icmp6.c: send_input_hook 2\n"); send_input_hook(n, ifp, SND_IN, ip6len); return (IPPROTO_DONE); } else ==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/send.c#22 (text+ko) ==== @@ -8,6 +8,8 @@ #include #include +#include + #include #include #include @@ -26,7 +28,7 @@ struct icmp6_hdr *icmp6; int icmp6len; - printf("send_output\n"); + printf("send.c: send_output()\n"); /* * Receive incoming (SEND-protected) or outgoing traffic @@ -97,6 +99,24 @@ ip6 = mtod(m, struct ip6_hdr *); + struct mbuf *n = m_get(M_NOWAIT, MT_DATA); + if (direction == SND_IN) { + if (msglen > M_TRAILINGSPACE(m)) { + if (n == NULL) { + printf("rtsock.c: rt_msg3(), m_freem!\n"); + panic("n==NULL\n"); + return (1); + } + printf("send.c: bcopy!\n"); + bcopy(ip6, mtod(n, void *), msglen); + printf("send.c: bcopy ok!\n"); + n->m_len = msglen; + printf("send.c: msglen set up: n->m_len = data_len;\n"); + } + + ip6 = mtod(n, struct ip6_hdr *); + } + /* * Send incoming or outgoing traffic to the user space either to be * protected (outgoing) or validated (incoming) according to rfc3971. */ From owner-p4-projects@FreeBSD.ORG Tue Aug 11 17:51:06 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C47B4106570E; Tue, 11 Aug 2009 17:51:04 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3EF5F1065688 for ; Tue, 11 Aug 2009 17:51:03 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 2A8428FC49 for ; Tue, 11 Aug 2009 17:51:03 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BHp3W7058525 for ; Tue, 11 Aug 2009 17:51:03 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BHp2Mq058523 for perforce@freebsd.org; Tue, 11 Aug 2009 17:51:02 GMT (envelope-from zec@fer.hr) Date: Tue, 11 Aug 2009 17:51:02 GMT Message-Id: <200908111751.n7BHp2Mq058523@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167218 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 17:51:07 -0000 http://perforce.freebsd.org/chv.cgi?CH=167218 Change 167218 by zec@zec_tpx32 on 2009/08/11 17:51:00 SCTP is not yet compatible with options VIMAGE builds, so explicitly disallow building such kernels. Affected files ... .. //depot/projects/vimage-commit2/src/sys/netinet/sctp_os_bsd.h#28 edit Differences ... ==== //depot/projects/vimage-commit2/src/sys/netinet/sctp_os_bsd.h#28 (text+ko) ==== @@ -78,6 +78,10 @@ #include #include +#ifdef VIMAGE +#error "SCTP is not yet compatible with VIMAGE." +#endif + #ifdef IPSEC #include #include From owner-p4-projects@FreeBSD.ORG Tue Aug 11 19:08:28 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 72C501065673; Tue, 11 Aug 2009 19:08:28 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F0F341065672 for ; Tue, 11 Aug 2009 19:08:27 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id DF5398FC43 for ; Tue, 11 Aug 2009 19:08:27 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BJ8RW5066207 for ; Tue, 11 Aug 2009 19:08:27 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BJ8Rku066204 for perforce@freebsd.org; Tue, 11 Aug 2009 19:08:27 GMT (envelope-from syl@FreeBSD.org) Date: Tue, 11 Aug 2009 19:08:27 GMT Message-Id: <200908111908.n7BJ8Rku066204@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 167221 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 19:08:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=167221 Change 167221 by syl@syl_atuin on 2009/08/11 19:08:11 Add support for clock pull{up|down}... Implement generic_set_port_feature. Implement generic_get_port_status. The old roothub_exec code is commented in at91dci.c until I have finish the new implmentation. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/at91dci.c#11 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_controller.h#9 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_roothub_exec.c#6 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/at91dci.c#11 (text+ko) ==== @@ -1673,15 +1673,18 @@ struct usb_device_request *req, const void **pptr, uint16_t *plength) { struct at91dci_softc *sc = AT9100_DCI_BUS2SC(udev->bus); - const void *ptr; - uint16_t len; - uint16_t value; - uint16_t index; - usb_error_t err; + struct usb_roothub_fops fops; - USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); + bzero(&fops, sizeof(struct usb_roothub_fops)); + fops.handle_clocks_on = (usb_clocks_fops_t)&at91dci_clocks_on; + fops.handle_clocks_off = (usb_clocks_fops_t)&at91dci_clocks_off; + fops.handle_pull_up = (usb_clocks_fops_t)&at91dci_pull_up; + fops.handle_pull_down = (usb_clocks_fops_t)&at91dci_pull_down; + fops.handle_wakeup_peer = (usb_clocks_fops_t)&at91dci_wakeup_peer; + return generic_roothub_exec((struct usb_generic_softc *)sc, &fops, req, + pptr, plength); +/* USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); - /* buffer reset */ ptr = (const void *)&sc->sc_hub_temp; len = 0; err = 0; @@ -1689,7 +1692,6 @@ value = UGETW(req->wValue); index = UGETW(req->wIndex); - /* demultiplex the control request */ switch (req->bmRequestType) { case UT_READ_DEVICE: @@ -1712,9 +1714,9 @@ case UR_SET_CONFIG: goto tr_handle_set_config; case UR_CLEAR_FEATURE: - goto tr_valid; /* nop */ + goto tr_valid; case UR_SET_DESCRIPTOR: - goto tr_valid; /* nop */ + goto tr_valid; case UR_SET_FEATURE: default: goto tr_stalled; @@ -1744,7 +1746,7 @@ } break; case UR_SYNCH_FRAME: - goto tr_valid; /* nop */ + goto tr_valid; default: goto tr_stalled; } @@ -1764,7 +1766,7 @@ case UR_SET_INTERFACE: goto tr_handle_set_interface; case UR_CLEAR_FEATURE: - goto tr_valid; /* nop */ + goto tr_valid; case UR_SET_FEATURE: default: goto tr_stalled; @@ -1784,12 +1786,10 @@ case UT_WRITE_CLASS_INTERFACE: case UT_WRITE_VENDOR_INTERFACE: - /* XXX forward */ break; case UT_READ_CLASS_INTERFACE: case UT_READ_VENDOR_INTERFACE: - /* XXX forward */ break; case UT_WRITE_CLASS_DEVICE: @@ -1865,17 +1865,17 @@ goto tr_valid; case UDESC_STRING: switch (value & 0xff) { - case 0: /* Language table */ + case 0: len = sizeof(at91dci_langtab); ptr = (const void *)&at91dci_langtab; goto tr_valid; - case 1: /* Vendor */ + case 1: len = sizeof(at91dci_vendor); ptr = (const void *)&at91dci_vendor; goto tr_valid; - case 2: /* Product */ + case 2: len = sizeof(at91dci_product); ptr = (const void *)&at91dci_product; goto tr_valid; @@ -1952,7 +1952,6 @@ case UHF_C_PORT_ENABLE: case UHF_C_PORT_OVER_CURRENT: case UHF_C_PORT_RESET: - /* nops */ break; case UHF_PORT_POWER: sc->sc_flags.port_powered = 0; @@ -1985,7 +1984,6 @@ case UHF_PORT_RESET: case UHF_PORT_TEST: case UHF_PORT_INDICATOR: - /* nops */ break; case UHF_PORT_POWER: sc->sc_flags.port_powered = 1; @@ -2011,8 +2009,6 @@ at91dci_clocks_off(sc); } - /* Select FULL-speed and Device Side Mode */ - value = UPS_PORT_MODE_DEVICE; if (sc->sc_flags.port_powered) { @@ -2037,7 +2033,6 @@ if (sc->sc_flags.status_vbus && sc->sc_flags.status_bus_reset) { - /* reset endpoint flags */ bzero(sc->sc_ep_flags, sizeof(sc->sc_ep_flags)); } } @@ -2062,7 +2057,7 @@ done: *plength = len; *pptr = ptr; - return (err); + return (err);*/ } static void ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_controller.h#9 (text+ko) ==== @@ -38,6 +38,7 @@ struct usb_endpoint; struct usb_page_cache; struct usb_setup_params; +struct usb_roothub_fops; struct usb_hw_ep_profile; struct usb_generic_softc; struct usb_fs_isoc_schedule; @@ -208,7 +209,8 @@ struct usb_port_status ps; }; -typedef usb_error_t (*usb_roothub_fops_t)(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index); +typedef usb_error_t (*usb_roothub_fops_t)(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +typedef usb_error_t (*usb_clocks_fops_t)(struct usb_generic_softc *sc); struct usb_roothub_fops { usb_roothub_fops_t handle_get_descriptor; @@ -230,6 +232,11 @@ usb_roothub_fops_t handle_get_port_status; usb_roothub_fops_t handle_get_class_descriptor; usb_roothub_fops_t handle_get_class_status; + usb_clocks_fops_t handle_clocks_on; + usb_clocks_fops_t handle_clocks_off; + usb_clocks_fops_t handle_pull_up; + usb_clocks_fops_t handle_pull_down; + usb_clocks_fops_t handle_wakeup_peer; }; /* prototypes */ ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_roothub_exec.c#6 (text+ko) ==== @@ -70,10 +70,16 @@ struct usb_generic_flags sc_flags; }; +#define SAFE_OPS(fops, field, err) \ + if (fops->field == NULL) \ + err = generic_roothub_fops.field(sc, fops, &len, &value, &index); \ + else \ + err = fops->field(sc, fops, &len, &value, &index) + static struct usb_roothub_fops generic_roothub_fops; static usb_error_t -generic_get_descriptor(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_descriptor(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { switch ((*value) >> 8) { case UDESC_DEVICE: @@ -109,7 +115,7 @@ } static usb_error_t -generic_get_config(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_config(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { *len = 1; sc->sc_hub_temp.wValue[0] = sc->sc_conf; @@ -117,7 +123,7 @@ } static usb_error_t -generic_get_status(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_status(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { *len = 2; USETW(sc->sc_hub_temp.wValue, UDS_SELF_POWERED); @@ -125,7 +131,7 @@ } static usb_error_t -generic_set_address(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_set_address(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { if ((*value) & 0xff00) { return (USB_ERR_STALLED); @@ -135,7 +141,7 @@ } static usb_error_t -generic_set_config(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_set_config(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { if ((*value) >= 2) { return (USB_ERR_STALLED); @@ -145,31 +151,31 @@ } static usb_error_t -generic_clear_halt(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_clear_halt(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { return (0); } static usb_error_t -generic_clear_wakeup(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_clear_wakeup(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { return (0); } static usb_error_t -generic_set_halt(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_set_halt(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { return (0); } static usb_error_t -generic_set_wakeup(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_set_wakeup(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { return (0); } static usb_error_t -generic_get_ep_status(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_ep_status(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { *len = 2; USETW(sc->sc_hub_temp.wValue, 0); @@ -177,13 +183,13 @@ } static usb_error_t -generic_set_interface(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_set_interface(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { return (0); } static usb_error_t -generic_get_interface(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_interface(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { *len = 1; sc->sc_hub_temp.wValue[0] = 0; @@ -191,7 +197,7 @@ } static usb_error_t -generic_get_iface_status(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_iface_status(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { *len = 2; USETW(sc->sc_hub_temp.wValue, 0); @@ -199,7 +205,7 @@ } static usb_error_t -generic_clear_port_feature(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_clear_port_feature(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { if ((*index) != 1) { return (USB_ERR_STALLED); @@ -208,7 +214,8 @@ switch (*value) { case UHF_PORT_SUSPEND: - /* XXX xxxdci_wakeup_peer */ + if (fops->handle_wakeup_peer) + fops->handle_wakeup_peer(sc); break; case UHF_PORT_ENABLE: @@ -223,7 +230,10 @@ break; case UHF_PORT_POWER: sc->sc_flags.port_powered = 0; - /* XXX Pull down clock off */ + if (fops->handle_pull_down) + fops->handle_pull_down(sc); + if (fops->handle_clocks_off) + fops->handle_clocks_off(sc); break; case UHF_C_PORT_CONNECTION: sc->sc_flags.change_connect = 0; @@ -238,27 +248,95 @@ } static usb_error_t -generic_set_port_feature(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_set_port_feature(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { + if ((*index) != 1) { + return (USB_ERR_IOERROR); + } + DPRINTFN(9, "UR_SET_PORT_FEATURE"); + + switch (*value) { + case UHF_PORT_ENABLE: + sc->sc_flags.port_enabled = 1; + break; + case UHF_PORT_SUSPEND: + case UHF_PORT_RESET: + case UHF_PORT_TEST: + case UHF_PORT_INDICATOR: + break; + case UHF_PORT_POWER: + sc->sc_flags.port_powered = 1; + break; + default: + return (USB_ERR_IOERROR); + } return (0); } static usb_error_t -generic_get_tt_state(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_tt_state(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { *len = 2; USETW(sc->sc_hub_temp.wValue, 0); return (0); } +/* XXX at91 Need another func*/ static usb_error_t -generic_get_port_status(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_port_status(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { + DPRINTFN(9, "UR_GET_PORT_STATUS"); + + if (*index != 1) { + return (USB_ERR_STALLED); + } + if (sc->sc_flags.status_vbus) { + if (fops->handle_clocks_on) + fops->handle_clocks_on(sc); + if (fops->handle_pull_up) + fops->handle_pull_up(sc); + } else { + if (fops->handle_clocks_off) + fops->handle_clocks_off(sc); + if (fops->handle_pull_down) + fops->handle_pull_down(sc); + } + + /* Select Full-Speend and Device Side Mode */ + + *value = UPS_PORT_MODE_DEVICE; + + if (sc->sc_flags.port_powered) { + *value |= UPS_PORT_POWER; + } + if (sc->sc_flags.port_enabled) { + *value |= UPS_PORT_ENABLED; + } + if (sc->sc_flags.status_vbus && + sc->sc_flags.status_bus_reset) { + *value |= UPS_CURRENT_CONNECT_STATUS; + } + if (sc->sc_flags.status_suspend) { + *value |= UPS_SUSPEND; + } + USETW(sc->sc_hub_temp.ps.wPortStatus, *value); + + *value = 0; + + if (sc->sc_flags.change_connect) { + *value |= UPS_C_CONNECT_STATUS; + } + if (sc->sc_flags.change_suspend) { + *value |= UPS_C_SUSPEND; + } + USETW(sc->sc_hub_temp.ps.wPortChange, *value); + *len = sizeof(sc->sc_hub_temp.ps); + return (0); } static usb_error_t -generic_get_class_descriptor(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_class_descriptor(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { if ((*value) & 0xff) { return (USB_ERR_STALLED); @@ -268,19 +346,13 @@ } static usb_error_t -generic_get_class_status(struct usb_generic_softc *sc, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_class_status(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { *len = 2; USETW(sc->sc_hub_temp.wValue, 0); return (0); } -#define SAFE_OPS(fops, field, err) \ - if (fops->field == NULL) \ - err = generic_roothub_fops.field(sc, &len, &value, &index); \ - else \ - err = fops->field(sc, &len, &value, &index) - usb_error_t generic_roothub_exec(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, struct usb_device_request *req, const void **pptr, uint16_t *plength) @@ -514,5 +586,10 @@ &generic_get_port_status, &generic_get_class_descriptor, &generic_get_class_status, + NULL, + NULL, + NULL, + NULL, + NULL, }; From owner-p4-projects@FreeBSD.ORG Tue Aug 11 19:42:05 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id F2A551065672; Tue, 11 Aug 2009 19:42:04 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AA6561065670 for ; Tue, 11 Aug 2009 19:42:04 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 999C48FC41 for ; Tue, 11 Aug 2009 19:42:04 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BJg4JI068664 for ; Tue, 11 Aug 2009 19:42:04 GMT (envelope-from anchie@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BJg4Bf068662 for perforce@freebsd.org; Tue, 11 Aug 2009 19:42:04 GMT (envelope-from anchie@FreeBSD.org) Date: Tue, 11 Aug 2009 19:42:04 GMT Message-Id: <200908111942.n7BJg4Bf068662@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anchie@FreeBSD.org using -f From: Ana Kukec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167222 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 19:42:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=167222 Change 167222 by anchie@anchie_desnimis on 2009/08/11 19:41:58 Minor fix. Affected files ... .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/nd6_nbr.c#7 edit Differences ... ==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/nd6_nbr.c#7 (text+ko) ==== @@ -73,13 +73,7 @@ #include #include #include ->>>> ORIGINAL //depot/vendor/freebsd/src/sys/netinet6/nd6_nbr.c#54 -#include -==== THEIRS //depot/vendor/freebsd/src/sys/netinet6/nd6_nbr.c#60 -==== YOURS //anchie_desnimis/gsoc2009-send/src/sys/netinet6/nd6_nbr.c #include -#include -<<<< #ifdef DEV_CARP #include From owner-p4-projects@FreeBSD.ORG Tue Aug 11 21:04:35 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3967F1065670; Tue, 11 Aug 2009 21:04:35 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EBD40106564A for ; Tue, 11 Aug 2009 21:04:34 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id DAE138FC21 for ; Tue, 11 Aug 2009 21:04:34 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BL4Yb2086617 for ; Tue, 11 Aug 2009 21:04:34 GMT (envelope-from anchie@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BL4Y6I086615 for perforce@freebsd.org; Tue, 11 Aug 2009 21:04:34 GMT (envelope-from anchie@FreeBSD.org) Date: Tue, 11 Aug 2009 21:04:34 GMT Message-Id: <200908112104.n7BL4Y6I086615@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anchie@FreeBSD.org using -f From: Ana Kukec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167223 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 21:04:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=167223 Change 167223 by anchie@anchie_desnimis on 2009/08/11 21:04:20 Removing collisions after integrate. Affected files ... .. //depot/projects/soc2009/anchie_send/src/sys/netinet/icmp6.h#10 edit Differences ... ==== //depot/projects/soc2009/anchie_send/src/sys/netinet/icmp6.h#10 (text+ko) ==== @@ -1,10 +1,4 @@ ->>>> ORIGINAL //depot/vendor/freebsd/src/sys/netinet/icmp6.h#20 /* $FreeBSD: src/sys/netinet/icmp6.h,v 1.24 2009/04/29 10:20:17 bms Exp $ */ -==== THEIRS //depot/vendor/freebsd/src/sys/netinet/icmp6.h#23 -/* $FreeBSD: src/sys/netinet/icmp6.h,v 1.27 2009/08/02 19:43:32 rwatson Exp $ */ -==== YOURS //anchie_desnimis/gsoc2009-send/src/sys/netinet/icmp6.h -/* $FreeBSD: src/sys/netinet/icmp6.h,v 1.21.8.1 2009/04/15 03:14:26 kensmith Exp $ */ -<<<< /* $KAME: icmp6.h,v 1.46 2001/04/27 15:09:48 itojun Exp $ */ /*- @@ -609,10 +603,6 @@ }; #ifdef _KERNEL ->>>> ORIGINAL //depot/vendor/freebsd/src/sys/netinet/icmp6.h#20 -#define ICMP6STAT_ADD(name, val) V_icmp6stat.name += (val) -#define ICMP6STAT_INC(name) ICMP6STAT_ADD(name, 1) -==== THEIRS //depot/vendor/freebsd/src/sys/netinet/icmp6.h#23 /* * In-kernel consumers can use these accessor macros directly to update * stats. @@ -626,10 +616,6 @@ void kmod_icmp6stat_inc(int statnum); #define KMOD_ICMP6STAT_INC(name) \ kmod_icmp6stat_inc(offsetof(struct icmp6stat, name) / sizeof(u_quad_t)) -==== YOURS //anchie_desnimis/gsoc2009-send/src/sys/netinet/icmp6.h -#define ICMP6STAT_ADD(name, val) V_icmp6stat.name += (val) -#define ICMP6STAT_INC(name) ICMP6STAT_ADD(name, 1) -<<<< #endif From owner-p4-projects@FreeBSD.ORG Tue Aug 11 21:32:05 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 673971065673; Tue, 11 Aug 2009 21:32:05 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 266FE1065670 for ; Tue, 11 Aug 2009 21:32:05 +0000 (UTC) (envelope-from marinosi@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 137518FC42 for ; Tue, 11 Aug 2009 21:32:05 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BLW5Jt088876 for ; Tue, 11 Aug 2009 21:32:05 GMT (envelope-from marinosi@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BLW4bT088874 for perforce@freebsd.org; Tue, 11 Aug 2009 21:32:04 GMT (envelope-from marinosi@FreeBSD.org) Date: Tue, 11 Aug 2009 21:32:04 GMT Message-Id: <200908112132.n7BLW4bT088874@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marinosi@FreeBSD.org using -f From: Ilias Marinos To: Perforce Change Reviews Cc: Subject: PERFORCE change 167224 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 21:32:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=167224 Change 167224 by marinosi@marinosi_redrum on 2009/08/11 21:31:16 - Added a new syscall, auditon_slice() which manipulates auditing for several slices. Works exactly as auditon(2) until now, except that it accepts the slice that it should operate as arg. - auditon() will be a wrapper that selects the audit_base_slice. At the moment it does nothing. The actual code will be submitted. (NOTE: This breaks audit as auditon() does nothing with this commit. Affected files ... .. //depot/projects/soc2009/marinosi_appaudit/src/lib/libc/sys/Symbol.map#3 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_proto.h#3 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_syscall.h#3 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_syscalls.c#3 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_sysent.c#3 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/syscalls.conf#2 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/syscalls.master#3 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/init_sysent.c#3 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/syscalls.c#3 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/syscalls.master#3 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/systrace_args.c#3 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#17 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_syscalls.c#10 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/sys/syscall.h#3 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/sys/syscall.mk#3 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/sys/sysproto.h#3 edit Differences ... ==== //depot/projects/soc2009/marinosi_appaudit/src/lib/libc/sys/Symbol.map#3 (text) ==== @@ -357,6 +357,7 @@ shmctl; symlinkat; unlinkat; + auditon_slice; }; FBSDprivate_1.0 { ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_proto.h#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call prototypes. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.106 2009/07/08 16:30:34 trasz Exp $ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 195468 2009-07-08 16:26:43Z trasz + * $FreeBSD$ + * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.123 2009/07/08 16:26:43 trasz Exp */ #ifndef _FREEBSD32_SYSPROTO_H_ ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_syscall.h#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.105 2009/07/08 16:30:34 trasz Exp $ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 195468 2009-07-08 16:26:43Z trasz + * $FreeBSD$ + * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.123 2009/07/08 16:26:43 trasz Exp */ #define FREEBSD32_SYS_syscall 0 @@ -382,4 +382,5 @@ #define FREEBSD32_SYS_freebsd32_msgctl 511 #define FREEBSD32_SYS_freebsd32_shmctl 512 #define FREEBSD32_SYS_lpathconf 513 -#define FREEBSD32_SYS_MAXSYSCALL 514 +#define FREEBSD32_SYS_auditon 514 +#define FREEBSD32_SYS_MAXSYSCALL 515 ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_syscalls.c#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call names. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.96 2009/07/08 16:30:34 trasz Exp $ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 195468 2009-07-08 16:26:43Z trasz + * $FreeBSD$ + * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.123 2009/07/08 16:26:43 trasz Exp */ const char *freebsd32_syscallnames[] = { @@ -521,4 +521,5 @@ "freebsd32_msgctl", /* 511 = freebsd32_msgctl */ "freebsd32_shmctl", /* 512 = freebsd32_shmctl */ "lpathconf", /* 513 = lpathconf */ + "auditon", /* 514 = auditon */ }; ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_sysent.c#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.107 2009/07/08 16:30:34 trasz Exp $ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 195468 2009-07-08 16:26:43Z trasz + * $FreeBSD$ + * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.123 2009/07/08 16:26:43 trasz Exp */ #include "opt_compat.h" @@ -558,4 +558,5 @@ { AS(freebsd32_msgctl_args), (sy_call_t *)freebsd32_msgctl, AUE_MSGCTL, NULL, 0, 0, 0 }, /* 511 = freebsd32_msgctl */ { AS(freebsd32_shmctl_args), (sy_call_t *)freebsd32_shmctl, AUE_SHMCTL, NULL, 0, 0, 0 }, /* 512 = freebsd32_shmctl */ { AS(lpathconf_args), (sy_call_t *)lpathconf, AUE_LPATHCONF, NULL, 0, 0, 0 }, /* 513 = lpathconf */ + { AS(auditon_args), (sy_call_t *)auditon, AUE_AUDITON, NULL, 0, 0, 0 }, /* 514 = auditon */ }; ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/syscalls.conf#2 (text+ko) ==== ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/syscalls.master#3 (text+ko) ==== @@ -901,3 +901,5 @@ 512 AUE_SHMCTL STD { int freebsd32_shmctl(int shmid, int cmd, \ struct shmid_ds32 *buf); } 513 AUE_LPATHCONF NOPROTO { int lpathconf(char *path, int name); } +514 AUE_AUDITON NOPROTO { int auditon(int cmd, char *name, \ + void *data, u_int length); } ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/init_sysent.c#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/kern/init_sysent.c,v 1.253 2009/07/08 15:25:27 trasz Exp $ - * created from FreeBSD: head/sys/kern/syscalls.master 195458 2009-07-08 15:23:18Z trasz + * $FreeBSD$ + * created from FreeBSD: src/sys/kern/syscalls.master,v 1.259 2009/07/08 15:23:18 trasz Exp */ #include "opt_compat.h" @@ -548,4 +548,5 @@ { AS(msgctl_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0, 0 }, /* 511 = msgctl */ { AS(shmctl_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0, 0 }, /* 512 = shmctl */ { AS(lpathconf_args), (sy_call_t *)lpathconf, AUE_LPATHCONF, NULL, 0, 0, 0 }, /* 513 = lpathconf */ + { AS(auditon_slice_args), (sy_call_t *)auditon_slice, AUE_AUDITON, NULL, 0, 0, 0 }, /* 514 = auditon_slice */ }; ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/syscalls.c#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call names. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/kern/syscalls.c,v 1.236 2009/07/08 15:25:27 trasz Exp $ - * created from FreeBSD: head/sys/kern/syscalls.master 195458 2009-07-08 15:23:18Z trasz + * $FreeBSD$ + * created from FreeBSD: src/sys/kern/syscalls.master,v 1.259 2009/07/08 15:23:18 trasz Exp */ const char *syscallnames[] = { @@ -521,4 +521,5 @@ "msgctl", /* 511 = msgctl */ "shmctl", /* 512 = shmctl */ "lpathconf", /* 513 = lpathconf */ + "auditon_slice", /* 514 = auditon_slice */ }; ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/syscalls.master#3 (text+ko) ==== @@ -911,5 +911,7 @@ 512 AUE_SHMCTL NOSTD { int shmctl(int shmid, int cmd, \ struct shmid_ds *buf); } 513 AUE_LPATHCONF STD { int lpathconf(char *path, int name); } +514 AUE_AUDITON STD { int auditon_slice(int cmd, char *name, \ + void *data, u_int length); } ; Please copy any additions and changes to the following compatability tables: ; sys/compat/freebsd32/syscalls.master ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/systrace_args.c#3 (text+ko) ==== @@ -2,7 +2,7 @@ * System call argument to DTrace register array converstion. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/kern/systrace_args.c,v 1.33 2009/07/08 15:25:27 trasz Exp $ + * $FreeBSD$ * This file is part of the DTrace syscall provider. */ @@ -3072,6 +3072,16 @@ *n_args = 2; break; } + /* auditon_slice */ + case 514: { + struct auditon_slice_args *p = params; + iarg[0] = p->cmd; /* int */ + uarg[1] = (intptr_t) p->name; /* char * */ + uarg[2] = (intptr_t) p->data; /* void * */ + uarg[3] = p->length; /* u_int */ + *n_args = 4; + break; + } default: *n_args = 0; break; @@ -8154,6 +8164,25 @@ break; }; break; + /* auditon_slice */ + case 514: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "char *"; + break; + case 2: + p = "void *"; + break; + case 3: + p = "u_int"; + break; + default: + break; + }; + break; default: break; }; ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#17 (text) ==== ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_syscalls.c#10 (text) ==== @@ -153,20 +153,36 @@ } /* + * Wrapper system call to auditon_slice that selects audit_base_slice to + * operate on. + */ +/* ARGSUSED */ +int +auditon(struct thread *td, struct auditon_args *uap) +{ + + /* Dummy syscall -- to be changed */ + return (ENOSYS); +} + +/* * System call to manipulate auditing. */ /* ARGSUSED */ int -auditon(struct thread *td, struct auditon_args *uap) +auditon_slice(struct thread *td, struct auditon_slice_args *uap) { struct ucred *cred, *newcred, *oldcred; + struct audit_slice *as = NULL; int error; union auditon_udata udata; struct proc *tp; + char as_name[AUDIT_SLICE_NAME_LEN]; if (jailed(td->td_ucred)) return (ENOSYS); AUDIT_ARG_CMD(uap->cmd); + AUDIT_ARG_TEXT(uap->name); #ifdef MAC error = mac_system_check_auditon(td->td_ucred, uap->cmd); @@ -181,6 +197,20 @@ if ((uap->length <= 0) || (uap->length > sizeof(union auditon_udata))) return (EINVAL); + /* + * Copyin the name of the slice we need to operate on. + */ + error = copyinstr(uap->name, as_name, AUDIT_SLICE_NAME_LEN, NULL); + if (error) + return (EINVAL); + + /* + * Find the slice we should operate on. + */ + error = audit_slice_lookup(as_name, as); + if (error) + return (error); + memset((void *)&udata, 0, sizeof(udata)); /* @@ -219,25 +249,25 @@ case A_OLDGETPOLICY: case A_GETPOLICY: if (uap->length == sizeof(udata.au_policy64)) { - if (!audit_base_slice->audit_fail_stop) + if (!as->audit_fail_stop) udata.au_policy64 |= AUDIT_CNT; - if (audit_base_slice->audit_panic_on_write_fail) + if (as->audit_panic_on_write_fail) udata.au_policy64 |= AUDIT_AHLT; - if (audit_base_slice->audit_argv) + if (as->audit_argv) udata.au_policy64 |= AUDIT_ARGV; - if (audit_base_slice->audit_arge) + if (as->audit_arge) udata.au_policy64 |= AUDIT_ARGE; break; } if (uap->length != sizeof(udata.au_policy)) return (EINVAL); - if (!audit_base_slice->audit_fail_stop) + if (!as->audit_fail_stop) udata.au_policy |= AUDIT_CNT; - if (audit_base_slice->audit_panic_on_write_fail) + if (as->audit_panic_on_write_fail) udata.au_policy |= AUDIT_AHLT; - if (audit_base_slice->audit_argv) + if (as->audit_argv) udata.au_policy |= AUDIT_ARGV; - if (audit_base_slice->audit_arge) + if (as->audit_arge) udata.au_policy |= AUDIT_ARGE; break; @@ -247,13 +277,13 @@ if (udata.au_policy & (~AUDIT_CNT|AUDIT_AHLT| AUDIT_ARGV|AUDIT_ARGE)) return (EINVAL); - audit_base_slice->audit_fail_stop = ((udata.au_policy64 + as->audit_fail_stop = ((udata.au_policy64 & AUDIT_CNT) == 0); - audit_base_slice->audit_panic_on_write_fail = + as->audit_panic_on_write_fail = (udata.au_policy64 & AUDIT_AHLT); - audit_base_slice->audit_argv = (udata.au_policy64 + as->audit_argv = (udata.au_policy64 & AUDIT_ARGV); - audit_base_slice->audit_arge = (udata.au_policy64 + as->audit_arge = (udata.au_policy64 & AUDIT_ARGE); break; } @@ -265,44 +295,44 @@ /* * XXX - Need to wake up waiters if the policy relaxes? */ - audit_base_slice->audit_fail_stop = + as->audit_fail_stop = ((udata.au_policy & AUDIT_CNT) == 0); - audit_base_slice->audit_panic_on_write_fail = + as->audit_panic_on_write_fail = (udata.au_policy & AUDIT_AHLT); - audit_base_slice->audit_argv = + as->audit_argv = (udata.au_policy & AUDIT_ARGV); - audit_base_slice->audit_arge = + as->audit_arge = (udata.au_policy & AUDIT_ARGE); break; case A_GETKMASK: if (uap->length != sizeof(udata.au_mask)) return (EINVAL); - udata.au_mask = audit_base_slice->audit_nae_mask; + udata.au_mask = as->audit_nae_mask; break; case A_SETKMASK: if (uap->length != sizeof(udata.au_mask)) return (EINVAL); - audit_base_slice->audit_nae_mask = udata.au_mask; + as->audit_nae_mask = udata.au_mask; break; case A_OLDGETQCTRL: case A_GETQCTRL: if (uap->length == sizeof(udata.au_qctrl64)) { udata.au_qctrl64.aq64_hiwater = - (u_int64_t)audit_base_slice->audit_qctrl.aq_hiwater; + (u_int64_t)as->audit_qctrl.aq_hiwater; udata.au_qctrl64.aq64_lowater = - (u_int64_t)audit_base_slice->audit_qctrl.aq_lowater; + (u_int64_t)as->audit_qctrl.aq_lowater; udata.au_qctrl64.aq64_bufsz = - (u_int64_t)audit_base_slice->audit_qctrl.aq_bufsz; + (u_int64_t)as->audit_qctrl.aq_bufsz; udata.au_qctrl64.aq64_minfree = - (u_int64_t)audit_base_slice->audit_qctrl.aq_minfree; + (u_int64_t)as->audit_qctrl.aq_minfree; break; } if (uap->length != sizeof(udata.au_qctrl)) return (EINVAL); - udata.au_qctrl = audit_base_slice->audit_qctrl; + udata.au_qctrl = as->audit_qctrl; break; case A_OLDSETQCTRL: @@ -315,16 +345,16 @@ (udata.au_qctrl64.aq64_minfree < 0) || (udata.au_qctrl64.aq64_minfree > 100)) return (EINVAL); - audit_base_slice->audit_qctrl.aq_hiwater = + as->audit_qctrl.aq_hiwater = (int)udata.au_qctrl64.aq64_hiwater; - audit_base_slice->audit_qctrl.aq_lowater = + as->audit_qctrl.aq_lowater = (int)udata.au_qctrl64.aq64_lowater; - audit_base_slice->audit_qctrl.aq_bufsz = + as->audit_qctrl.aq_bufsz = (int)udata.au_qctrl64.aq64_bufsz; - audit_base_slice->audit_qctrl.aq_minfree = + as->audit_qctrl.aq_minfree = (int)udata.au_qctrl64.aq64_minfree; /* Not used. */ - audit_base_slice->audit_qctrl.aq_delay = -1; + as->audit_qctrl.aq_delay = -1; break; } if (uap->length != sizeof(udata.au_qctrl)) @@ -336,9 +366,9 @@ (udata.au_qctrl.aq_minfree > 100)) return (EINVAL); - audit_base_slice->audit_qctrl = udata.au_qctrl; + as->audit_qctrl = udata.au_qctrl; /* XXX The queue delay value isn't used with the kernel. */ - audit_base_slice->audit_qctrl.aq_delay = -1; + as->audit_qctrl.aq_delay = -1; break; case A_GETCWD: @@ -368,8 +398,8 @@ case A_OLDGETCOND: case A_GETCOND: if (uap->length == sizeof(udata.au_cond64)) { - if (audit_base_slice->audit_enabled - && !audit_base_slice->audit_suspended) + if (as->audit_enabled + && !as->audit_suspended) udata.au_cond64 = AUC_AUDITING; else udata.au_cond64 = AUC_NOAUDIT; @@ -377,8 +407,8 @@ } if (uap->length != sizeof(udata.au_cond)) return (EINVAL); - if (audit_base_slice->audit_enabled - && !audit_base_slice->audit_suspended) + if (as->audit_enabled + && !as->audit_suspended) udata.au_cond = AUC_AUDITING; else udata.au_cond = AUC_NOAUDIT; @@ -388,27 +418,27 @@ case A_SETCOND: if (uap->length == sizeof(udata.au_cond64)) { if (udata.au_cond64 == AUC_NOAUDIT) - audit_base_slice->audit_suspended = 1; + as->audit_suspended = 1; if (udata.au_cond64 == AUC_AUDITING) - audit_base_slice->audit_suspended = 0; + as->audit_suspended = 0; if (udata.au_cond64 == AUC_DISABLED) { - audit_base_slice->audit_suspended = 1; + as->audit_suspended = 1; audit_shutdown(NULL, 0); } - audit_suspended = audit_base_slice->audit_suspended; + audit_suspended = as->audit_suspended; break; } if (uap->length != sizeof(udata.au_cond)) return (EINVAL); if (udata.au_cond == AUC_NOAUDIT) - audit_base_slice->audit_suspended = 1; + as->audit_suspended = 1; if (udata.au_cond == AUC_AUDITING) - audit_base_slice->audit_suspended = 0; + as->audit_suspended = 0; if (udata.au_cond == AUC_DISABLED) { - audit_base_slice->audit_suspended = 1; + as->audit_suspended = 1; audit_shutdown(NULL, 0); } - audit_suspended = audit_base_slice->audit_suspended; + audit_suspended = as->audit_suspended; break; case A_GETCLASS: @@ -486,7 +516,7 @@ if ((udata.au_fstat.af_filesz != 0) && (udata.au_fstat.af_filesz < MIN_AUDIT_FILE_SIZE)) return (EINVAL); - audit_base_slice->audit_fstat.af_filesz + as->audit_fstat.af_filesz = udata.au_fstat.af_filesz; break; @@ -494,9 +524,9 @@ if (uap->length != sizeof(udata.au_fstat)) return (EINVAL); udata.au_fstat.af_filesz - = audit_base_slice->audit_fstat.af_filesz; + = as->audit_fstat.af_filesz; udata.au_fstat.af_currsz - = audit_base_slice->audit_fstat.af_currsz; + = as->audit_fstat.af_currsz; break; case A_GETPINFO_ADDR: @@ -880,6 +910,13 @@ } int +auditon_slice(struct thread *td, struct auditon_slice_args *uap) +{ + + return (ENOSYS); +} + +int getauid(struct thread *td, struct getauid_args *uap) { ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/sys/syscall.h#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/sys/syscall.h,v 1.233 2009/07/08 15:25:27 trasz Exp $ - * created from FreeBSD: head/sys/kern/syscalls.master 195458 2009-07-08 15:23:18Z trasz + * $FreeBSD$ + * created from FreeBSD: src/sys/kern/syscalls.master,v 1.259 2009/07/08 15:23:18 trasz Exp */ #define SYS_syscall 0 @@ -428,4 +428,5 @@ #define SYS_msgctl 511 #define SYS_shmctl 512 #define SYS_lpathconf 513 -#define SYS_MAXSYSCALL 514 +#define SYS_auditon_slice 514 +#define SYS_MAXSYSCALL 515 ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/sys/syscall.mk#3 (text+ko) ==== @@ -1,7 +1,7 @@ # FreeBSD system call names. # DO NOT EDIT-- this file is automatically generated. -# $FreeBSD: src/sys/sys/syscall.mk,v 1.188 2009/07/08 15:25:27 trasz Exp $ -# created from FreeBSD: head/sys/kern/syscalls.master 195458 2009-07-08 15:23:18Z trasz +# $FreeBSD$ +# created from FreeBSD: src/sys/kern/syscalls.master,v 1.259 2009/07/08 15:23:18 trasz Exp MIASM = \ syscall.o \ exit.o \ @@ -376,4 +376,5 @@ __semctl.o \ msgctl.o \ shmctl.o \ - lpathconf.o + lpathconf.o \ + auditon_slice.o ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/sys/sysproto.h#3 (text+ko) ==== @@ -2,8 +2,8 @@ * System call prototypes. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/sys/sysproto.h,v 1.237 2009/07/08 15:25:27 trasz Exp $ - * created from FreeBSD: head/sys/kern/syscalls.master 195458 2009-07-08 15:23:18Z trasz + * $FreeBSD$ + * created from FreeBSD: src/sys/kern/syscalls.master,v 1.259 2009/07/08 15:23:18 trasz Exp */ #ifndef _SYS_SYSPROTO_H_ @@ -1641,6 +1641,12 @@ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; char name_l_[PADL_(int)]; int name; char name_r_[PADR_(int)]; }; +struct auditon_slice_args { + char cmd_l_[PADL_(int)]; int cmd; char cmd_r_[PADR_(int)]; + char name_l_[PADL_(char *)]; char * name; char name_r_[PADR_(char *)]; + char data_l_[PADL_(void *)]; void * data; char data_r_[PADR_(void *)]; + char length_l_[PADL_(u_int)]; u_int length; char length_r_[PADR_(u_int)]; +}; int nosys(struct thread *, struct nosys_args *); void sys_exit(struct thread *, struct sys_exit_args *); int fork(struct thread *, struct fork_args *); @@ -1999,6 +2005,7 @@ int msgctl(struct thread *, struct msgctl_args *); int shmctl(struct thread *, struct shmctl_args *); int lpathconf(struct thread *, struct lpathconf_args *); +int auditon_slice(struct thread *, struct auditon_slice_args *); #ifdef COMPAT_43 @@ -2671,6 +2678,7 @@ #define SYS_AUE_msgctl AUE_MSGCTL #define SYS_AUE_shmctl AUE_SHMCTL #define SYS_AUE_lpathconf AUE_LPATHCONF +#define SYS_AUE_auditon_slice AUE_AUDITON #undef PAD_ #undef PADL_ From owner-p4-projects@FreeBSD.ORG Tue Aug 11 23:00:43 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2AC661065673; Tue, 11 Aug 2009 23:00:43 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DF69F106566B for ; Tue, 11 Aug 2009 23:00:42 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id CEEAC8FC1F for ; Tue, 11 Aug 2009 23:00:42 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BN0gEt077278 for ; Tue, 11 Aug 2009 23:00:42 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BN0gn1077276 for perforce@freebsd.org; Tue, 11 Aug 2009 23:00:42 GMT (envelope-from zec@fer.hr) Date: Tue, 11 Aug 2009 23:00:42 GMT Message-Id: <200908112300.n7BN0gn1077276@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167227 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 23:00:44 -0000 http://perforce.freebsd.org/chv.cgi?CH=167227 Change 167227 by zec@zec_tpx32 on 2009/08/11 22:59:45 Appease VNET_DEBUG - in if_vmove we temporarily switch i.e. recurse from one vnet to another which is OK, so no need to flood the console with warnings here. Affected files ... .. //depot/projects/vimage-commit2/src/sys/net/if.c#82 edit Differences ... ==== //depot/projects/vimage-commit2/src/sys/net/if.c#82 (text+ko) ==== @@ -920,7 +920,7 @@ /* Make sure the named iface does not exists in the dst. prison/vnet. */ /* XXX Lock interfaces to avoid races. */ - CURVNET_SET(pr->pr_vnet); + CURVNET_SET_QUIET(pr->pr_vnet); difp = ifunit(ifname); CURVNET_RESTORE(); if (difp != NULL) { From owner-p4-projects@FreeBSD.ORG Tue Aug 11 23:21:05 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6C1A41065672; Tue, 11 Aug 2009 23:21:05 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 29DB9106566C for ; Tue, 11 Aug 2009 23:21:05 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 17AD08FC3D for ; Tue, 11 Aug 2009 23:21:05 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BNL5fJ079780 for ; Tue, 11 Aug 2009 23:21:05 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BNL5to079778 for perforce@freebsd.org; Tue, 11 Aug 2009 23:21:05 GMT (envelope-from pgj@FreeBSD.org) Date: Tue, 11 Aug 2009 23:21:05 GMT Message-Id: <200908112321.n7BNL5to079778@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 167228 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 23:21:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=167228 Change 167228 by pgj@petymeg-current on 2009/08/11 23:20:37 Improve netstat_route() by providing access to further routing details (suitable for netstat -A): - Add routenode_type -- a routing node. - Add routemask_type -- a routing mask. - Embed routenode_type into route_type. - Add a general case for address resolution. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#62 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#58 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_route.c#4 edit .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#67 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat.h#62 (text+ko) ==== @@ -118,6 +118,13 @@ #define NETSTAT_RT_CLONING 0x20000 #define NETSTAT_RT_EXPIRES 0x40000 /* has expire time */ +/* Testing flags for routenode_type: */ +#define NETSTAT_RTN_ROOT 0x01 +#define NETSTAT_RTN_DUPEDKEY 0x02 + +/* Testing flags for routemask_type: */ +#define NETSTAT_RTM_NORMAL 0x01 + /* Enum for TCP states: */ enum tcp_state { tcps_Closed, @@ -1234,7 +1241,27 @@ const char *netstat_rt_get_interface(const struct route_type *); u_int64_t netstat_rt_get_expire(const struct route_type *); u_int32_t netstat_rt_get_mtu(const struct route_type *); -u_int64_t netstat_rt_get_address(const struct route_type *); +const struct routenode_type *netstat_rt_get_node(const struct route_type *); + +/* Routing nodes: */ +int netstat_rnt_get_bit(const struct routenode_type *); +int netstat_rnt_get_flags(const struct routenode_type *); +u_int64_t netstat_rnt_get_address(const struct routenode_type *); +u_int64_t netstat_rnt_get_left(const struct routenode_type *); +u_int64_t netstat_rnt_get_right(const struct routenode_type *); +const struct routeaddr_type * + netstat_rnt_get_netmask(const struct routenode_type *); +int netstat_rnt_get_mkcnt(const struct routenode_type *); +const struct routemask_type * + netstat_rnt_get_mask(const struct routenode_type *, int); + +/* Routing masks: */ +int netstat_rmt_get_flags(const struct routemask_type *); +int netstat_rmt_get_bit(const struct routemask_type *); +u_int64_t netstat_rmt_get_address(const struct routemask_type *); +u_int64_t netstat_rmt_get_refs(const struct routemask_type *); +const struct routeaddr_type * + netstat_rmt_get_netmask(const struct routemask_type *); /* Routing addresses: */ const char *netstat_rat_get_name(const struct routeaddr_type *, int); ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_internal.h#58 (text+ko) ==== @@ -450,6 +450,27 @@ size_t rat_data_len; }; +struct routemask_type { + int rmt_flags; + int rmt_bit; + u_int64_t rmt_address; + u_int64_t rmt_refs; + struct routeaddr_type *rmt_mask; +}; + +struct routenode_type { + int rnt_flags; + int rnt_bit; + u_int64_t rnt_address; + u_int64_t rnt_left; + u_int64_t rnt_right; + u_int64_t rnt_key; + u_int64_t rnt_dupedkey; + struct routeaddr_type *rnt_mask; + int rnt_mkcnt; + struct routemask_type *rnt_mklist; +}; + struct route_type { int rt_fib; /* FIB instance */ int rt_family; /* protocol family */ @@ -461,7 +482,7 @@ char *rt_interface; /* routing interface name */ u_int64_t rt_expire; /* sec */ u_int32_t rt_mtu; /* bytes */ - u_int64_t rt_address; /* opaque pointer */ + struct routenode_type rt_node; TAILQ_ENTRY(route_type) rt_list; }; ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_route.c#4 (text+ko) ==== @@ -58,10 +58,11 @@ static int read_kvm(kvm_t *, const char *, void *, size_t); static int route_tree_kvm(struct route_type_list *, int, int, kvm_t *, int); static int route_tree_sysctl(struct route_type_list *, int, int, int); -static void process_tree(kvm_t *, struct route_type_list *, struct radix_node *); +static void process_tree(kvm_t *, struct route_type_list *, + struct radix_node *, int, int); static void extract_rtentry_data(struct rtentry *, struct route_type *); -static struct routeaddr_type *extract_address(struct sockaddr*, - struct sockaddr*, int); +static struct routeaddr_type *extract_address(void *, void *, int); +static void extract_node(struct radix_node *, struct routenode_type *, int); int netstat_route(const struct session_type *session, int fib, int domain, @@ -128,7 +129,6 @@ goto out; } - if (read_kvm(kvm, rt_symbol[nlRT_rt_tables], rt_tables, treesize) < 0) { list->rtl_error = NETSTAT_ERROR_KVM; goto out; @@ -143,14 +143,15 @@ continue; KREAD(rnh, head); - process_tree(kvm, list, head.rnh_treetop); + process_tree(kvm, list, head.rnh_treetop, i, flags); } else { tmpfib = (domain != PF_INET) ? 0 : fibnum; rnh = rt_tables[tmpfib].tables[domain]; if (rnh != NULL) { KREAD(rnh, head); - process_tree(kvm, list, head.rnh_treetop); + process_tree(kvm, list, head.rnh_treetop, domain, + flags); } } @@ -168,20 +169,24 @@ } while (0); void -process_tree(kvm_t *kvm, struct route_type_list *list, struct radix_node *rn) +process_tree(kvm_t *kvm, struct route_type_list *list, struct radix_node *rn, + int domain, int flags) { struct rtentry rtentry; - struct radix_node *rnode; + struct radix_node *rnode, *rnp; struct ifnet iface; struct route_type *rtp; - struct sockaddr sa, mk, sagw; + struct radix_mask rm, *rmp, *next, **oldptr; + struct radix_node rmn; + sa_u sa, mk, sagw; + int cnt; again: if (rn == NULL) return; KREAD(rn, rtentry); - rnode = &rtentry.rt_nodes[0]; + rnode = rtentry.rt_nodes; if (!(rnode->rn_flags & RNF_ACTIVE)) return; @@ -191,34 +196,87 @@ rtentry.rt_ifp = &iface; } + cnt = 0; + if ((flags & NETSTAT_ROUTE_ALL) && (rnode->rn_mklist != NULL)) { + rmp = rnode->rn_mklist; + oldptr = &rnode->rn_mklist; + while (rmp != NULL) { + KREAD(rmp, rm); + rmp = malloc(sizeof(rm)); + bcopy(&rm, rmp, sizeof(rm)); + KREAD(rmp->rm_leaf, rmn); + rmp->rm_leaf = malloc(sizeof(rmn)); + bcopy(&rmn, rmp->rm_leaf, sizeof(rmn)); + rnp = rmp->rm_leaf; + if (rmn.rn_mask != NULL) { + KREAD(rmn.rn_mask, rm); + rnp->rn_mask = malloc(sizeof(rm)); + bcopy(&rm, rnp->rn_mask, sizeof(rm)); + } + *oldptr = rmp; + oldptr = &rmp->rm_mklist; + rmp = rmp->rm_mklist; + cnt += 1; + } + } if (rnode->rn_bit < 0) { if (rnode->rn_flags & RNF_ROOT) { - /* root node */ + if (flags & NETSTAT_ROUTE_ALL) { + rtp = _netstat_rt_allocate(list); + rtp->rt_family = domain; + rtp->rt_node.rnt_address = (int)rn; + rtp->rt_node.rnt_flags |= NETSTAT_RTN_ROOT; + extract_node(rnode, &rtp->rt_node, cnt); + } } else { if (rnode->rn_key != NULL) { KREAD(rnode->rn_key, sa); - rtentry.rt_nodes->rn_key = (caddr_t)&sa; + rtentry.rt_nodes->rn_key = (caddr_t)&sa.u_sa; } if (rnode->rn_mask != NULL) { KREAD(rnode->rn_mask, mk); - rtentry.rt_nodes->rn_mask = (caddr_t)&mk; + rtentry.rt_nodes->rn_mask = (caddr_t)&mk.u_sa; } if (rtentry.rt_gateway != NULL) { KREAD(rtentry.rt_gateway, sagw); - rtentry.rt_gateway = &sagw; + rtentry.rt_gateway = &sagw.u_sa; } rtp = _netstat_rt_allocate(list); + rtp->rt_node.rnt_address = (int)rn; + rtp->rt_node.rnt_mask = + extract_address(rnode->rn_mask, NULL, 0); extract_rtentry_data(&rtentry, rtp); + extract_node(rnode, &rtp->rt_node, cnt); } if ((rn = rnode->rn_dupedkey)) goto again; } else { - process_tree(kvm, list, rnode->rn_left); - process_tree(kvm, list, rnode->rn_right); + if (flags & NETSTAT_ROUTE_ALL) { + rtp = _netstat_rt_allocate(list); + rtp->rt_family = domain; + rtp->rt_node.rnt_address = (int)rn; + extract_node(rnode, &rtp->rt_node, cnt); + } + rn = rnode->rn_right; + process_tree(kvm, list, rnode->rn_left, domain, flags); + process_tree(kvm, list, rn, domain, flags); + } + + if (flags & NETSTAT_ROUTE_ALL) { + rmp = rnode->rn_mklist; + while (rmp != NULL) { + next = rmp->rm_mklist; + rnp = rmp->rm_leaf; + if (rnp != NULL && rnp->rn_mask != NULL) + free(rnp->rn_mask); + free(rmp->rm_leaf); + free(rmp); + rmp = next; + } } } #undef KREAD @@ -263,7 +321,7 @@ { time_t expire_time; struct timespec uptime; - struct sockaddr *sa, *mask; + struct sockaddr *sa, *mk; CNV_FLAG(RTF_UP, NETSTAT_RT_UP); CNV_FLAG(RTF_GATEWAY, NETSTAT_RT_GATEWAY); @@ -282,9 +340,9 @@ CNV_FLAG(RTF_BROADCAST, NETSTAT_RT_BROADCAST); rtp->rt_fib = rte->rt_fibnum; sa = (struct sockaddr *)rte->rt_nodes->rn_key; - mask = (struct sockaddr *)rte->rt_nodes->rn_mask; + mk = (struct sockaddr *)rte->rt_nodes->rn_mask; rtp->rt_family = sa->sa_family; - rtp->rt_destination = extract_address(sa, mask, rte->rt_flags); + rtp->rt_destination = extract_address(sa, mk, rte->rt_flags); rtp->rt_gateway = extract_address(rte->rt_gateway, NULL, RTF_HOST); rtp->rt_refs = rte->rt_refcnt; rtp->rt_used = rte->rt_use; @@ -304,26 +362,35 @@ } rtp->rt_mtu = rte->rt_rmx.rmx_mtu; rtp->rt_fib = rte->rt_fibnum; - rtp->rt_address = (int)rte; } #undef CNV_FLAG struct routeaddr_type * -extract_address(struct sockaddr *sa, struct sockaddr *mask, int flags) +extract_address(void *saddr, void *maddr, int flags) { struct routeaddr_type *rap; + struct sockaddr *sa, *mask; struct sockaddr_in *sa_in, *mk_in; #ifdef INET6 struct sockaddr_in6 *sa_in6, *mk_in6; + struct in6_addr *in6; #endif struct sockaddr_dl *sa_dl; - char *cp, *p; + char *cp, *cq, *cqlim, *p; int n; + char workbuf[128]; + u_char *s, *slim; + + if (saddr == NULL) + return (NULL); + sa = (struct sockaddr *)saddr; + mask = (struct sockaddr *)maddr; sa_in = (struct sockaddr_in *)sa; mk_in = (struct sockaddr_in *)mask; #ifdef INET6 sa_in6 = (struct sockaddr_in6 *)sa; + in6 = &sa_in6->sin6_addr; mk_in6 = (struct sockaddr_in6 *)mask; #endif sa_dl = (struct sockaddr_dl *)sa; @@ -333,16 +400,6 @@ return (NULL); switch (sa->sa_family) { - case PF_UNSPEC: - rap->rat_address = strdup("none"); - strlcpy(rap->rat_ni_address, "none", - sizeof(rap->rat_ni_address)); - rap->rat_data = malloc(sizeof(struct sockaddr)); - if (rap->rat_data != NULL) { - rap->rat_data_len = sizeof(struct sockaddr); - memcpy(rap->rat_data, sa, rap->rat_data_len); - } - break; case PF_INET: if ((sa_in->sin_addr.s_addr == INADDR_ANY) && (mask != NULL) && @@ -409,8 +466,66 @@ } break; default: + s = (u_char *)sa->sa_data; + cq = workbuf; + slim = sa->sa_len + (u_char *)sa; + cqlim = cq + sizeof(workbuf) - 6; + cq += sprintf(cq, "(%d)", sa->sa_family); + while (s < slim && cq < cqlim) { + cq += sprintf(cq, " %02x", *s++); + if (s < slim) + cq += sprintf(cq, "%02x", *s++); + } + rap->rat_address = strdup(workbuf); + strlcpy(rap->rat_ni_address, workbuf, + sizeof(rap->rat_ni_address)); + rap->rat_data = malloc(sizeof(struct sockaddr)); + if (rap->rat_data != NULL) { + rap->rat_data_len = sizeof(struct sockaddr); + memcpy(rap->rat_data, sa, rap->rat_data_len); + } break; } return (rap); } + +void +extract_node(struct radix_node *rn, struct routenode_type *rnp, int mkcnt) +{ + struct radix_mask *rmp; + struct radix_node *rnode; + int i; + + rnp->rnt_bit = rn->rn_bit; + rnp->rnt_left = (int)rn->rn_left; + rnp->rnt_right = (int)rn->rn_right; + rnp->rnt_key = (int)rn->rn_key; + rnp->rnt_dupedkey = (int)rn->rn_dupedkey; + if (rn->rn_dupedkey != 0) + rnp->rnt_flags |= NETSTAT_RTN_DUPEDKEY; + rnp->rnt_mkcnt = mkcnt; + + if (rnp->rnt_mkcnt == 0) + return; + + rnp->rnt_mklist = malloc(sizeof(struct routemask_type) * rnp->rnt_mkcnt); + rmp = rn->rn_mklist; + i = 0; + + while (rmp != NULL) { + rnp->rnt_mklist[i].rmt_address = 0; + rnp->rnt_mklist[i].rmt_flags = 0; + if (rmp->rm_flags & RNF_NORMAL) + rnp->rnt_mklist[i].rmt_flags |= NETSTAT_RTM_NORMAL; + rnp->rnt_mklist[i].rmt_bit = rmp->rm_bit; + rnp->rnt_mklist[i].rmt_refs = rmp->rm_refs; + rnode = rmp->rm_leaf; + rnp->rnt_mklist[i].rmt_mask = + (rmp->rm_flags & RNF_NORMAL && rnode->rn_mask != NULL) ? + extract_address(rnode->rn_mask, NULL, 0) : + extract_address(rmp->rm_mask, NULL, 0); + rmp = rmp->rm_mklist; + i += 1; + } +} ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_util.c#67 (text+ko) ==== @@ -2249,8 +2249,13 @@ void _netstat_rt_free(struct route_type *rtp) { + int i; _netstat_rat_free(rtp->rt_destination); _netstat_rat_free(rtp->rt_gateway); + for (i = 0; i < rtp->rt_node.rnt_mkcnt; i++) + _netstat_rat_free(rtp->rt_node.rnt_mklist[i].rmt_mask); + if (rtp->rt_node.rnt_mklist != NULL) + free(rtp->rt_node.rnt_mklist); free(rtp->rt_interface); free(rtp); } @@ -2258,6 +2263,8 @@ void _netstat_rat_free(struct routeaddr_type *ratp) { + if (ratp == NULL) + return; free(ratp->rat_address); free(ratp->rat_data); free(ratp); @@ -2441,10 +2448,90 @@ return (rtp->rt_mtu); } +const struct routenode_type * +netstat_rt_get_node(const struct route_type *rtp) +{ + return (&rtp->rt_node); +} + +int +netstat_rnt_get_bit(const struct routenode_type *rntp) +{ + return (rntp->rnt_bit); +} + +int +netstat_rnt_get_flags(const struct routenode_type *rntp) +{ + return (rntp->rnt_flags); +} + +u_int64_t +netstat_rnt_get_address(const struct routenode_type *rntp) +{ + return (rntp->rnt_address); +} + u_int64_t -netstat_rt_get_address(const struct route_type *rtp) +netstat_rnt_get_left(const struct routenode_type *rntp) +{ + return (rntp->rnt_left); +} + +u_int64_t +netstat_rnt_get_right(const struct routenode_type *rntp) +{ + return (rntp->rnt_right); +} + +const struct routeaddr_type * +netstat_rnt_get_netmask(const struct routenode_type *rntp) +{ + return (rntp->rnt_mask); +} + +int +netstat_rnt_get_mkcnt(const struct routenode_type *rntp) +{ + return (rntp->rnt_mkcnt); +} + +const struct routemask_type * +netstat_rnt_get_mask(const struct routenode_type *rntp, int i) +{ + if (0 <= i && i < rntp->rnt_mkcnt) + return (&rntp->rnt_mklist[i]); + return (NULL); +} + +int +netstat_rmt_get_flags(const struct routemask_type *rmtp) +{ + return (rmtp->rmt_flags); +} + +int +netstat_rmt_get_bit(const struct routemask_type *rmtp) +{ + return (rmtp->rmt_bit); +} + +u_int64_t +netstat_rmt_get_address(const struct routemask_type *rmtp) +{ + return (rmtp->rmt_address); +} + +u_int64_t +netstat_rmt_get_refs(const struct routemask_type *rmtp) +{ + return (rmtp->rmt_refs); +} + +const struct routeaddr_type * +netstat_rmt_get_netmask(const struct routemask_type *rmtp) { - return (rtp->rt_address); + return (rmtp->rmt_mask); } const char * From owner-p4-projects@FreeBSD.ORG Tue Aug 11 23:36:22 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2145D1065674; Tue, 11 Aug 2009 23:36:22 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D50A2106564A for ; Tue, 11 Aug 2009 23:36:21 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C2DC58FC3A for ; Tue, 11 Aug 2009 23:36:21 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7BNaL5W080863 for ; Tue, 11 Aug 2009 23:36:21 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7BNaL5o080861 for perforce@freebsd.org; Tue, 11 Aug 2009 23:36:21 GMT (envelope-from pgj@FreeBSD.org) Date: Tue, 11 Aug 2009 23:36:21 GMT Message-Id: <200908112336.n7BNaL5o080861@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 167229 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Aug 2009 23:36:23 -0000 http://perforce.freebsd.org/chv.cgi?CH=167229 Change 167229 by pgj@petymeg-current on 2009/08/11 23:36:15 Modify netstat(1) to call libnetstat(3) instead of its original routines. Remove all moved code components as well. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/extern.h#36 edit .. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/main.c#46 edit .. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/route.c#4 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/extern.h#36 (text+ko) ==== @@ -132,7 +132,7 @@ char *atalk_print2(struct sockaddr *, struct sockaddr *, int); char *ipx_print(struct sockaddr *); char *ns_print(struct sockaddr *); -void routepr(u_long); +void routepr(const struct session_type *, int); void ipxprotopr(u_long, const char *, int, int); void spx_stats(const struct stat_type *); ==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/main.c#46 (text+ko) ==== @@ -77,23 +77,21 @@ static struct nlist nl[] = { -#define N_RTREE 0 - { .n_name = "_rt_tables"}, -#define N_MFCHASHTBL 1 +#define N_MFCHASHTBL 0 { .n_name = "_mfchashtbl" }, -#define N_VIFTABLE 2 +#define N_VIFTABLE 1 { .n_name = "_viftable" }, -#define N_IPX 3 +#define N_IPX 2 { .n_name = "_ipxpcb_list"}, -#define N_DDPCB 4 +#define N_DDPCB 3 { .n_name = "_ddpcb"}, -#define N_NGSOCKS 5 +#define N_NGSOCKS 4 { .n_name = "_ngsocklist"}, -#define N_MF6CTABLE 6 +#define N_MF6CTABLE 5 { .n_name = "_mf6ctable" }, -#define N_MIF6TABLE 7 +#define N_MIF6TABLE 6 { .n_name = "_mif6table" }, -#define N_MFCTABLESIZE 8 +#define N_MFCTABLESIZE 7 { .n_name = "_mfctablesize" }, { .n_name = NULL }, }; @@ -230,7 +228,7 @@ static struct protox *name2protox(const char *); static struct protox *knownname(const char *); -static kvm_t *kvmd; +/*static*/ kvm_t *kvmd; static char *nlistf = NULL, *memf = NULL; int Aflag; /* show addresses of protocol control block */ @@ -470,7 +468,9 @@ } else { kread(0, NULL, 0); - routepr(nl[N_RTREE].n_value); + session = netstat_session_new(kvmd); + routepr(session, af); + netstat_session_free(session); } exit(0); } ==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/route.c#4 (text+ko) ==== @@ -1,6 +1,8 @@ /*- * Copyright (c) 1983, 1988, 1993 - * The Regents of the University of California. All rights reserved. + * The Regents of the University of California. + * Copyright (c) 2009 Gabor Pali + * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -40,41 +42,17 @@ #include __FBSDID("$FreeBSD: src/usr.bin/netstat/route.c,v 1.93 2008/12/15 06:10:57 qingli Exp $"); -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - +#include +#include #include -#include -#include -#include -#include - -#include -#include +#include #include -#include +#include #include -#include -#include -#include -#include -#include +#include #include "extern.h" -#define kget(p, d) (kread((u_long)(p), (char *)&(d), sizeof (d))) - /* * Definitions for showing gateway flags. */ @@ -82,179 +60,137 @@ u_long b_mask; char b_val; } bits[] = { - { RTF_UP, 'U' }, - { RTF_GATEWAY, 'G' }, - { RTF_HOST, 'H' }, - { RTF_REJECT, 'R' }, - { RTF_DYNAMIC, 'D' }, - { RTF_MODIFIED, 'M' }, - { RTF_DONE, 'd' }, /* Completed -- for routing messages only */ - { RTF_XRESOLVE, 'X' }, - { RTF_STATIC, 'S' }, - { RTF_PROTO1, '1' }, - { RTF_PROTO2, '2' }, - { RTF_PRCLONING,'c' }, - { RTF_PROTO3, '3' }, - { RTF_BLACKHOLE,'B' }, - { RTF_BROADCAST,'b' }, + { NETSTAT_RT_UP, 'U' }, + { NETSTAT_RT_GATEWAY, 'G' }, + { NETSTAT_RT_HOST, 'H' }, + { NETSTAT_RT_REJECT, 'R' }, + { NETSTAT_RT_DYNAMIC, 'D' }, + { NETSTAT_RT_MODIFIED, 'M' }, + { NETSTAT_RT_DONE, 'd' }, + { NETSTAT_RT_XRESOLVE, 'X' }, + { NETSTAT_RT_STATIC, 'S' }, + { NETSTAT_RT_PROTO1, '1' }, + { NETSTAT_RT_PROTO2, '2' }, + { NETSTAT_RT_PRCLONING, 'c' }, + { NETSTAT_RT_PROTO3, '3' }, + { NETSTAT_RT_BLACKHOLE, 'B' }, + { NETSTAT_RT_BROADCAST, 'b' }, #ifdef RTF_LLINFO - { RTF_LLINFO, 'L' }, + { NETSTAT_RT_LLINFO, 'L' }, #endif #ifdef RTF_WASCLONED - { RTF_WASCLONED,'W' }, + { NETSTAT_RT_WASCLONED, 'W' }, #endif #ifdef RTF_CLONING - { RTF_CLONING, 'C' }, + { NETSTAT_RT_CLONING, 'C' }, #endif { 0 , 0 } -}; -typedef union { - long dummy; /* Helps align structure. */ - struct sockaddr u_sa; - u_short u_data[128]; -} sa_u; - -static sa_u pt_u; - -int fibnum; -int do_rtent = 0; -struct rtentry rtentry; -struct radix_node rnode; -struct radix_mask rmask; -struct rtline { - struct radix_node_head *tables[AF_MAX+1]; /*xxx*/ }; -struct rtline *rt_tables; +static void size_cols(int ef, struct route_type_iterator *); +static const char *fmt_flags(int f); +static void p_rtnode(const struct routenode_type *); -struct radix_node_head *rt_tables_line[1][AF_MAX+1]; /*xxx*/ - -int NewTree = 0; - -struct timespec uptime; +static int wid_dst; +static int wid_gw; +static int wid_flags; +static int wid_refs; +static int wid_use; +static int wid_mtu; +static int wid_if; +static int wid_expire; -static struct sockaddr *kgetsa(struct sockaddr *); -static void size_cols(int ef, struct radix_node *rn); -static void size_cols_tree(struct radix_node *rn); -static void size_cols_rtentry(struct rtentry *rt); -static void p_tree(struct radix_node *); -static void p_rtnode(void); -static void ntreestuff(void); -static void np_rtentry(struct rt_msghdr *); -static void p_sockaddr(struct sockaddr *, struct sockaddr *, int, int); -static const char *fmt_sockaddr(struct sockaddr *sa, struct sockaddr *mask, - int flags); -static void p_flags(int, const char *); -static const char *fmt_flags(int f); -static void p_rtentry(struct rtentry *); -static void domask(char *, in_addr_t, u_long); - /* * Print routing tables. */ void -routepr(u_long rtree) +routepr(const struct session_type *session, int domain) { - struct radix_node_head *rnh, head; - size_t intsize; - int i; - int numfibs; + struct route_type_list *rtlp; + struct route_type_iterator *rtip; + + const struct route_type *rtp; + const struct routeaddr_type *dst, *gw; + const struct routenode_type *rntp; + int error, last_domain, dom, flags; + int rt_flags; + + rtlp = netstat_rtl_alloc(); + if (rtlp == NULL) { + warn("netstat_rtl_alloc()"); + return; + } + + rt_flags = 0; + if (Aflag) + rt_flags |= NETSTAT_ROUTE_ALL; + if (netstat_route(session, 0, domain, rtlp, rt_flags)) { + error = netstat_rtl_geterror(rtlp); + if (error == NETSTAT_ERROR_KVM) + warnx("netstat_route: %s", netstat_kvmerror(session)); + else + warnx("netstat_route: %s", netstat_strerror(error)); + goto out; + } + + if (netstat_rti_alloc(rtlp, &rtip) < 0) { + warn("netstat_rti_alloc()"); + goto out; + } + + printf("Routing tables\n"); - intsize = sizeof(int); - if (sysctlbyname("net.my_fibnum", &fibnum, &intsize, NULL, 0) == -1) - fibnum = 0; - if (sysctlbyname("net.fibs", &numfibs, &intsize, NULL, 0) == -1) - numfibs = 1; - rt_tables = calloc(numfibs, sizeof(struct rtline)); - if (rt_tables == NULL) - err(EX_OSERR, "memory allocation failed"); /* - * Since kernel & userland use different timebase - * (time_uptime vs time_second) and we are reading kernel memory - * directly we should do rt_rmx.rmx_expire --> expire_time conversion. + * It should be guaranteed (somehow) by libnetstat that returned + * routes are not interleaved by protocol families. */ - if (clock_gettime(CLOCK_UPTIME, &uptime) < 0) - err(EX_OSERR, "clock_gettime() failed"); - printf("Routing tables\n"); - - if (Aflag == 0 && NewTree) - ntreestuff(); - else { - if (rtree == 0) { - printf("rt_tables: symbol not in namelist\n"); - return; + last_domain = -1; + for (rtp = netstat_rti_first(rtip); rtp != NULL; + rtp = netstat_rti_next(rtip)) { + dom = netstat_rt_get_family(rtp); + if (dom != last_domain) { + printf("\n%s:\n", netstat_family_name(dom)); + size_cols(dom, NULL); + pr_rthdr(dom); + last_domain = dom; + } + flags = netstat_rt_get_flags(rtp); + dst = netstat_rt_get_destination(rtp); + gw = netstat_rt_get_gateway(rtp); + rntp = netstat_rt_get_node(rtp); + if (Aflag) { + printf("%-8.8lx ", + (u_long)netstat_rnt_get_address(rntp)); } - - if (kread((u_long)(rtree), (char *)(rt_tables), - (numfibs * sizeof(struct rtline))) != 0) - return; - for (i = 0; i <= AF_MAX; i++) { - int tmpfib; - if (i != AF_INET) - tmpfib = 0; - else - tmpfib = fibnum; - if ((rnh = rt_tables[tmpfib].tables[i]) == 0) - continue; - if (kget(rnh, head) != 0) - continue; - if (i == AF_UNSPEC) { - if (Aflag && af == 0) { - printf("Netmasks:\n"); - p_tree(head.rnh_treetop); - } - } else if (af == AF_UNSPEC || af == i) { - size_cols(i, head.rnh_treetop); - pr_family(i); - do_rtent = 1; - pr_rthdr(i); - p_tree(head.rnh_treetop); + if (dst != NULL && gw != NULL) { + printf("%-*.*s %-*.*s %-*.*s", + wid_dst, wid_dst, + netstat_rat_get_name(dst, numeric_addr), + wid_gw, wid_gw, + netstat_rat_get_name(gw, numeric_addr), + wid_flags, wid_flags, fmt_flags(flags)); + if (dom == PF_INET) { + printf(" %*ju %*ju", + wid_refs, netstat_rt_get_refs(rtp), + wid_use, netstat_rt_get_used(rtp)); + if (Wflag) + printf(" %*d", + wid_mtu, netstat_rt_get_mtu(rtp)); } + printf(" %*s", + wid_if, netstat_rt_get_interface(rtp)); + if (flags & NETSTAT_RT_EXPIRES) + printf(" %*ju", wid_expire, + netstat_rt_get_expire(rtp)); } + if (Aflag) + p_rtnode(rntp); + putchar('\n'); } -} -/* - * Print address family header before a section of the routing table. - */ -void -pr_family(int af1) -{ - const char *afname; - - switch (af1) { - case AF_INET: - afname = "Internet"; - break; -#ifdef INET6 - case AF_INET6: - afname = "Internet6"; - break; -#endif /*INET6*/ - case AF_IPX: - afname = "IPX"; - break; - case AF_ISO: - afname = "ISO"; - break; - case AF_APPLETALK: - afname = "AppleTalk"; - break; - case AF_CCITT: - afname = "X.25"; - break; - case AF_NETGRAPH: - afname = "Netgraph"; - break; - default: - afname = NULL; - break; - } - if (afname) - printf("\n%s:\n", afname); - else - printf("\nProtocol Family %d:\n", af1); + netstat_rti_free(rtip); +out: netstat_rtl_free(rtlp); } /* column widths; each followed by one space */ @@ -270,17 +206,8 @@ #define WID_IF_DEFAULT(af) ((af) == AF_INET6 ? 8 : (Wflag ? 8 : 6)) #endif /*INET6*/ -static int wid_dst; -static int wid_gw; -static int wid_flags; -static int wid_refs; -static int wid_use; -static int wid_mtu; -static int wid_if; -static int wid_expire; - -static void -size_cols(int ef __unused, struct radix_node *rn) +void +size_cols(int ef, __unused struct route_type_iterator *rtip) { wid_dst = WID_DST_DEFAULT(ef); wid_gw = WID_GW_DEFAULT(ef); @@ -291,95 +218,71 @@ wid_if = WID_IF_DEFAULT(ef); wid_expire = 6; +/* if (Wflag) - size_cols_tree(rn); + size_cols_tree(rtip); +*/ } -static void -size_cols_tree(struct radix_node *rn) +static const char * +fmt_flags(int f) { -again: - if (kget(rn, rnode) != 0) - return; - if (!(rnode.rn_flags & RNF_ACTIVE)) - return; - if (rnode.rn_bit < 0) { - if ((rnode.rn_flags & RNF_ROOT) == 0) { - if (kget(rn, rtentry) != 0) - return; - size_cols_rtentry(&rtentry); - } - if ((rn = rnode.rn_dupedkey)) - goto again; - } else { - rn = rnode.rn_right; - size_cols_tree(rnode.rn_left); - size_cols_tree(rn); - } + static char name[33]; + char *flags; + struct bits *p = bits; + + for (flags = name; p->b_mask; p++) + if (p->b_mask & f) + *flags++ = p->b_val; + *flags = '\0'; + return (name); } -static void -size_cols_rtentry(struct rtentry *rt) +void p_rtnode(const struct routenode_type *rntp) { - static struct ifnet ifnet, *lastif; - static char buffer[100]; - const char *bp; - struct sockaddr *sa; - sa_u addr, mask; - int len; + const struct routemask_type *rmtp; + const struct routeaddr_type *mask; + char nbuf[20]; + int bit, i, flags; - bzero(&addr, sizeof(addr)); - if ((sa = kgetsa(rt_key(rt)))) - bcopy(sa, &addr, sa->sa_len); - bzero(&mask, sizeof(mask)); - if (rt_mask(rt) && (sa = kgetsa(rt_mask(rt)))) - bcopy(sa, &mask, sa->sa_len); - bp = fmt_sockaddr(&addr.u_sa, &mask.u_sa, rt->rt_flags); - len = strlen(bp); - wid_dst = MAX(len, wid_dst); - - bp = fmt_sockaddr(kgetsa(rt->rt_gateway), NULL, RTF_HOST); - len = strlen(bp); - wid_gw = MAX(len, wid_gw); - - bp = fmt_flags(rt->rt_flags); - len = strlen(bp); - wid_flags = MAX(len, wid_flags); - - if (addr.u_sa.sa_family == AF_INET || Wflag) { - len = snprintf(buffer, sizeof(buffer), "%d", rt->rt_refcnt); - wid_refs = MAX(len, wid_refs); - len = snprintf(buffer, sizeof(buffer), "%lu", rt->rt_use); - wid_use = MAX(len, wid_use); - if (Wflag && rt->rt_rmx.rmx_mtu != 0) { - len = snprintf(buffer, sizeof(buffer), - "%lu", rt->rt_rmx.rmx_mtu); - wid_mtu = MAX(len, wid_mtu); + flags = netstat_rnt_get_flags(rntp); + if (flags & NETSTAT_RTN_ROOT) { + printf("(root node)%s", + flags & NETSTAT_RTN_DUPEDKEY ? " =>" : ""); + } else { + bit = netstat_rnt_get_bit(rntp); + if (bit < 0) { + mask = netstat_rnt_get_netmask(rntp); + if (mask != NULL) { + printf(" mask "); + printf("%s", + netstat_rat_get_name(mask, numeric_addr)); + } else if (netstat_rnt_get_mkcnt(rntp) == 0) + return; + } else { + sprintf(nbuf, "(%d)", bit); + printf("%6.6s %8.8lx : %8.8lx", nbuf, + (u_long)netstat_rnt_get_left(rntp), + (u_long)netstat_rnt_get_right(rntp)); } - } - if (rt->rt_ifp) { - if (rt->rt_ifp != lastif) { - if (kget(rt->rt_ifp, ifnet) == 0) - len = strlen(ifnet.if_xname); - else - len = strlen("---"); - lastif = rt->rt_ifp; - wid_if = MAX(len, wid_if); + for (i = 0; i < netstat_rnt_get_mkcnt(rntp); i++) { + if (i > 0) + printf(" ->"); + rmtp = netstat_rnt_get_mask(rntp, i); + sprintf(nbuf, " %ju refs, ", netstat_rmt_get_refs(rmtp)); + printf(" mk = %8.8lx { (%d),%s", + (u_long)netstat_rmt_get_address(rmtp), + -1 - netstat_rmt_get_bit(rmtp), + netstat_rmt_get_refs(rmtp) > 0 ? nbuf : " "); + if (netstat_rmt_get_flags(rmtp) & NETSTAT_RTM_NORMAL) + printf(", "); + mask = netstat_rmt_get_netmask(rmtp); + printf("%s ", netstat_rat_get_name(mask, numeric_addr)); + putchar('}'); } - if (rt->rt_rmx.rmx_expire) { - time_t expire_time; - - if ((expire_time = - rt->rt_rmx.rmx_expire - uptime.tv_sec) > 0) { - len = snprintf(buffer, sizeof(buffer), "%d", - (int)expire_time); - wid_expire = MAX(len, wid_expire); - } - } } } - /* * Print header for routing table columns. */ @@ -420,567 +323,6 @@ } } -static struct sockaddr * -kgetsa(struct sockaddr *dst) -{ - - if (kget(dst, pt_u.u_sa) != 0) - return (NULL); - if (pt_u.u_sa.sa_len > sizeof (pt_u.u_sa)) - kread((u_long)dst, (char *)pt_u.u_data, pt_u.u_sa.sa_len); - return (&pt_u.u_sa); -} - -static void -p_tree(struct radix_node *rn) -{ - -again: - if (kget(rn, rnode) != 0) - return; - if (!(rnode.rn_flags & RNF_ACTIVE)) - return; - if (rnode.rn_bit < 0) { - if (Aflag) - printf("%-8.8lx ", (u_long)rn); - if (rnode.rn_flags & RNF_ROOT) { - if (Aflag) - printf("(root node)%s", - rnode.rn_dupedkey ? " =>\n" : "\n"); - } else if (do_rtent) { - if (kget(rn, rtentry) == 0) { - p_rtentry(&rtentry); - if (Aflag) - p_rtnode(); - } - } else { - p_sockaddr(kgetsa((struct sockaddr *)rnode.rn_key), - NULL, 0, 44); - putchar('\n'); - } - if ((rn = rnode.rn_dupedkey)) - goto again; - } else { - if (Aflag && do_rtent) { - printf("%-8.8lx ", (u_long)rn); - p_rtnode(); - } - rn = rnode.rn_right; - p_tree(rnode.rn_left); - p_tree(rn); - } -} - -char nbuf[20]; - -static void -p_rtnode(void) -{ - struct radix_mask *rm = rnode.rn_mklist; - - if (rnode.rn_bit < 0) { - if (rnode.rn_mask) { - printf("\t mask "); - p_sockaddr(kgetsa((struct sockaddr *)rnode.rn_mask), - NULL, 0, -1); - } else if (rm == 0) - return; - } else { - sprintf(nbuf, "(%d)", rnode.rn_bit); - printf("%6.6s %8.8lx : %8.8lx", nbuf, (u_long)rnode.rn_left, (u_long)rnode.rn_right); - } - while (rm) { - if (kget(rm, rmask) != 0) - break; - sprintf(nbuf, " %d refs, ", rmask.rm_refs); - printf(" mk = %8.8lx {(%d),%s", - (u_long)rm, -1 - rmask.rm_bit, rmask.rm_refs ? nbuf : " "); - if (rmask.rm_flags & RNF_NORMAL) { - struct radix_node rnode_aux; - printf(" , "); - if (kget(rmask.rm_leaf, rnode_aux) == 0) - p_sockaddr(kgetsa((struct sockaddr *)rnode_aux.rn_mask), - NULL, 0, -1); - else - p_sockaddr(NULL, NULL, 0, -1); - } else - p_sockaddr(kgetsa((struct sockaddr *)rmask.rm_mask), - NULL, 0, -1); - putchar('}'); - if ((rm = rmask.rm_mklist)) - printf(" ->"); - } - putchar('\n'); -} - -static void -ntreestuff(void) -{ - size_t needed; - int mib[6]; - char *buf, *next, *lim; - struct rt_msghdr *rtm; - - mib[0] = CTL_NET; - mib[1] = PF_ROUTE; - mib[2] = 0; - mib[3] = 0; - mib[4] = NET_RT_DUMP; - mib[5] = 0; - if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) { - err(1, "sysctl: net.route.0.0.dump estimate"); - } - - if ((buf = malloc(needed)) == 0) { - errx(2, "malloc(%lu)", (unsigned long)needed); - } - if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0) { - err(1, "sysctl: net.route.0.0.dump"); - } - lim = buf + needed; - for (next = buf; next < lim; next += rtm->rtm_msglen) { - rtm = (struct rt_msghdr *)next; - np_rtentry(rtm); - } -} - -static void -np_rtentry(struct rt_msghdr *rtm) -{ - struct sockaddr *sa = (struct sockaddr *)(rtm + 1); -#ifdef notdef - static int masks_done, banner_printed; -#endif - static int old_af; - int af1 = 0, interesting = RTF_UP | RTF_GATEWAY | RTF_HOST; - -#ifdef notdef - /* for the moment, netmasks are skipped over */ - if (!banner_printed) { - printf("Netmasks:\n"); - banner_printed = 1; - } - if (masks_done == 0) { - if (rtm->rtm_addrs != RTA_DST ) { - masks_done = 1; - af1 = sa->sa_family; - } - } else -#endif - af1 = sa->sa_family; - if (af1 != old_af) { - pr_family(af1); - old_af = af1; - } - if (rtm->rtm_addrs == RTA_DST) - p_sockaddr(sa, NULL, 0, 36); - else { - p_sockaddr(sa, NULL, rtm->rtm_flags, 16); - sa = (struct sockaddr *)(SA_SIZE(sa) + (char *)sa); - p_sockaddr(sa, NULL, 0, 18); - } - p_flags(rtm->rtm_flags & interesting, "%-6.6s "); - putchar('\n'); -} - -static void -p_sockaddr(struct sockaddr *sa, struct sockaddr *mask, int flags, int width) -{ - const char *cp; - - cp = fmt_sockaddr(sa, mask, flags); - - if (width < 0 ) - printf("%s ", cp); - else { - if (numeric_addr) - printf("%-*s ", width, cp); - else - printf("%-*.*s ", width, width, cp); - } -} - -static const char * -fmt_sockaddr(struct sockaddr *sa, struct sockaddr *mask, int flags) -{ - static char workbuf[128]; - const char *cp; - - if (sa == NULL) - return ("null"); - - switch(sa->sa_family) { - case AF_INET: - { - struct sockaddr_in *sockin = (struct sockaddr_in *)sa; - - if ((sockin->sin_addr.s_addr == INADDR_ANY) && - mask && - ntohl(((struct sockaddr_in *)mask)->sin_addr.s_addr) - ==0L) - cp = "default" ; - else if (flags & RTF_HOST) - cp = routename(sockin->sin_addr.s_addr); - else if (mask) - cp = netname(sockin->sin_addr.s_addr, - ntohl(((struct sockaddr_in *)mask) - ->sin_addr.s_addr)); - else - cp = netname(sockin->sin_addr.s_addr, 0L); - break; - } - -#ifdef INET6 - case AF_INET6: - { - struct sockaddr_in6 *sa6 = (struct sockaddr_in6 *)sa; - struct in6_addr *in6 = &sa6->sin6_addr; - - /* - * XXX: This is a special workaround for KAME kernels. - * sin6_scope_id field of SA should be set in the future. - */ - if (IN6_IS_ADDR_LINKLOCAL(in6) || - IN6_IS_ADDR_MC_LINKLOCAL(in6)) { - /* XXX: override is ok? */ - sa6->sin6_scope_id = (u_int32_t)ntohs(*(u_short *)&in6->s6_addr[2]); - *(u_short *)&in6->s6_addr[2] = 0; - } - - if (flags & RTF_HOST) - cp = routename6(sa6); - else if (mask) - cp = netname6(sa6, - &((struct sockaddr_in6 *)mask)->sin6_addr); - else { - cp = netname6(sa6, NULL); - } - break; - } -#endif /*INET6*/ - - case AF_IPX: - { - struct ipx_addr work = ((struct sockaddr_ipx *)sa)->sipx_addr; - if (ipx_nullnet(satoipx_addr(work))) - cp = "default"; - else - cp = ipx_print(sa); - break; - } - case AF_APPLETALK: - { - if (!(flags & RTF_HOST) && mask) - cp = atalk_print2(sa,mask,9); - else - cp = atalk_print(sa,11); - break; - } - case AF_NETGRAPH: - { - strlcpy(workbuf, ((struct sockaddr_ng *)sa)->sg_data, - sizeof(workbuf)); - cp = workbuf; - break; - } - - case AF_LINK: - { - struct sockaddr_dl *sdl = (struct sockaddr_dl *)sa; - - if (sdl->sdl_nlen == 0 && sdl->sdl_alen == 0 && - sdl->sdl_slen == 0) { - (void) sprintf(workbuf, "link#%d", sdl->sdl_index); - cp = workbuf; - } else - switch (sdl->sdl_type) { - - case IFT_ETHER: - case IFT_L2VLAN: - case IFT_BRIDGE: - if (sdl->sdl_alen == ETHER_ADDR_LEN) { - cp = ether_ntoa((struct ether_addr *) - (sdl->sdl_data + sdl->sdl_nlen)); - break; - } - /* FALLTHROUGH */ - default: - cp = link_ntoa(sdl); - break; - } - break; - } - - default: - { - u_char *s = (u_char *)sa->sa_data, *slim; - char *cq, *cqlim; - - cq = workbuf; - slim = sa->sa_len + (u_char *) sa; - cqlim = cq + sizeof(workbuf) - 6; - cq += sprintf(cq, "(%d)", sa->sa_family); - while (s < slim && cq < cqlim) { - cq += sprintf(cq, " %02x", *s++); - if (s < slim) - cq += sprintf(cq, "%02x", *s++); - } - cp = workbuf; - } - } - - return (cp); -} - -static void -p_flags(int f, const char *format) -{ - printf(format, fmt_flags(f)); -} - -static const char * -fmt_flags(int f) -{ - static char name[33]; - char *flags; - struct bits *p = bits; - - for (flags = name; p->b_mask; p++) - if (p->b_mask & f) - *flags++ = p->b_val; - *flags = '\0'; - return (name); -} - -static void -p_rtentry(struct rtentry *rt) -{ - static struct ifnet ifnet, *lastif; - static char buffer[128]; - static char prettyname[128]; - struct sockaddr *sa; - sa_u addr, mask; - - bzero(&addr, sizeof(addr)); - if ((sa = kgetsa(rt_key(rt)))) - bcopy(sa, &addr, sa->sa_len); - bzero(&mask, sizeof(mask)); - if (rt_mask(rt) && (sa = kgetsa(rt_mask(rt)))) - bcopy(sa, &mask, sa->sa_len); - p_sockaddr(&addr.u_sa, &mask.u_sa, rt->rt_flags, wid_dst); - p_sockaddr(kgetsa(rt->rt_gateway), NULL, RTF_HOST, wid_gw); - snprintf(buffer, sizeof(buffer), "%%-%d.%ds ", wid_flags, wid_flags); - p_flags(rt->rt_flags, buffer); - if (addr.u_sa.sa_family == AF_INET || Wflag) { - printf("%*d %*lu ", wid_refs, rt->rt_refcnt, - wid_use, rt->rt_use); - if (Wflag) { - if (rt->rt_rmx.rmx_mtu != 0) - printf("%*lu ", wid_mtu, rt->rt_rmx.rmx_mtu); - else - printf("%*s ", wid_mtu, ""); - } - } - if (rt->rt_ifp) { - if (rt->rt_ifp != lastif) { - if (kget(rt->rt_ifp, ifnet) == 0) - strlcpy(prettyname, ifnet.if_xname, - sizeof(prettyname)); - else - strlcpy(prettyname, "---", sizeof(prettyname)); - lastif = rt->rt_ifp; - } - printf("%*.*s", wid_if, wid_if, prettyname); - if (rt->rt_rmx.rmx_expire) { - time_t expire_time; - - if ((expire_time = - rt->rt_rmx.rmx_expire - uptime.tv_sec) > 0) - printf(" %*d", wid_expire, (int)expire_time); - } - if (rt->rt_nodes[0].rn_dupedkey) - printf(" =>"); - } - putchar('\n'); -} - -char * -routename(in_addr_t in) -{ - char *cp; - static char line[MAXHOSTNAMELEN]; - struct hostent *hp; - - cp = 0; - if (!numeric_addr) { - hp = gethostbyaddr(&in, sizeof (struct in_addr), AF_INET); - if (hp) { - cp = hp->h_name; - trimdomain(cp, strlen(cp)); - } - } - if (cp) { - strlcpy(line, cp, sizeof(line)); - } else { -#define C(x) ((x) & 0xff) >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Wed Aug 12 06:05:09 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 23A441065673; Wed, 12 Aug 2009 06:05:09 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C9D1E106566B; Wed, 12 Aug 2009 06:05:08 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from mail.cksoft.de (mail.cksoft.de [195.88.108.3]) by mx1.freebsd.org (Postfix) with ESMTP id 85D8C8FC15; Wed, 12 Aug 2009 06:05:08 +0000 (UTC) Received: from localhost (amavis.fra.cksoft.de [192.168.74.71]) by mail.cksoft.de (Postfix) with ESMTP id 32C2941C650; Wed, 12 Aug 2009 08:05:07 +0200 (CEST) X-Virus-Scanned: amavisd-new at cksoft.de Received: from mail.cksoft.de ([195.88.108.3]) by localhost (amavis.fra.cksoft.de [192.168.74.71]) (amavisd-new, port 10024) with ESMTP id CATXyZJS4+Hr; Wed, 12 Aug 2009 08:05:06 +0200 (CEST) Received: by mail.cksoft.de (Postfix, from userid 66) id 5364B41C66F; Wed, 12 Aug 2009 08:05:06 +0200 (CEST) Received: from maildrop.int.zabbadoz.net (maildrop.int.zabbadoz.net [10.111.66.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.int.zabbadoz.net (Postfix) with ESMTP id D57CC4448EC; Wed, 12 Aug 2009 06:00:26 +0000 (UTC) Date: Wed, 12 Aug 2009 06:00:26 +0000 (UTC) From: "Bjoern A. Zeeb" X-X-Sender: bz@maildrop.int.zabbadoz.net To: Marko Zec In-Reply-To: <200908111019.n7BAJFr3097296@repoman.freebsd.org> Message-ID: <20090812055947.V93661@maildrop.int.zabbadoz.net> References: <200908111019.n7BAJFr3097296@repoman.freebsd.org> X-OpenPGP-Key: 0x14003F198FEFA3E77207EE8D2B58B8F83CCF1842 MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: Perforce Change Reviews Subject: Re: PERFORCE change 167205 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 06:05:10 -0000 On Tue, 11 Aug 2009, Marko Zec wrote: > http://perforce.freebsd.org/chv.cgi?CH=167205 > > Change 167205 by zec@zec_tpx32 on 2009/08/11 10:18:59 > > Make VNET_DEBUG a standalone compile-time option, i.e. > decouple it from WITNESS. > Suggested by: bz Thanks, that will eliminate local patches I always have to make sure to not commit. -- Bjoern A. Zeeb The greatest risk is not taking one. From owner-p4-projects@FreeBSD.ORG Wed Aug 12 08:44:21 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C4DA71065676; Wed, 12 Aug 2009 08:44:20 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 847221065673 for ; Wed, 12 Aug 2009 08:44:20 +0000 (UTC) (envelope-from dforsyth@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 7246D8FC43 for ; Wed, 12 Aug 2009 08:44:20 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7C8iK0s050057 for ; Wed, 12 Aug 2009 08:44:20 GMT (envelope-from dforsyth@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7C8iK33050055 for perforce@freebsd.org; Wed, 12 Aug 2009 08:44:20 GMT (envelope-from dforsyth@FreeBSD.org) Date: Wed, 12 Aug 2009 08:44:20 GMT Message-Id: <200908120844.n7C8iK33050055@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to dforsyth@FreeBSD.org using -f From: David Forsythe To: Perforce Change Reviews Cc: Subject: PERFORCE change 167231 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 08:44:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=167231 Change 167231 by dforsyth@squirrel on 2009/08/12 08:43:44 Fix required_by read. Affected files ... .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#43 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#38 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db.c#10 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb.c#8 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb.h#7 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb_read.c#4 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_error.h#5 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest.c#4 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest.h#4 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest_plist.c#5 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_private.h#17 edit .. //depot/projects/soc2009/dforsyth_libpkg/pkg_info/main.c#29 edit .. //depot/projects/soc2009/dforsyth_libpkg/pkg_info/pkg_info.h#9 edit Differences ... ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#43 (text+ko) ==== @@ -49,6 +49,7 @@ p->comment = NULL; p->description = NULL; p->display = NULL; + p->reqd_by_count = 0; p->required_by = NULL; p->mtree_dirs = NULL; p->pm = NULL; @@ -115,16 +116,6 @@ return (pkg_manifest_name(p->pm)); } -const char * -pkg_cwd(struct pkg *p) -{ - pkg_check_magic(p, __func__); - if (pkg_parse_manifest(p) != PKG_OK) - return (NULL); - - return ((const char *)pkg_manifest_cwd(p->pm)); -} - /* Retrieve pkg origin. @origin in plist. The directory of the port that * this pkg was create from. */ @@ -236,13 +227,13 @@ return (p->mtree_dirs); } -const char * +const char *const * pkg_required_by(struct pkg *p) { if (p->in_db != NULL) pkg_read_pkg_element_from_db(p, PKG_ELEM_REQUIRED_BY); - return ((const char *)p->required_by); + return ((const char *const *)p->required_by); } const char * @@ -340,7 +331,7 @@ if (p->pm == NULL) pkg_parse_manifest(p); - return (pkg_manifest_pkg_file_list(p->pm)); + return (pkg_manifest_file_list(p->pm)); } /* Retrieve a list of dependencies for this package (by name). Return a @@ -353,7 +344,7 @@ if (p->pm == NULL && p->in_db != NULL) pkg_parse_manifest(p); - return (pkg_manifest_pkg_depend_list(p->pm)); + return (pkg_manifest_depend_list(p->pm)); } /* Retrieve a list of conflicts for this package (by name). Return a list @@ -366,7 +357,7 @@ if (p->pm == NULL && p->in_db != NULL) pkg_parse_manifest(p); - return (pkg_manifest_pkg_conflict_list(p->pm)); + return (pkg_manifest_conflict_list(p->pm)); } const char *const * @@ -376,7 +367,7 @@ if (p->pm == NULL && p->in_db != NULL) pkg_parse_manifest(p); - return (pkg_manifest_install_pkg_command_list(p->pm)); + return (pkg_manifest_exec_cmd_list(p->pm)); } const char *const * @@ -386,14 +377,14 @@ if (p->pm == NULL && p->in_db != NULL) pkg_parse_manifest(p); - return (pkg_manifest_deinstall_pkg_command_list(p->pm)); + return (pkg_manifest_unexec_cmd_list(p->pm)); } /* Add a file to a package. This is fairly useless at this point * because... well, there the hell is the file coming from? */ int -pkg_insert_pkg_file(struct pkg *p, const char *path, const char *cwd, const char *md5, +pkg_add_pkg_file(struct pkg *p, const char *path, const char *cwd, const char *md5, const char *mode, const char *owner, const char *group) { int status; @@ -404,17 +395,37 @@ status = PKG_OK; pkg_parse_manifest(p); - status |= pkg_manifest_insert_pkg_file(p->pm, path, md5, cwd, mode, owner, group); + status |= pkg_manifest_add_file(p->pm, path, md5, cwd, mode, owner, group); return (status); } +int +pkg_remove_pkg_file(struct pkg *p, const char *path) +{ + struct pkg_file *pf; + pkg_check_magic(p, __func__); + if ((pf = pkg_manifest_select_file(p->pm, path)) == NULL) + return (-1); + return (pkg_file_ignored(pf)); +} + +int +pkg_pkg_file_ignored(struct pkg *p, const char *path) +{ + struct pkg_file *pf; + pkg_check_magic(p, __func__); + if ((pf = pkg_manifest_select_file(p->pm, path)) == NULL) + return (NULL); + return ((const char *)pkg_file_ignored(pf)); +} + const char * pkg_pkg_file_cwd(struct pkg *p, const char *path) { struct pkg_file *pf; pkg_check_magic(p, __func__); - if ((pf = pkg_manifest_select_pkg_file(p->pm, path)) == NULL) + if ((pf = pkg_manifest_select_file(p->pm, path)) == NULL) return (NULL); return ((const char *)pkg_file_cwd(pf)); } @@ -424,7 +435,7 @@ { struct pkg_file *pf; pkg_check_magic(p, __func__); - if ((pf = pkg_manifest_select_pkg_file(p->pm, path)) == NULL) + if ((pf = pkg_manifest_select_file(p->pm, path)) == NULL) return (NULL); return ((const char *)pkg_file_group(pf)); } @@ -434,7 +445,7 @@ { struct pkg_file *pf; pkg_check_magic(p, __func__); - if ((pf = pkg_manifest_select_pkg_file(p->pm, path)) == NULL) + if ((pf = pkg_manifest_select_file(p->pm, path)) == NULL) return (NULL); return ((const char *)pkg_file_md5(pf)); } @@ -444,7 +455,7 @@ { struct pkg_file *pf; pkg_check_magic(p, __func__); - if ((pf = pkg_manifest_select_pkg_file(p->pm, path)) == NULL) + if ((pf = pkg_manifest_select_file(p->pm, path)) == NULL) return (NULL); return ((const char *)pkg_file_mode(pf)); } @@ -454,17 +465,32 @@ { struct pkg_file *pf; pkg_check_magic(p, __func__); - if ((pf = pkg_manifest_select_pkg_file(p->pm, path)) == NULL) + if ((pf = pkg_manifest_select_file(p->pm, path)) == NULL) return (NULL); return ((const char *)pkg_file_owner(pf)); } +int +pkg_add_pkg_depend(struct pkg *p, const char *name, const char *origin, + const char *version) +{ + pkg_check_magic(p, __func__); + pkg_parse_manifest(p); + return (pkg_manifest_add_depend(name, origin, version)); +} + +int +pkg_remove_pkg_depend(struct pkg *p, const char *name) +{ + return (0); +} + const char * pkg_pkg_depend_origin(struct pkg *p, const char *name) { struct pkg_depend *pd; pkg_check_magic(p, __func__); - if ((pd = pkg_manifest_select_pkg_depend(p->pm, name)) == NULL) + if ((pd = pkg_manifest_select_depend(p->pm, name)) == NULL) return (NULL); return ((const char *)pkg_depend_origin(pd)); } @@ -589,7 +615,7 @@ } int -__pkg_set_required_by_ptr(struct pkg *p, char *required_by_ptr) +__pkg_set_required_by_ptr(struct pkg *p, char **required_by_ptr) { pkg_check_magic(p, __func__); p->required_by = required_by_ptr; ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#38 (text+ko) ==== @@ -29,12 +29,10 @@ const char *pkg_ident(struct pkg *p); const char *pkg_name(struct pkg *p); -const char *pkg_cwd(struct pkg *p); const char *pkg_origin(struct pkg *p); int pkg_set_ident(struct pkg *p, const char *ident); int pkg_set_name(struct pkg *p, const char *name); -int pkg_set_cwd(struct pkg *p, const char *cwd); int pkg_set_origin(struct pkg *p, const char *origin); int pkg_set_comment(struct pkg *p, const char *comment); @@ -61,18 +59,20 @@ const char *const *pkg_execs(struct pkg *p); const char *const *pkg_unexecs(struct pkg *p); -int pkg_insert_pkg_file(struct pkg *p, const char *path, const char *cwd, +int pkg_add_pkg_file(struct pkg *p, const char *path, const char *cwd, const char *group, const char *md5, const char *mode, const char *owner); -int pkg_delete_pkg_file(struct pkg *p, const char *path); +int pkg_remove_pkg_file(struct pkg *p, const char *path); +int pkg_pkg_file_ignored(struct pkg *p, const char *path); const char *pkg_pkg_file_cwd(struct pkg *p, const char *path); const char *pkg_pkg_file_group(struct pkg *p, const char *path); const char *pkg_pkg_file_md5(struct pkg *p, const char *path); const char *pkg_pkg_file_mode(struct pkg *p, const char *path); const char *pkg_pkg_file_owner(struct pkg *p, const char *path); -int pkg_add_depend(struct pkg *p, const char *name, const char *origin, int version); -int pkg_remove_depend(struct pkg *p, const char *name); +int pkg_add_pkg_depend(struct pkg *p, const char *name, const char *origin, + const char *version); +int pkg_remove_pkg_depend(struct pkg *p, const char *name); const char *pkg_pkg_depend_origin(struct pkg *p, const char *name); int pkg_pkg_depend_version(struct pkg *p, const char *name); @@ -87,7 +87,7 @@ int pkg_preserve(struct pkg *p); int pkg_complete(struct pkg *p); -const char *pkg_required_by(struct pkg *p); +const char *const *pkg_required_by(struct pkg *p); /* pkg_db */ ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db.c#10 (text+ko) ==== @@ -79,7 +79,7 @@ { pkg_db_check_magic(db, __func__); - pkg_db_clear_pkg_list(db); /* Should set sub_count to 0. */ + pkg_db_clear_pkg_entries(db); /* Should set sub_count to 0. */ free(db->db_root); db->open = 0; @@ -170,14 +170,6 @@ return; } -void -pkg_db_clear_pkg_list(struct pkg_db *db) -{ - if (db) - return; - return; -} - int pkg_db_pkg_count(struct pkg_db *db) { ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb.c#8 (text+ko) ==== @@ -78,46 +78,16 @@ int pkg_db_hierdb_file_exists(struct pkg_db *db, struct pkg *p, const char *filename) { - return (1); -} - -#if 0 -int -pkg_db_hierdb_read_pkg_from_db(struct pkg_db *db, struct pkg *p) -{ - char *ident; + int status; + struct stat sb; + char *dir; char *path; - int status; - status = PKG_OK; - ident = pkg_ident(p); - if (ident == NULL) - return (PKG_NOT_OK); - - path = path_build(ident, COMMENT_FILE); - status |= pkg_set_comment(p,pkg_db_hierdb_read_file_to_text(db, path)); + dir = path_build(pkg_db_db_root(db), pkg_ident(p)); + path = path_build(dir, filename); + free(dir); + status = access(path, R_OK); free(path); - - path = path_build(ident, DESC_FILE); - status |= pkg_set_description(p, pkg_db_hierdb_read_file_to_text(db, path)); - free(path); - - path = path_build(ident, CONTENTS_FILE); - status |= pkg_set_contents(p, pkg_db_hierdb_read_file_to_text(db, path)); - free(path); - - path = path_build(ident, DISPLAY_FILE); - status |= pkg_set_display(p, pkg_db_hierdb_read_file_to_text(db, path)); - free(path); - - path = path_build(ident, MTREE_DIRS_FILE); - status |= pkg_set_mtree_dirs(p, pkg_db_hierdb_read_file_to_text(db, path)); - free(path); - - path = path_build(ident, REQUIRED_BY_FILE); - status |= pkg_set_required_by(p, pkg_db_hierdb_read_file_to_text(db, path)); - free(path); + return (!status); +} - return (status); -} -#endif ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb.h#7 (text+ko) ==== @@ -19,6 +19,4 @@ int pkg_db_hierdb_file_exists(struct pkg_db *db, struct pkg *p, const char *filename); -// int pkg_db_hierdb_read_pkg_element(struct pkg_db *db, struct pkg *p, int element); - #endif ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb_read.c#4 (text+ko) ==== @@ -3,6 +3,7 @@ #include #include #include +#include #include "pkg_util.h" #include "pkg_error.h" @@ -82,7 +83,7 @@ dir = path_build(db->db_root, p->ident); path = path_build(dir, filename); - + free(dir); file = fopen(path, "r"); return (file); @@ -139,6 +140,8 @@ /* These will not be staying this way. For now, assume that all files are where we * want them to be, and assume a PLIST manifest. */ +/* XXX: I'd like to move a few of these elements into the manifest later on. */ + static int pkg_db_hierdb_read_comment_to_pkg(struct pkg_db *db, struct pkg *p) { @@ -214,17 +217,32 @@ static int pkg_db_hierdb_read_required_by_to_pkg(struct pkg_db *db, struct pkg *p) { - char *text; + int count; + char line[LINE_MAX]; + char **reqdby; + char **list; + FILE *reqdby_stream; if (!pkg_db_hierdb_file_exists(db, p, REQUIRED_BY_FILE)) - return (PKG_NOT_OK); + return (PKG_OK); /* REQUIRED_BY doesn't have to exist. */ - text = pkg_db_hierdb_read_file_to_text(db, p, REQUIRED_BY_FILE); - if (text == NULL) - return (PKG_MEMORY_ERR | PKG_NOT_OK); + reqdby_stream = pkg_db_hierdb_open_file_stream_read(db, p, REQUIRED_BY_FILE); + for (count = 0, reqdby = NULL; fgets(line, FILENAME_MAX, reqdby_stream) != NULL; count++) { + if (count % 10 == 0) { + list = reqdby; + reqdby = realloc(list, sizeof(*list) * (count + 11)); + if (reqdby == NULL) { + reqdby = list; + return (PKG_MEMORY_ERR | PKG_NOT_OK); + } + } + pkg_util_trim_newline(line); + reqdby[count] = strdup(line); + } + reqdby[count] = NULL; - pkg_util_trim_newline(text); - __pkg_set_required_by_ptr(p, text); + fclose(reqdby_stream); + __pkg_set_required_by_ptr(p, reqdby); return (PKG_OK); } ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_error.h#5 (text+ko) ==== @@ -5,6 +5,17 @@ #define PKG_NOT_OK 0x00000001 #define PKG_MEMORY_ERR 0x00000002 +#define pkg_error_null_argument(what, where, actual) \ + if (actual == NULL) { \ + pkg_error_msg("NULL "); \ + pkg_error_msg(what); \ + pkg_error_msg(" passed to "); \ + pkg_error_msg(where); \ + pkg_error_msg("\n"); \ + rage_quit(); \ + } + + void pkg_error_msg(const char *errmsg); void bad_magic_quit(const char *type, const char *where); ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest.c#4 (text+ko) ==== @@ -9,11 +9,11 @@ #include "pkg_file.h" #include "pkg_manifest.h" -static void pkg_manifest_clear_pkg_conflict_entries(struct pkg_manifest *pm); -static void pkg_manifest_clear_pkg_depend_entries(struct pkg_manifest *pm); -static void pkg_manifest_clear_pkg_file_entries(struct pkg_manifest *pm); -static void pkg_manifest_clear_install_pkg_commands(struct pkg_manifest *pm); -static void pkg_manifest_clear_deinstall_pkg_commands(struct pkg_manifest *pm); +static void pkg_manifest_clear_conflict_entries(struct pkg_manifest *pm); +static void pkg_manifest_clear_depend_entries(struct pkg_manifest *pm); +static void pkg_manifest_clear_file_entries(struct pkg_manifest *pm); +static void pkg_manifest_clear_exec_list(struct pkg_manifest *pm); +static void pkg_manifest_clear_unexec_list(struct pkg_manifest *pm); static void pkg_manifest_init(struct pkg_manifest *pm); void @@ -49,14 +49,23 @@ pm->mtree_file = NULL; pm->display_file = NULL; - pm->pkg_conflict_list = NULL; - pm->pkg_conflict_entries = NULL; + pm->conflict_list = NULL; + pm->conflict_entries = NULL; - pm->pkg_depend_list = NULL; - pm->pkg_depend_entries = NULL; + pm->depend_list = NULL; + pm->depend_entries = NULL; + + pm->file_list = NULL; + pm->file_entries = NULL; + + pm->exec_count = 0; + pm->exec_list = NULL; + + pm->unexec_count = 0; + pm->unexec_list = NULL; - pm->pkg_file_list = NULL; - pm->pkg_file_entries = NULL; + pm->dirrm_count = 0; + pm->dirrm_list = NULL; pm->complete = 0; pm->dirty = 0; @@ -76,11 +85,11 @@ free(pm->srcdir); free(pm->mtree_file); free(pm->display_file); - pkg_manifest_clear_pkg_conflict_entries(pm); - pkg_manifest_clear_pkg_depend_entries(pm); - pkg_manifest_clear_pkg_file_entries(pm); - pkg_manifest_clear_install_pkg_commands(pm); - pkg_manifest_clear_deinstall_pkg_commands(pm); + pkg_manifest_clear_conflict_entries(pm); + pkg_manifest_clear_depend_entries(pm); + pkg_manifest_clear_file_entries(pm); + pkg_manifest_clear_exec_list(pm); + pkg_manifest_clear_unexec_list(pm); pkg_manifest_init(pm); } @@ -95,12 +104,6 @@ } const char * -pkg_manifest_cwd(struct pkg_manifest *pm) -{ - return ((const char *)pm->cwd); -} - -const char * pkg_manifest_revision(struct pkg_manifest *pm) { return ((const char *)pm->rev); @@ -149,13 +152,6 @@ } int -pkg_manifest_set_cwd(struct pkg_manifest *pm, const char *cwd) -{ - pkg_manifest_check_magic(pm, __func__); - return (pkg_util_strdup(cwd, &pm->cwd)); -} - -int pkg_manifest_set_revision(struct pkg_manifest *pm, const char *revision) { pkg_manifest_check_magic(pm, __func__); @@ -191,37 +187,43 @@ } const char *const * -pkg_manifest_pkg_conflict_list(struct pkg_manifest *pm) +pkg_manifest_conflict_list(struct pkg_manifest *pm) +{ + return ((const char *const *)pm->conflict_list); +} + +const char *const * +pkg_manifest_depend_list(struct pkg_manifest *pm) { - return ((const char *const *)pm->pkg_conflict_list); + return ((const char *const *)pm->depend_list); } const char *const * -pkg_manifest_pkg_depend_list(struct pkg_manifest *pm) +pkg_manifest_file_list(struct pkg_manifest *pm) { - return ((const char *const *)pm->pkg_depend_list); + return ((const char *const *)pm->file_list); } const char *const * -pkg_manifest_pkg_file_list(struct pkg_manifest *pm) +pkg_manifest_exec_cmd_list(struct pkg_manifest *pm) { - return ((const char *const *)pm->pkg_file_list); + return ((const char *const *)pm->exec_list); } const char *const * -pkg_manifest_install_pkg_command_list(struct pkg_manifest *pm) +pkg_manifest_unexec_cmd_list(struct pkg_manifest *pm) { - return ((const char *const *)pm->pkg_install_list); + return ((const char *const *)pm->unexec_list); } const char *const * -pkg_manifest_deinstall_pkg_command_list(struct pkg_manifest *pm) +pkg_manifest_dirrm_cmd_list(struct pkg_manifest *pm) { - return ((const char *const *)pm->pkg_deinstall_list); + return ((const char *const *)pm->dirrm_list); } int -pkg_manifest_insert_pkg_conflict(struct pkg_manifest *pm, const char *name, +pkg_manifest_add_conflict(struct pkg_manifest *pm, const char *name, const char *version) { int status; @@ -234,33 +236,33 @@ rage_quit(); } - if (pm->pkg_conflict_count % 5 == 0) { - list = pm->pkg_conflict_list; - conflicts = pm->pkg_conflict_entries; - pm->pkg_conflict_list = realloc(list, sizeof(*list) * (pm->pkg_conflict_count + 6)); - pm->pkg_conflict_entries = realloc(conflicts, sizeof(*conflicts) * (pm->pkg_conflict_count + 6)); - if (pm->pkg_conflict_list == NULL || pm->pkg_conflict_entries == NULL) { - pm->pkg_conflict_list = list; - pm->pkg_conflict_entries = conflicts; + if (pm->conflict_count % 5 == 0) { + list = pm->conflict_list; + conflicts = pm->conflict_entries; + pm->conflict_list = realloc(list, sizeof(*list) * (pm->conflict_count + 6)); + pm->conflict_entries = realloc(conflicts, sizeof(*conflicts) * (pm->conflict_count + 6)); + if (pm->conflict_list == NULL || pm->conflict_entries == NULL) { + pm->conflict_list = list; + pm->conflict_entries = conflicts; return (PKG_MEMORY_ERR | PKG_NOT_OK); } } status = PKG_OK; - pc = &pm->pkg_conflict_entries[pm->pkg_conflict_count]; + pc = &pm->conflict_entries[pm->conflict_count]; pkg_conflict_init(pc); status |= pkg_conflict_set_name(pc, name); status |= pkg_conflict_set_version(pc, version); - pm->pkg_conflict_list[pm->pkg_conflict_count++] = pkg_conflict_name(pc); - pm->pkg_conflict_list[pm->pkg_conflict_count] = NULL; + pm->conflict_list[pm->conflict_count++] = pkg_conflict_name(pc); + pm->conflict_list[pm->conflict_count] = NULL; return (status); } int -pkg_manifest_insert_pkg_depend(struct pkg_manifest *pm, const char *name, +pkg_manifest_add_depend(struct pkg_manifest *pm, const char *name, const char *origin) { int status; @@ -273,28 +275,27 @@ rage_quit(); } - if (pm->pkg_depend_count % 5 == 0) { - list = pm->pkg_depend_list; - depends = pm->pkg_depend_entries; - pm->pkg_depend_list = realloc(list, sizeof(*list) * (pm->pkg_depend_count + 6)); - pm->pkg_depend_entries = realloc(depends, sizeof(*depends) * (pm->pkg_depend_count + 6)); - if (pm->pkg_depend_list == NULL || pm->pkg_depend_entries == NULL) { - pm->pkg_depend_list = list; - pm->pkg_depend_entries = depends; + if (pm->depend_count % 10 == 0) { + list = pm->depend_list; + depends = pm->depend_entries; + pm->depend_list = realloc(list, sizeof(*list) * (pm->depend_count + 11)); + pm->depend_entries = realloc(depends, sizeof(*depends) * (pm->depend_count + 11)); + if (pm->depend_list == NULL || pm->depend_entries == NULL) { + pm->depend_list = list; + pm->depend_entries = depends; return (PKG_MEMORY_ERR | PKG_NOT_OK); } } status = PKG_OK; - - pd = &pm->pkg_depend_entries[pm->pkg_depend_count]; + pd = &pm->depend_entries[pm->depend_count]; pkg_depend_init(pd); status |= pkg_depend_set_name(pd, name); status |= pkg_depend_set_origin(pd, origin); - pm->pkg_depend_list[pm->pkg_depend_count++] = pkg_depend_name(pd); - pm->pkg_depend_list[pm->pkg_depend_count] = NULL; + pm->depend_list[pm->depend_count++] = pkg_depend_name(pd); + pm->depend_list[pm->depend_count] = NULL; return (status); } @@ -302,7 +303,7 @@ /* Add a file to a manifest. */ int -pkg_manifest_insert_pkg_file(struct pkg_manifest *pm, const char *path, const char *md5, +pkg_manifest_add_file(struct pkg_manifest *pm, const char *path, const char *md5, const char *cwd, const char *mode, const char *owner, const char *group) { int status; @@ -316,21 +317,21 @@ rage_quit(); } - if (pm->pkg_file_count % 10 == 0) { - list = pm->pkg_file_list; - files = pm->pkg_file_entries; - pm->pkg_file_list = realloc(list, sizeof(*list) * (pm->pkg_file_count + 11)); - pm->pkg_file_entries = realloc(files, sizeof(*files) * (pm->pkg_file_count + 11)); - if (pm->pkg_file_list == NULL || pm->pkg_file_entries == NULL) { - pm->pkg_file_list = list; - pm->pkg_file_entries = files; + if (pm->file_count % 10 == 0) { + list = pm->file_list; + files = pm->file_entries; + pm->file_list = realloc(list, sizeof(*list) * (pm->file_count + 11)); + pm->file_entries = realloc(files, sizeof(*files) * (pm->file_count + 11)); + if (pm->file_list == NULL || pm->file_entries == NULL) { + pm->file_list = list; + pm->file_entries = files; return (PKG_MEMORY_ERR | PKG_NOT_OK); } } status = PKG_OK; - pf = &pm->pkg_file_entries[pm->pkg_file_count]; + pf = &pm->file_entries[pm->file_count]; pkg_file_init(pf); status |= pkg_file_set_path(pf, path); status |= pkg_file_set_md5(pf, md5); @@ -339,205 +340,206 @@ status |= pkg_file_set_owner(pf, owner); status |= pkg_file_set_group(pf, group); - pm->pkg_file_list[pm->pkg_file_count++] = pkg_file_path(pf); - pm->pkg_file_list[pm->pkg_file_count] = NULL; - + pm->file_list[pm->file_count++] = pkg_file_path(pf); + pm->file_list[pm->file_count] = NULL; + return (status); } -/* XXX: This method of storing commands is pretty much unacceptable. Take a look at - * previous attempts at a package library or try to devise a new way of storing this - * information. */ + +/* Add command strings to a package. Do not sort. */ + +/* Add an exec command to a manifest, which will be run at install time. Returns the + * status of the operation. */ int -pkg_manifest_insert_install_pkg_command(struct pkg_manifest *pm, int type, - const char *argument) { +pkg_manifest_add_exec_cmd(struct pkg_manifest *pm, const char *cmd) +{ int status; char **list; - struct pkg_command *commands; - struct pkg_command *pe; - if (argument == NULL) { - pkg_error_msg(""); - rage_quit(); - } + pkg_error_null_argument("command", cmd, __func__); - if (pm->pkg_install_count % 10 == 0) { - list = pm->pkg_install_list; - commands = pm->pkg_install_entries; - pm->pkg_install_list = realloc(list, sizeof(*list) * (pm->pkg_install_count + 11)); - pm->pkg_install_entries = realloc(commands, sizeof(*commands) * (pm->pkg_install_count + 11)); - if (pm->pkg_install_list == NULL || pm->pkg_install_entries == NULL) { - pm->pkg_install_list = list; - pm->pkg_install_entries = commands; + if (pm->exec_count % 10 == 0) { + list = pm->exec_list; + pm->exec_list = realloc(list, sizeof(*list) * (pm->exec_count + 11)); + if (pm->exec_list == NULL) { + pm->exec_list = list; return (PKG_MEMORY_ERR | PKG_NOT_OK); } } + + status = pkg_util_strdup(cmd, &pm->exec_list[pm->exec_count++]); + pm->exec_list[pm->exec_count] = NULL; + + return (status); +} + +/* Add an unexec command to a manifest, which will be executed at deinstall time. + * Returns the status of the operation. */ + +int +pkg_manifest_add_unexec_cmd(struct pkg_manifest *pm, const char *cmd) +{ + int status; + char **list; - status = PKG_OK; + pkg_error_null_argument("command", cmd, __func__); - pe = &pm->pkg_install_entries[pm->pkg_install_count]; - pkg_command_init(pe); - status |= pkg_command_set_type(pe, type); - status |= pkg_command_set_argument(pe, argument); + if (pm->unexec_count % 10 == 0) { + list = pm->unexec_list; + pm->unexec_list = realloc(list, sizeof(*list) * (pm->unexec_count + 11)); + if (pm->unexec_list == NULL) { + pm->unexec_list = list; + return (PKG_MEMORY_ERR | PKG_NOT_OK); + } + } - pm->pkg_install_list[pm->pkg_install_count++] = pkg_command_argument(pe); - pm->pkg_install_list[pm->pkg_install_count] = NULL; + status = pkg_util_strdup(cmd, &pm->unexec_list[pm->unexec_count++]); + pm->unexec_list[pm->unexec_count] = NULL; return (status); } +/* Add a dirrm command to a manifest that will remove the directory dir at deinstall + * time. Returns the status of the operation. */ + int -pkg_manifest_insert_deinstall_pkg_command(struct pkg_manifest *pm, int type, - const char *argument) { +pkg_manifest_add_dirrm_cmd(struct pkg_manifest *pm, const char *dir) +{ int status; char **list; - struct pkg_command *commands; - struct pkg_command *pe; - if (argument == NULL) { - pkg_error_msg(""); - rage_quit(); - } + pkg_error_null_argument("directory", dir, __func__); - if (pm->pkg_deinstall_count % 10 == 0) { - list = pm->pkg_deinstall_list; - commands = pm->pkg_deinstall_entries; - pm->pkg_deinstall_list = realloc(list, sizeof(*list) * (pm->pkg_deinstall_count + 11)); - pm->pkg_deinstall_entries = realloc(commands, sizeof(*commands) * (pm->pkg_deinstall_count + 11)); - if (pm->pkg_deinstall_list == NULL || pm->pkg_deinstall_entries == NULL) { - pm->pkg_deinstall_list = list; - pm->pkg_deinstall_entries = commands; + if (pm->dirrm_count % 10 == 0) { + list = pm->dirrm_list; + pm->dirrm_list = realloc(list, sizeof(*list) * (pm->dirrm_count + 11)); + if (pm->dirrm_list == NULL) { + pm->dirrm_list = list; return (PKG_MEMORY_ERR | PKG_NOT_OK); } } - status = PKG_OK; - - pe = &pm->pkg_deinstall_entries[pm->pkg_deinstall_count]; - pkg_command_init(pe); - status |= pkg_command_set_type(pe, type); - status |= pkg_command_set_argument(pe, argument); - - pm->pkg_deinstall_list[pm->pkg_deinstall_count++] = pkg_command_argument(pe); - pm->pkg_deinstall_list[pm->pkg_deinstall_count] = NULL; + status = pkg_util_strdup(dir, &pm->dirrm_list[pm->dirrm_count++]); + pm->dirrm_list[pm->dirrm_count] = NULL; return (status); } void -pkg_manifest_remove_pkg_conflict(struct pkg_manifest *pm, const char *name) +pkg_manifest_remove_conflict(struct pkg_manifest *pm, const char *name) { pkg_manifest_check_magic(pm, __func__); return; } void -pkg_manifest_remove_pkg_depend(struct pkg_manifest *pm, const char *name) +pkg_manifest_remove_depend(struct pkg_manifest *pm, const char *name) { pkg_manifest_check_magic(pm, __func__); return; } void -pkg_manifest_remove_pkg_file(struct pkg_manifest *pm, const char *path) +pkg_manifest_remove_file(struct pkg_manifest *pm, const char *path) { pkg_manifest_check_magic(pm, __func__); return; } void -pkg_manifest_remove_install_pkg_command(struct pkg_manifest *pm, const char *argument) +pkg_manifest_remove_exec_cmd(struct pkg_manifest *pm, int cmdidx) { pkg_manifest_check_magic(pm, __func__); return; } void -pkg_manifest_remove_deinstall_pkg_command(struct pkg_manifest *pm, const char *argument) +pkg_manifest_remove_unexec_cmd(struct pkg_manifest *pm, int cmdidx) { pkg_manifest_check_magic(pm, __func__); return; } static void -pkg_manifest_clear_pkg_conflict_entries(struct pkg_manifest *pm) +pkg_manifest_clear_conflict_entries(struct pkg_manifest *pm) { pkg_manifest_check_magic(pm, __func__); - while (pm->pkg_conflict_count > 0) - pkg_manifest_remove_pkg_conflict(pm, pm->pkg_conflict_entries[0].name); + while (pm->conflict_count > 0) + pkg_manifest_remove_conflict(pm, pm->conflict_entries[0].name); } static void -pkg_manifest_clear_pkg_depend_entries(struct pkg_manifest *pm) +pkg_manifest_clear_depend_entries(struct pkg_manifest *pm) { pkg_manifest_check_magic(pm, __func__); - while (pm->pkg_depend_count > 0) - pkg_manifest_remove_pkg_depend(pm, pm->pkg_depend_entries[0].name); + while (pm->depend_count > 0) + pkg_manifest_remove_depend(pm, pm->depend_entries[0].name); } static void -pkg_manifest_clear_pkg_file_entries(struct pkg_manifest *pm) +pkg_manifest_clear_file_entries(struct pkg_manifest *pm) { pkg_manifest_check_magic(pm, __func__); - while (pm->pkg_file_count > 0) - pkg_manifest_remove_pkg_file(pm, pm->pkg_file_entries[0].path); + while (pm->file_count > 0) + pkg_manifest_remove_file(pm, pm->file_entries[0].path); } static void -pkg_manifest_clear_install_pkg_commands(struct pkg_manifest *pm) +pkg_manifest_clear_exec_list(struct pkg_manifest *pm) { pkg_manifest_check_magic(pm, __func__); - while(pm->pkg_install_count > 0) - pkg_manifest_remove_install_pkg_command(pm, pm->pkg_install_entries[0].argument); + while (pm->exec_count > 0) + pkg_manifest_remove_exec_cmd(pm, pm->exec_count); } static void -pkg_manifest_clear_deinstall_pkg_commands(struct pkg_manifest *pm) +pkg_manifest_clear_unexec_list(struct pkg_manifest *pm) { pkg_manifest_check_magic(pm, __func__); - while(pm->pkg_deinstall_count > 0) - pkg_manifest_remove_deinstall_pkg_command(pm, pm->pkg_deinstall_entries[0].argument); + while (pm->unexec_count > 0) + pkg_manifest_remove_unexec_cmd(pm, pm->unexec_count); } struct pkg_conflict * -pkg_manifest_select_pkg_conflict(struct pkg_manifest *pm, const char *name) +pkg_manifest_select_conflict(struct pkg_manifest *pm, const char *name) { int i; pkg_manifest_check_magic(pm, __func__); - for (i = 0; i < pm->pkg_conflict_count; ++i) - if (strcmp(pm->pkg_conflict_entries[i].name, name) == 0) - return (&pm->pkg_conflict_entries[i]); + for (i = 0; i < pm->conflict_count; ++i) + if (strcmp(pm->conflict_entries[i].name, name) == 0) + return (&pm->conflict_entries[i]); return (NULL); } struct pkg_depend * -pkg_manifest_select_pkg_depend(struct pkg_manifest *pm, const char *name) >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Wed Aug 12 14:14:22 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 72A851065708; Wed, 12 Aug 2009 14:14:22 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 12CA91065702 for ; Wed, 12 Aug 2009 14:14:22 +0000 (UTC) (envelope-from marinosi@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 001E78FC5E for ; Wed, 12 Aug 2009 14:14:21 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7CEELcl000934 for ; Wed, 12 Aug 2009 14:14:21 GMT (envelope-from marinosi@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7CEEL7N000932 for perforce@freebsd.org; Wed, 12 Aug 2009 14:14:21 GMT (envelope-from marinosi@FreeBSD.org) Date: Wed, 12 Aug 2009 14:14:21 GMT Message-Id: <200908121414.n7CEEL7N000932@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marinosi@FreeBSD.org using -f From: Ilias Marinos To: Perforce Change Reviews Cc: Subject: PERFORCE change 167246 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 14:14:23 -0000 http://perforce.freebsd.org/chv.cgi?CH=167246 Change 167246 by marinosi@marinosi_redrum on 2009/08/12 14:13:59 - Created auditon_slice_internal() function that does all the actual work for manipulating auditing. - Modified auditon(2) and auditon_slice(2) to work as wrappers to the previous function. - Tested and works (at least with the base trail). Affected files ... .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#18 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.h#14 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_syscalls.c#11 edit Differences ... ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#18 (text) ==== @@ -817,17 +817,8 @@ * never be the base slice as it is not a slice queue element. */ int -audit_slice_destroy(char *as_name) +audit_slice_destroy(struct audit_slice *as) { - int error; - struct audit_slice *as = NULL; - - error = audit_slice_lookup(as_name, as); - if (error) - return (1); - - if ( as == audit_base_slice ) - return (1); /* Cannot destroy base slice */ AUDIT_SLICES_LOCK(); /* @@ -946,23 +937,17 @@ /* * audit_slice_lookup() performs a linear lookup in the audit slices queue - * bases on the slice name and sets up as to point to the actual slice - * instance. - * Returns '0' on success, error code on failure. + * based on the slice name. + * Returns a ptr to the actual slice on success, NULL if slice is not found. */ -int -audit_slice_lookup(char *as_name, struct audit_slice *as) +struct audit_slice +*audit_slice_lookup(char *as_name) { - int nbytes; + struct audit_slice *cur = NULL; - nbytes = strlen(as_name); - if ( nbytes <= 0 || nbytes > AUDIT_SLICE_NAME_LEN ) - return (EINVAL); - if ( strcmp(as_name, "audit_base_slice") == 0 ) { - as = audit_base_slice; - return (0); + return (audit_base_slice); } /* @@ -972,15 +957,478 @@ AUDIT_SLICES_LOCK(); TAILQ_FOREACH(cur, &audit_slice_q, as_q) { if ( strcmp(cur->as_name, as_name) == 0 ) { - as = cur; AUDIT_SLICES_UNLOCK(); - return (0); + return (cur); } } /* * On failure.(slice not found) */ - return (1); + return (NULL); + +} + +/* + * auditon_slice_internal() performs the actual work for auditon_slice(2) and + * auditon(2) system calls. + */ +int +auditon_slice_internal(struct thread *td, int cmd, char *as_name, + void *data, u_int length) +{ + + struct audit_slice *as = NULL; + struct ucred *cred, *newcred, *oldcred; + int error; + union auditon_udata udata; + struct proc *tp; + + /* + * Find the slice we should operate on. + */ + as = audit_slice_lookup(as_name); + + /* + * The only way for 'as' to be NULL is when we want to create a new + * slice. + */ + if ((as == NULL) && (cmd != A_CREATESLICE)) + return (EINVAL); + + memset((void *)&udata, 0, sizeof(udata)); + + /* + * Some of the GET commands use the arguments too. + */ + switch (cmd) { + case A_SETPOLICY: + case A_OLDSETPOLICY: + case A_SETKMASK: + case A_SETQCTRL: + case A_OLDSETQCTRL: + case A_SETSTAT: + case A_SETUMASK: + case A_SETSMASK: + case A_SETCOND: + case A_OLDSETCOND: + case A_SETCLASS: + case A_SETPMASK: + case A_SETFSIZE: + case A_SETKAUDIT: + case A_GETCLASS: + case A_GETPINFO: + case A_GETPINFO_ADDR: + case A_SENDTRIGGER: + error = copyin(data, (void *)&udata, length); + if (error) + return (error); + AUDIT_ARG_AUDITON(&udata); + break; + } + + /* + * XXXAUDIT: Locking? + */ + switch (cmd) { + case A_OLDGETPOLICY: + case A_GETPOLICY: + if (length == sizeof(udata.au_policy64)) { + if (!as->audit_fail_stop) + udata.au_policy64 |= AUDIT_CNT; + if (as->audit_panic_on_write_fail) + udata.au_policy64 |= AUDIT_AHLT; + if (as->audit_argv) + udata.au_policy64 |= AUDIT_ARGV; + if (as->audit_arge) + udata.au_policy64 |= AUDIT_ARGE; + break; + } + if (length != sizeof(udata.au_policy)) + return (EINVAL); + if (!as->audit_fail_stop) + udata.au_policy |= AUDIT_CNT; + if (as->audit_panic_on_write_fail) + udata.au_policy |= AUDIT_AHLT; + if (as->audit_argv) + udata.au_policy |= AUDIT_ARGV; + if (as->audit_arge) + udata.au_policy |= AUDIT_ARGE; + break; + + case A_OLDSETPOLICY: + case A_SETPOLICY: + if (length == sizeof(udata.au_policy64)) { + if (udata.au_policy & (~AUDIT_CNT|AUDIT_AHLT| + AUDIT_ARGV|AUDIT_ARGE)) + return (EINVAL); + as->audit_fail_stop = ((udata.au_policy64 + & AUDIT_CNT) == 0); + as->audit_panic_on_write_fail = + (udata.au_policy64 & AUDIT_AHLT); + as->audit_argv = (udata.au_policy64 + & AUDIT_ARGV); + as->audit_arge = (udata.au_policy64 + & AUDIT_ARGE); + break; + } + if (length != sizeof(udata.au_policy)) + return (EINVAL); + if (udata.au_policy & ~(AUDIT_CNT|AUDIT_AHLT|AUDIT_ARGV| + AUDIT_ARGE)) + return (EINVAL); + /* + * XXX - Need to wake up waiters if the policy relaxes? + */ + as->audit_fail_stop = + ((udata.au_policy & AUDIT_CNT) == 0); + as->audit_panic_on_write_fail = + (udata.au_policy & AUDIT_AHLT); + as->audit_argv = + (udata.au_policy & AUDIT_ARGV); + as->audit_arge = + (udata.au_policy & AUDIT_ARGE); + break; + + case A_GETKMASK: + if (length != sizeof(udata.au_mask)) + return (EINVAL); + udata.au_mask = as->audit_nae_mask; + break; + + case A_SETKMASK: + if (length != sizeof(udata.au_mask)) + return (EINVAL); + as->audit_nae_mask = udata.au_mask; + break; + + case A_OLDGETQCTRL: + case A_GETQCTRL: + if (length == sizeof(udata.au_qctrl64)) { + udata.au_qctrl64.aq64_hiwater = + (u_int64_t)as->audit_qctrl.aq_hiwater; + udata.au_qctrl64.aq64_lowater = + (u_int64_t)as->audit_qctrl.aq_lowater; + udata.au_qctrl64.aq64_bufsz = + (u_int64_t)as->audit_qctrl.aq_bufsz; + udata.au_qctrl64.aq64_minfree = + (u_int64_t)as->audit_qctrl.aq_minfree; + break; + } + if (length != sizeof(udata.au_qctrl)) + return (EINVAL); + udata.au_qctrl = as->audit_qctrl; + break; + + case A_OLDSETQCTRL: + case A_SETQCTRL: + if (length == sizeof(udata.au_qctrl64)) { + if ((udata.au_qctrl64.aq64_hiwater > AQ_MAXHIGH) || + (udata.au_qctrl64.aq64_lowater >= + udata.au_qctrl.aq_hiwater) || + (udata.au_qctrl64.aq64_bufsz > AQ_MAXBUFSZ) || + (udata.au_qctrl64.aq64_minfree < 0) || + (udata.au_qctrl64.aq64_minfree > 100)) + return (EINVAL); + as->audit_qctrl.aq_hiwater = + (int)udata.au_qctrl64.aq64_hiwater; + as->audit_qctrl.aq_lowater = + (int)udata.au_qctrl64.aq64_lowater; + as->audit_qctrl.aq_bufsz = + (int)udata.au_qctrl64.aq64_bufsz; + as->audit_qctrl.aq_minfree = + (int)udata.au_qctrl64.aq64_minfree; + /* Not used. */ + as->audit_qctrl.aq_delay = -1; + break; + } + if (length != sizeof(udata.au_qctrl)) + return (EINVAL); + if ((udata.au_qctrl.aq_hiwater > AQ_MAXHIGH) || + (udata.au_qctrl.aq_lowater >= udata.au_qctrl.aq_hiwater) || + (udata.au_qctrl.aq_bufsz > AQ_MAXBUFSZ) || + (udata.au_qctrl.aq_minfree < 0) || + (udata.au_qctrl.aq_minfree > 100)) + return (EINVAL); + + as->audit_qctrl = udata.au_qctrl; + /* XXX The queue delay value isn't used with the kernel. */ + as->audit_qctrl.aq_delay = -1; + break; + + case A_GETCWD: + return (ENOSYS); + break; + + case A_GETCAR: + return (ENOSYS); + break; + + case A_GETSTAT: + return (ENOSYS); + break; + + case A_SETSTAT: + return (ENOSYS); + break; + + case A_SETUMASK: + return (ENOSYS); + break; + + case A_SETSMASK: + return (ENOSYS); + break; + + case A_OLDGETCOND: + case A_GETCOND: + if (length == sizeof(udata.au_cond64)) { + if (as->audit_enabled + && !as->audit_suspended) + udata.au_cond64 = AUC_AUDITING; + else + udata.au_cond64 = AUC_NOAUDIT; + break; + } + if (length != sizeof(udata.au_cond)) + return (EINVAL); + if (as->audit_enabled + && !as->audit_suspended) + udata.au_cond = AUC_AUDITING; + else + udata.au_cond = AUC_NOAUDIT; + break; + + case A_OLDSETCOND: + case A_SETCOND: + if (length == sizeof(udata.au_cond64)) { + if (udata.au_cond64 == AUC_NOAUDIT) + as->audit_suspended = 1; + if (udata.au_cond64 == AUC_AUDITING) + as->audit_suspended = 0; + if (udata.au_cond64 == AUC_DISABLED) { + as->audit_suspended = 1; + audit_shutdown(NULL, 0); + } + audit_suspended = as->audit_suspended; + break; + } + if (length != sizeof(udata.au_cond)) + return (EINVAL); + if (udata.au_cond == AUC_NOAUDIT) + as->audit_suspended = 1; + if (udata.au_cond == AUC_AUDITING) + as->audit_suspended = 0; + if (udata.au_cond == AUC_DISABLED) { + as->audit_suspended = 1; + audit_shutdown(NULL, 0); + } + audit_suspended = as->audit_suspended; + break; + + case A_GETCLASS: + if (length != sizeof(udata.au_evclass)) + return (EINVAL); + udata.au_evclass.ec_class = au_event_class( + udata.au_evclass.ec_number); + break; + + case A_SETCLASS: + if (length != sizeof(udata.au_evclass)) + return (EINVAL); + au_evclassmap_insert(udata.au_evclass.ec_number, + udata.au_evclass.ec_class); + break; + + case A_GETPINFO: + if (length != sizeof(udata.au_aupinfo)) + return (EINVAL); + if (udata.au_aupinfo.ap_pid < 1) + return (ESRCH); + if ((tp = pfind(udata.au_aupinfo.ap_pid)) == NULL) + return (ESRCH); + if ((error = p_cansee(td, tp)) != 0) { + PROC_UNLOCK(tp); + return (error); + } + cred = tp->p_ucred; + if (cred->cr_audit.ai_termid.at_type == AU_IPv6) { + PROC_UNLOCK(tp); + return (EINVAL); + } + udata.au_aupinfo.ap_auid = cred->cr_audit.ai_auid; + udata.au_aupinfo.ap_mask.am_success = + cred->cr_audit.ai_mask.am_success; + udata.au_aupinfo.ap_mask.am_failure = + cred->cr_audit.ai_mask.am_failure; + udata.au_aupinfo.ap_termid.machine = + cred->cr_audit.ai_termid.at_addr[0]; + udata.au_aupinfo.ap_termid.port = + (dev_t)cred->cr_audit.ai_termid.at_port; + udata.au_aupinfo.ap_asid = cred->cr_audit.ai_asid; + PROC_UNLOCK(tp); + break; + + case A_SETPMASK: + if (length != sizeof(udata.au_aupinfo)) + return (EINVAL); + if (udata.au_aupinfo.ap_pid < 1) + return (ESRCH); + newcred = crget(); + if ((tp = pfind(udata.au_aupinfo.ap_pid)) == NULL) { + crfree(newcred); + return (ESRCH); + } + if ((error = p_cansee(td, tp)) != 0) { + PROC_UNLOCK(tp); + crfree(newcred); + return (error); + } + oldcred = tp->p_ucred; + crcopy(newcred, oldcred); + newcred->cr_audit.ai_mask.am_success = + udata.au_aupinfo.ap_mask.am_success; + newcred->cr_audit.ai_mask.am_failure = + udata.au_aupinfo.ap_mask.am_failure; + td->td_proc->p_ucred = newcred; + PROC_UNLOCK(tp); + crfree(oldcred); + break; + + case A_SETFSIZE: + if (length != sizeof(udata.au_fstat)) + return (EINVAL); + if ((udata.au_fstat.af_filesz != 0) && + (udata.au_fstat.af_filesz < MIN_AUDIT_FILE_SIZE)) + return (EINVAL); + as->audit_fstat.af_filesz + = udata.au_fstat.af_filesz; + break; + + case A_GETFSIZE: + if (length != sizeof(udata.au_fstat)) + return (EINVAL); + udata.au_fstat.af_filesz + = as->audit_fstat.af_filesz; + udata.au_fstat.af_currsz + = as->audit_fstat.af_currsz; + break; + + case A_GETPINFO_ADDR: + if (length != sizeof(udata.au_aupinfo_addr)) + return (EINVAL); + if (udata.au_aupinfo_addr.ap_pid < 1) + return (ESRCH); + if ((tp = pfind(udata.au_aupinfo_addr.ap_pid)) == NULL) + return (ESRCH); + cred = tp->p_ucred; + udata.au_aupinfo_addr.ap_auid = cred->cr_audit.ai_auid; + udata.au_aupinfo_addr.ap_mask.am_success = + cred->cr_audit.ai_mask.am_success; + udata.au_aupinfo_addr.ap_mask.am_failure = + cred->cr_audit.ai_mask.am_failure; + udata.au_aupinfo_addr.ap_termid = cred->cr_audit.ai_termid; + udata.au_aupinfo_addr.ap_asid = cred->cr_audit.ai_asid; + PROC_UNLOCK(tp); + break; + + case A_GETKAUDIT: + if (length != sizeof(udata.au_kau_info)) + return (EINVAL); + audit_get_kinfo(&udata.au_kau_info); + break; + + case A_SETKAUDIT: + if (length != sizeof(udata.au_kau_info)) + return (EINVAL); + if (udata.au_kau_info.ai_termid.at_type != AU_IPv4 && + udata.au_kau_info.ai_termid.at_type != AU_IPv6) + return (EINVAL); + audit_set_kinfo(&udata.au_kau_info); + break; + + case A_SENDTRIGGER: + if (length != sizeof(udata.au_trigger)) + return (EINVAL); + if ((udata.au_trigger < AUDIT_TRIGGER_MIN) || + (udata.au_trigger > AUDIT_TRIGGER_MAX)) + return (EINVAL); + return (audit_send_trigger(udata.au_trigger)); + + /* + * XXXRW: as_name use a userspace character array, not a kernel space + * string pointer. We need to copyinstr() to a kernel character + * array for the purposes of looking it up, etc. + * FIXED. Note: Look at auditon_slice(2). + * + * XXXRW: Possibly audit_slice_*() should be able to return errors-- + * for example, if there's a name collision on creating slices, or i + * a slice can't be found for removal. + * FIXED. + * With the current implementation, it is not possible to reach to + * this point. An error will be returned at the start of this + * function. + */ + case A_CREATESLICE: + if (length != sizeof(udata.au_slice)) + return (EINVAL); + /* We shouldn't call this command for base slice! */ + if (as == audit_base_slice) + return (EINVAL); + /* If slice already exists return an error */ + if ( as != NULL ) + return (EEXIST); + audit_slice_create(as_name); + break; + + case A_UPDATESLICE: + if (length != sizeof(udata.au_slice)) + return (EINVAL); + return (0); + + case A_GETSLICE: + if (length != sizeof(udata.au_slice)) + return (EINVAL); + return (0); + + case A_REMOVESLICE: + if (length != sizeof(udata.au_slice)) + return (EINVAL); + /* We cannot remove base slice! */ + if (as == audit_base_slice) + return (EINVAL); + /* Destroy slice */ + audit_slice_destroy(as); + break; + + default: + return (EINVAL); + } + + /* + * Copy data back to userspace for the GET comands. + */ + switch (cmd) { + case A_GETPOLICY: + case A_OLDGETPOLICY: + case A_GETKMASK: + case A_GETQCTRL: + case A_OLDGETQCTRL: + case A_GETCWD: + case A_GETCAR: + case A_GETSTAT: + case A_GETCOND: + case A_OLDGETCOND: + case A_GETCLASS: + case A_GETPINFO: + case A_GETFSIZE: + case A_GETPINFO_ADDR: + case A_GETKAUDIT: + error = copyout((void *)&udata, data, length); + if (error) + return (error); + break; + } + return (0); } ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.h#14 (text+ko) ==== @@ -190,9 +190,11 @@ void audit_worker_start(struct audit_slice *as); void audit_slice_init(struct audit_slice *as, char *name); void audit_slice_create(char *name); -int audit_slice_destroy(char *as_name); +int audit_slice_destroy(struct audit_slice *as); void audit_slice_cdev_init(struct audit_slice *as); int audit_slice_commit_rec(void *rec, struct audit_slice *as); -int audit_slice_lookup(char *as_name, struct audit_slice *as); +struct audit_slice *audit_slice_lookup(char *as_name); +int auditon_slice_internal(struct thread *td, int cmd, char *as_name, void *data, + u_int length); #endif /* ! _SECURITY_AUDIT_SLICE_H_ */ ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_syscalls.c#11 (text) ==== @@ -161,8 +161,31 @@ auditon(struct thread *td, struct auditon_args *uap) { - /* Dummy syscall -- to be changed */ - return (ENOSYS); + int error, ret; + + if (jailed(td->td_ucred)) + return (ENOSYS); + AUDIT_ARG_CMD(uap->cmd); + +#ifdef MAC + error = mac_system_check_auditon(td->td_ucred, uap->cmd); + if (error) + return (error); +#endif + + error = priv_check(td, PRIV_AUDIT_CONTROL); + if (error) + return (error); + + if ((uap->length <= 0) || (uap->length > sizeof(union auditon_udata))) + return (EINVAL); + + /* + * auditon(2) always selects audit_base_slice to operate on. + */ + ret = auditon_slice_internal(td, uap->cmd, "audit_base_slice", + uap->data, uap->length); + return (ret); } /* @@ -172,11 +195,8 @@ int auditon_slice(struct thread *td, struct auditon_slice_args *uap) { - struct ucred *cred, *newcred, *oldcred; - struct audit_slice *as = NULL; - int error; - union auditon_udata udata; - struct proc *tp; + + int error, ret, nbytes; char as_name[AUDIT_SLICE_NAME_LEN]; if (jailed(td->td_ucred)) @@ -198,443 +218,23 @@ return (EINVAL); /* - * Copyin the name of the slice we need to operate on. + * Check slice name. */ - error = copyinstr(uap->name, as_name, AUDIT_SLICE_NAME_LEN, NULL); - if (error) + nbytes = strlen(uap->name); + if ( nbytes <= 0 || nbytes > AUDIT_SLICE_NAME_LEN ) return (EINVAL); /* - * Find the slice we should operate on. + * Copyin the name of the slice we need to operate on. */ - error = audit_slice_lookup(as_name, as); + error = copyinstr(uap->name, as_name, AUDIT_SLICE_NAME_LEN, NULL); if (error) - return (error); - - memset((void *)&udata, 0, sizeof(udata)); - - /* - * Some of the GET commands use the arguments too. - */ - switch (uap->cmd) { - case A_SETPOLICY: - case A_OLDSETPOLICY: - case A_SETKMASK: - case A_SETQCTRL: - case A_OLDSETQCTRL: - case A_SETSTAT: - case A_SETUMASK: - case A_SETSMASK: - case A_SETCOND: - case A_OLDSETCOND: - case A_SETCLASS: - case A_SETPMASK: - case A_SETFSIZE: - case A_SETKAUDIT: - case A_GETCLASS: - case A_GETPINFO: - case A_GETPINFO_ADDR: - case A_SENDTRIGGER: - error = copyin(uap->data, (void *)&udata, uap->length); - if (error) - return (error); - AUDIT_ARG_AUDITON(&udata); - break; - } - - /* - * XXXAUDIT: Locking? - */ - switch (uap->cmd) { - case A_OLDGETPOLICY: - case A_GETPOLICY: - if (uap->length == sizeof(udata.au_policy64)) { - if (!as->audit_fail_stop) - udata.au_policy64 |= AUDIT_CNT; - if (as->audit_panic_on_write_fail) - udata.au_policy64 |= AUDIT_AHLT; - if (as->audit_argv) - udata.au_policy64 |= AUDIT_ARGV; - if (as->audit_arge) - udata.au_policy64 |= AUDIT_ARGE; - break; - } - if (uap->length != sizeof(udata.au_policy)) - return (EINVAL); - if (!as->audit_fail_stop) - udata.au_policy |= AUDIT_CNT; - if (as->audit_panic_on_write_fail) - udata.au_policy |= AUDIT_AHLT; - if (as->audit_argv) - udata.au_policy |= AUDIT_ARGV; - if (as->audit_arge) - udata.au_policy |= AUDIT_ARGE; - break; - - case A_OLDSETPOLICY: - case A_SETPOLICY: - if (uap->length == sizeof(udata.au_policy64)) { - if (udata.au_policy & (~AUDIT_CNT|AUDIT_AHLT| - AUDIT_ARGV|AUDIT_ARGE)) - return (EINVAL); - as->audit_fail_stop = ((udata.au_policy64 - & AUDIT_CNT) == 0); - as->audit_panic_on_write_fail = - (udata.au_policy64 & AUDIT_AHLT); - as->audit_argv = (udata.au_policy64 - & AUDIT_ARGV); - as->audit_arge = (udata.au_policy64 - & AUDIT_ARGE); - break; - } - if (uap->length != sizeof(udata.au_policy)) - return (EINVAL); - if (udata.au_policy & ~(AUDIT_CNT|AUDIT_AHLT|AUDIT_ARGV| - AUDIT_ARGE)) - return (EINVAL); - /* - * XXX - Need to wake up waiters if the policy relaxes? - */ - as->audit_fail_stop = - ((udata.au_policy & AUDIT_CNT) == 0); - as->audit_panic_on_write_fail = - (udata.au_policy & AUDIT_AHLT); - as->audit_argv = - (udata.au_policy & AUDIT_ARGV); - as->audit_arge = - (udata.au_policy & AUDIT_ARGE); - break; - - case A_GETKMASK: - if (uap->length != sizeof(udata.au_mask)) - return (EINVAL); - udata.au_mask = as->audit_nae_mask; - break; - - case A_SETKMASK: - if (uap->length != sizeof(udata.au_mask)) - return (EINVAL); - as->audit_nae_mask = udata.au_mask; - break; - - case A_OLDGETQCTRL: - case A_GETQCTRL: - if (uap->length == sizeof(udata.au_qctrl64)) { - udata.au_qctrl64.aq64_hiwater = - (u_int64_t)as->audit_qctrl.aq_hiwater; - udata.au_qctrl64.aq64_lowater = - (u_int64_t)as->audit_qctrl.aq_lowater; - udata.au_qctrl64.aq64_bufsz = - (u_int64_t)as->audit_qctrl.aq_bufsz; - udata.au_qctrl64.aq64_minfree = - (u_int64_t)as->audit_qctrl.aq_minfree; - break; - } - if (uap->length != sizeof(udata.au_qctrl)) - return (EINVAL); - udata.au_qctrl = as->audit_qctrl; - break; - - case A_OLDSETQCTRL: - case A_SETQCTRL: - if (uap->length == sizeof(udata.au_qctrl64)) { - if ((udata.au_qctrl64.aq64_hiwater > AQ_MAXHIGH) || - (udata.au_qctrl64.aq64_lowater >= - udata.au_qctrl.aq_hiwater) || - (udata.au_qctrl64.aq64_bufsz > AQ_MAXBUFSZ) || - (udata.au_qctrl64.aq64_minfree < 0) || - (udata.au_qctrl64.aq64_minfree > 100)) - return (EINVAL); - as->audit_qctrl.aq_hiwater = - (int)udata.au_qctrl64.aq64_hiwater; - as->audit_qctrl.aq_lowater = - (int)udata.au_qctrl64.aq64_lowater; - as->audit_qctrl.aq_bufsz = - (int)udata.au_qctrl64.aq64_bufsz; - as->audit_qctrl.aq_minfree = - (int)udata.au_qctrl64.aq64_minfree; - /* Not used. */ - as->audit_qctrl.aq_delay = -1; - break; - } - if (uap->length != sizeof(udata.au_qctrl)) - return (EINVAL); - if ((udata.au_qctrl.aq_hiwater > AQ_MAXHIGH) || - (udata.au_qctrl.aq_lowater >= udata.au_qctrl.aq_hiwater) || - (udata.au_qctrl.aq_bufsz > AQ_MAXBUFSZ) || - (udata.au_qctrl.aq_minfree < 0) || - (udata.au_qctrl.aq_minfree > 100)) - return (EINVAL); - - as->audit_qctrl = udata.au_qctrl; - /* XXX The queue delay value isn't used with the kernel. */ - as->audit_qctrl.aq_delay = -1; - break; - - case A_GETCWD: - return (ENOSYS); - break; - - case A_GETCAR: - return (ENOSYS); - break; - - case A_GETSTAT: - return (ENOSYS); - break; - - case A_SETSTAT: - return (ENOSYS); - break; - - case A_SETUMASK: - return (ENOSYS); - break; - - case A_SETSMASK: - return (ENOSYS); - break; - - case A_OLDGETCOND: - case A_GETCOND: - if (uap->length == sizeof(udata.au_cond64)) { - if (as->audit_enabled - && !as->audit_suspended) - udata.au_cond64 = AUC_AUDITING; - else - udata.au_cond64 = AUC_NOAUDIT; - break; - } - if (uap->length != sizeof(udata.au_cond)) - return (EINVAL); - if (as->audit_enabled - && !as->audit_suspended) - udata.au_cond = AUC_AUDITING; - else - udata.au_cond = AUC_NOAUDIT; - break; - - case A_OLDSETCOND: - case A_SETCOND: - if (uap->length == sizeof(udata.au_cond64)) { - if (udata.au_cond64 == AUC_NOAUDIT) - as->audit_suspended = 1; - if (udata.au_cond64 == AUC_AUDITING) - as->audit_suspended = 0; - if (udata.au_cond64 == AUC_DISABLED) { - as->audit_suspended = 1; - audit_shutdown(NULL, 0); - } - audit_suspended = as->audit_suspended; - break; - } - if (uap->length != sizeof(udata.au_cond)) - return (EINVAL); - if (udata.au_cond == AUC_NOAUDIT) - as->audit_suspended = 1; - if (udata.au_cond == AUC_AUDITING) - as->audit_suspended = 0; - if (udata.au_cond == AUC_DISABLED) { - as->audit_suspended = 1; - audit_shutdown(NULL, 0); - } - audit_suspended = as->audit_suspended; - break; - - case A_GETCLASS: - if (uap->length != sizeof(udata.au_evclass)) - return (EINVAL); - udata.au_evclass.ec_class = au_event_class( - udata.au_evclass.ec_number); - break; - - case A_SETCLASS: - if (uap->length != sizeof(udata.au_evclass)) - return (EINVAL); - au_evclassmap_insert(udata.au_evclass.ec_number, - udata.au_evclass.ec_class); - break; - - case A_GETPINFO: - if (uap->length != sizeof(udata.au_aupinfo)) - return (EINVAL); - if (udata.au_aupinfo.ap_pid < 1) - return (ESRCH); - if ((tp = pfind(udata.au_aupinfo.ap_pid)) == NULL) - return (ESRCH); - if ((error = p_cansee(td, tp)) != 0) { - PROC_UNLOCK(tp); - return (error); - } - cred = tp->p_ucred; - if (cred->cr_audit.ai_termid.at_type == AU_IPv6) { - PROC_UNLOCK(tp); - return (EINVAL); - } - udata.au_aupinfo.ap_auid = cred->cr_audit.ai_auid; - udata.au_aupinfo.ap_mask.am_success = - cred->cr_audit.ai_mask.am_success; - udata.au_aupinfo.ap_mask.am_failure = - cred->cr_audit.ai_mask.am_failure; - udata.au_aupinfo.ap_termid.machine = - cred->cr_audit.ai_termid.at_addr[0]; - udata.au_aupinfo.ap_termid.port = - (dev_t)cred->cr_audit.ai_termid.at_port; - udata.au_aupinfo.ap_asid = cred->cr_audit.ai_asid; - PROC_UNLOCK(tp); - break; - - case A_SETPMASK: - if (uap->length != sizeof(udata.au_aupinfo)) - return (EINVAL); - if (udata.au_aupinfo.ap_pid < 1) - return (ESRCH); - newcred = crget(); - if ((tp = pfind(udata.au_aupinfo.ap_pid)) == NULL) { - crfree(newcred); - return (ESRCH); - } - if ((error = p_cansee(td, tp)) != 0) { - PROC_UNLOCK(tp); - crfree(newcred); - return (error); - } - oldcred = tp->p_ucred; - crcopy(newcred, oldcred); - newcred->cr_audit.ai_mask.am_success = - udata.au_aupinfo.ap_mask.am_success; - newcred->cr_audit.ai_mask.am_failure = - udata.au_aupinfo.ap_mask.am_failure; - td->td_proc->p_ucred = newcred; - PROC_UNLOCK(tp); - crfree(oldcred); - break; - - case A_SETFSIZE: - if (uap->length != sizeof(udata.au_fstat)) - return (EINVAL); - if ((udata.au_fstat.af_filesz != 0) && - (udata.au_fstat.af_filesz < MIN_AUDIT_FILE_SIZE)) - return (EINVAL); - as->audit_fstat.af_filesz - = udata.au_fstat.af_filesz; - break; - - case A_GETFSIZE: - if (uap->length != sizeof(udata.au_fstat)) - return (EINVAL); - udata.au_fstat.af_filesz - = as->audit_fstat.af_filesz; - udata.au_fstat.af_currsz - = as->audit_fstat.af_currsz; - break; - - case A_GETPINFO_ADDR: - if (uap->length != sizeof(udata.au_aupinfo_addr)) - return (EINVAL); - if (udata.au_aupinfo_addr.ap_pid < 1) - return (ESRCH); - if ((tp = pfind(udata.au_aupinfo_addr.ap_pid)) == NULL) - return (ESRCH); - cred = tp->p_ucred; - udata.au_aupinfo_addr.ap_auid = cred->cr_audit.ai_auid; - udata.au_aupinfo_addr.ap_mask.am_success = - cred->cr_audit.ai_mask.am_success; - udata.au_aupinfo_addr.ap_mask.am_failure = - cred->cr_audit.ai_mask.am_failure; - udata.au_aupinfo_addr.ap_termid = cred->cr_audit.ai_termid; - udata.au_aupinfo_addr.ap_asid = cred->cr_audit.ai_asid; - PROC_UNLOCK(tp); - break; - - case A_GETKAUDIT: - if (uap->length != sizeof(udata.au_kau_info)) - return (EINVAL); - audit_get_kinfo(&udata.au_kau_info); - break; - - case A_SETKAUDIT: - if (uap->length != sizeof(udata.au_kau_info)) - return (EINVAL); - if (udata.au_kau_info.ai_termid.at_type != AU_IPv4 && - udata.au_kau_info.ai_termid.at_type != AU_IPv6) - return (EINVAL); - audit_set_kinfo(&udata.au_kau_info); - break; - - case A_SENDTRIGGER: - if (uap->length != sizeof(udata.au_trigger)) - return (EINVAL); - if ((udata.au_trigger < AUDIT_TRIGGER_MIN) || - (udata.au_trigger > AUDIT_TRIGGER_MAX)) - return (EINVAL); - return (audit_send_trigger(udata.au_trigger)); - - /* - * XXXRW: as_name use a userspace character array, not a kernel space >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Wed Aug 12 16:31:53 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id F0C591065670; Wed, 12 Aug 2009 16:31:52 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 99F3A1065672 for ; Wed, 12 Aug 2009 16:31:52 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6F16C8FC43 for ; Wed, 12 Aug 2009 16:31:52 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7CGVqkM012940 for ; Wed, 12 Aug 2009 16:31:52 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7CGVq4H012938 for perforce@freebsd.org; Wed, 12 Aug 2009 16:31:52 GMT (envelope-from trasz@freebsd.org) Date: Wed, 12 Aug 2009 16:31:52 GMT Message-Id: <200908121631.n7CGVq4H012938@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167250 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 16:31:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=167250 Change 167250 by trasz@trasz_anger on 2009/08/12 16:31:07 Add perl script that will be used to conduct regression tests. Affected files ... .. //depot/projects/soc2009/trasz_limits/tools/regression/hrl/run#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Wed Aug 12 18:31:03 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 522201065672; Wed, 12 Aug 2009 18:31:03 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 122BF106566C for ; Wed, 12 Aug 2009 18:31:03 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id F39D88FC44 for ; Wed, 12 Aug 2009 18:31:02 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7CIV275033669 for ; Wed, 12 Aug 2009 18:31:02 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7CIV2uW033667 for perforce@freebsd.org; Wed, 12 Aug 2009 18:31:02 GMT (envelope-from syl@FreeBSD.org) Date: Wed, 12 Aug 2009 18:31:02 GMT Message-Id: <200908121831.n7CIV2uW033667@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 167252 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 18:31:04 -0000 http://perforce.freebsd.org/chv.cgi?CH=167252 Change 167252 by syl@syl_atuin on 2009/08/12 18:30:48 Add 2 missing break. Add missing comments. Style update. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_controller.h#10 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_roothub_exec.c#7 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_controller.h#10 (text+ko) ==== ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_roothub_exec.c#7 (text+ko) ==== @@ -79,7 +79,9 @@ static struct usb_roothub_fops generic_roothub_fops; static usb_error_t -generic_get_descriptor(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_descriptor(struct usb_generic_softc *sc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { switch ((*value) >> 8) { case UDESC_DEVICE: @@ -115,7 +117,9 @@ } static usb_error_t -generic_get_config(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_config(struct usb_generic_softc *sc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { *len = 1; sc->sc_hub_temp.wValue[0] = sc->sc_conf; @@ -123,7 +127,8 @@ } static usb_error_t -generic_get_status(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_status(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, + uint16_t *len, uint16_t *value, uint16_t *index) { *len = 2; USETW(sc->sc_hub_temp.wValue, UDS_SELF_POWERED); @@ -131,7 +136,9 @@ } static usb_error_t -generic_set_address(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_set_address(struct usb_generic_softc *sc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { if ((*value) & 0xff00) { return (USB_ERR_STALLED); @@ -141,7 +148,8 @@ } static usb_error_t -generic_set_config(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_set_config(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, + uint16_t *len, uint16_t *value, uint16_t *index) { if ((*value) >= 2) { return (USB_ERR_STALLED); @@ -151,31 +159,38 @@ } static usb_error_t -generic_clear_halt(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_clear_halt(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, + uint16_t *len, uint16_t *value, uint16_t *index) { return (0); } static usb_error_t -generic_clear_wakeup(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_clear_wakeup(struct usb_generic_softc *sc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { return (0); } static usb_error_t -generic_set_halt(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_set_halt(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, + uint16_t *len, uint16_t *value, uint16_t *index) { return (0); } static usb_error_t -generic_set_wakeup(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_set_wakeup(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, + uint16_t *len, uint16_t *value, uint16_t *index) { return (0); } static usb_error_t -generic_get_ep_status(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_ep_status(struct usb_generic_softc *sc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { *len = 2; USETW(sc->sc_hub_temp.wValue, 0); @@ -183,13 +198,17 @@ } static usb_error_t -generic_set_interface(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_set_interface(struct usb_generic_softc *sc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { return (0); } static usb_error_t -generic_get_interface(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_interface(struct usb_generic_softc *sc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { *len = 1; sc->sc_hub_temp.wValue[0] = 0; @@ -197,15 +216,20 @@ } static usb_error_t -generic_get_iface_status(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_iface_status(struct usb_generic_softc *sc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { *len = 2; USETW(sc->sc_hub_temp.wValue, 0); return (0); } +/* XXX Atmega need another function here */ static usb_error_t -generic_clear_port_feature(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_clear_port_feature(struct usb_generic_softc *sc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { if ((*index) != 1) { return (USB_ERR_STALLED); @@ -227,6 +251,7 @@ case UHF_C_PORT_ENABLE: case UHF_C_PORT_OVER_CURRENT: case UHF_C_PORT_RESET: + /* nops */ break; case UHF_PORT_POWER: sc->sc_flags.port_powered = 0; @@ -248,7 +273,9 @@ } static usb_error_t -generic_set_port_feature(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_set_port_feature(struct usb_generic_softc *sc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { if ((*index) != 1) { return (USB_ERR_IOERROR); @@ -263,6 +290,7 @@ case UHF_PORT_RESET: case UHF_PORT_TEST: case UHF_PORT_INDICATOR: + /* nops */ break; case UHF_PORT_POWER: sc->sc_flags.port_powered = 1; @@ -274,16 +302,19 @@ } static usb_error_t -generic_get_tt_state(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_tt_state(struct usb_generic_softc *sc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { *len = 2; USETW(sc->sc_hub_temp.wValue, 0); return (0); } -/* XXX at91 Need another func*/ static usb_error_t -generic_get_port_status(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_port_status(struct usb_generic_softc *sc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { DPRINTFN(9, "UR_GET_PORT_STATUS"); @@ -296,10 +327,10 @@ if (fops->handle_pull_up) fops->handle_pull_up(sc); } else { + if (fops->handle_pull_down) + fops->handle_pull_down(sc); if (fops->handle_clocks_off) fops->handle_clocks_off(sc); - if (fops->handle_pull_down) - fops->handle_pull_down(sc); } /* Select Full-Speend and Device Side Mode */ @@ -336,7 +367,9 @@ } static usb_error_t -generic_get_class_descriptor(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_class_descriptor(struct usb_generic_softc *sc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { if ((*value) & 0xff) { return (USB_ERR_STALLED); @@ -346,7 +379,9 @@ } static usb_error_t -generic_get_class_status(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) +generic_get_class_status(struct usb_generic_softc *sc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { *len = 2; USETW(sc->sc_hub_temp.wValue, 0); @@ -354,8 +389,9 @@ } usb_error_t -generic_roothub_exec(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, - struct usb_device_request *req, const void **pptr, uint16_t *plength) +generic_roothub_exec(struct usb_generic_softc *sc, + struct usb_roothub_fops *fops, struct usb_device_request *req, + const void **pptr, uint16_t *plength) { const void *ptr; uint16_t len; @@ -557,8 +593,10 @@ break ; } break; + default: err = USB_ERR_STALLED; + break; } *plength = len; From owner-p4-projects@FreeBSD.ORG Wed Aug 12 18:34:07 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D37CF1065670; Wed, 12 Aug 2009 18:34:06 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 932DC106566B for ; Wed, 12 Aug 2009 18:34:06 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 80B738FC41 for ; Wed, 12 Aug 2009 18:34:06 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7CIY6Dm033880 for ; Wed, 12 Aug 2009 18:34:06 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7CIY6J1033878 for perforce@freebsd.org; Wed, 12 Aug 2009 18:34:06 GMT (envelope-from syl@FreeBSD.org) Date: Wed, 12 Aug 2009 18:34:06 GMT Message-Id: <200908121834.n7CIY6J1033878@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 167253 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 18:34:07 -0000 http://perforce.freebsd.org/chv.cgi?CH=167253 Change 167253 by syl@syl_atuin on 2009/08/12 18:33:27 Implement at91dci dependant get_port_status. Change the code to use generic_roothub_exec. Remove old usb descriptor code. Remove old roothub_exec code. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/at91dci.c#12 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/at91dci.c#12 (text+ko) ==== @@ -1580,426 +1580,17 @@ .start = at91dci_device_isoc_fs_start, }; -/*------------------------------------------------------------------------* - * at91dci root control support - *------------------------------------------------------------------------* - * Simulate a hardware HUB by handling all the necessary requests. - *------------------------------------------------------------------------*/ - -static const struct usb_device_descriptor at91dci_devd = { - .bLength = sizeof(struct usb_device_descriptor), - .bDescriptorType = UDESC_DEVICE, - .bcdUSB = {0x00, 0x02}, - .bDeviceClass = UDCLASS_HUB, - .bDeviceSubClass = UDSUBCLASS_HUB, - .bDeviceProtocol = UDPROTO_HSHUBSTT, - .bMaxPacketSize = 64, - .bcdDevice = {0x00, 0x01}, - .iManufacturer = 1, - .iProduct = 2, - .bNumConfigurations = 1, -}; - -static const struct usb_device_qualifier at91dci_odevd = { - .bLength = sizeof(struct usb_device_qualifier), - .bDescriptorType = UDESC_DEVICE_QUALIFIER, - .bcdUSB = {0x00, 0x02}, - .bDeviceClass = UDCLASS_HUB, - .bDeviceSubClass = UDSUBCLASS_HUB, - .bDeviceProtocol = UDPROTO_FSHUB, - .bMaxPacketSize0 = 0, - .bNumConfigurations = 0, -}; - -static const struct at91dci_config_desc at91dci_confd = { - .confd = { - .bLength = sizeof(struct usb_config_descriptor), - .bDescriptorType = UDESC_CONFIG, - .wTotalLength[0] = sizeof(at91dci_confd), - .bNumInterface = 1, - .bConfigurationValue = 1, - .iConfiguration = 0, - .bmAttributes = UC_SELF_POWERED, - .bMaxPower = 0, - }, - .ifcd = { - .bLength = sizeof(struct usb_interface_descriptor), - .bDescriptorType = UDESC_INTERFACE, - .bNumEndpoints = 1, - .bInterfaceClass = UICLASS_HUB, - .bInterfaceSubClass = UISUBCLASS_HUB, - .bInterfaceProtocol = UIPROTO_HSHUBSTT, - }, - .endpd = { - .bLength = sizeof(struct usb_endpoint_descriptor), - .bDescriptorType = UDESC_ENDPOINT, - .bEndpointAddress = (UE_DIR_IN | AT9100_DCI_INTR_ENDPT), - .bmAttributes = UE_INTERRUPT, - .wMaxPacketSize[0] = 8, - .bInterval = 255, - }, -}; - -static const struct usb_hub_descriptor_min at91dci_hubd = { - .bDescLength = sizeof(at91dci_hubd), - .bDescriptorType = UDESC_HUB, - .bNbrPorts = 1, - .wHubCharacteristics[0] = - (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) & 0xFF, - .wHubCharacteristics[1] = - (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) >> 8, - .bPwrOn2PwrGood = 50, - .bHubContrCurrent = 0, - .DeviceRemovable = {0}, /* port is removable */ -}; - -#define STRING_LANG \ - 0x09, 0x04, /* American English */ - -#define STRING_VENDOR \ - 'A', 0, 'T', 0, 'M', 0, 'E', 0, 'L', 0 - -#define STRING_PRODUCT \ - 'D', 0, 'C', 0, 'I', 0, ' ', 0, 'R', 0, \ - 'o', 0, 'o', 0, 't', 0, ' ', 0, 'H', 0, \ - 'U', 0, 'B', 0, - -USB_MAKE_STRING_DESC(STRING_LANG, at91dci_langtab); -USB_MAKE_STRING_DESC(STRING_VENDOR, at91dci_vendor); -USB_MAKE_STRING_DESC(STRING_PRODUCT, at91dci_product); - static usb_error_t -at91dci_roothub_exec(struct usb_device *udev, - struct usb_device_request *req, const void **pptr, uint16_t *plength) +at91dci_get_port_status(struct usb_generic_softc *gensc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { - struct at91dci_softc *sc = AT9100_DCI_BUS2SC(udev->bus); - struct usb_roothub_fops fops; - - bzero(&fops, sizeof(struct usb_roothub_fops)); - fops.handle_clocks_on = (usb_clocks_fops_t)&at91dci_clocks_on; - fops.handle_clocks_off = (usb_clocks_fops_t)&at91dci_clocks_off; - fops.handle_pull_up = (usb_clocks_fops_t)&at91dci_pull_up; - fops.handle_pull_down = (usb_clocks_fops_t)&at91dci_pull_down; - fops.handle_wakeup_peer = (usb_clocks_fops_t)&at91dci_wakeup_peer; - return generic_roothub_exec((struct usb_generic_softc *)sc, &fops, req, - pptr, plength); -/* USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); - - ptr = (const void *)&sc->sc_hub_temp; - len = 0; - err = 0; - - value = UGETW(req->wValue); - index = UGETW(req->wIndex); - - - switch (req->bmRequestType) { - case UT_READ_DEVICE: - switch (req->bRequest) { - case UR_GET_DESCRIPTOR: - goto tr_handle_get_descriptor; - case UR_GET_CONFIG: - goto tr_handle_get_config; - case UR_GET_STATUS: - goto tr_handle_get_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_DEVICE: - switch (req->bRequest) { - case UR_SET_ADDRESS: - goto tr_handle_set_address; - case UR_SET_CONFIG: - goto tr_handle_set_config; - case UR_CLEAR_FEATURE: - goto tr_valid; - case UR_SET_DESCRIPTOR: - goto tr_valid; - case UR_SET_FEATURE: - default: - goto tr_stalled; - } - break; - - case UT_WRITE_ENDPOINT: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - switch (UGETW(req->wValue)) { - case UF_ENDPOINT_HALT: - goto tr_handle_clear_halt; - case UF_DEVICE_REMOTE_WAKEUP: - goto tr_handle_clear_wakeup; - default: - goto tr_stalled; - } - break; - case UR_SET_FEATURE: - switch (UGETW(req->wValue)) { - case UF_ENDPOINT_HALT: - goto tr_handle_set_halt; - case UF_DEVICE_REMOTE_WAKEUP: - goto tr_handle_set_wakeup; - default: - goto tr_stalled; - } - break; - case UR_SYNCH_FRAME: - goto tr_valid; - default: - goto tr_stalled; - } - break; + struct at91dci_softc *sc = (struct at91dci_softc *)gensc; - case UT_READ_ENDPOINT: - switch (req->bRequest) { - case UR_GET_STATUS: - goto tr_handle_get_ep_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_INTERFACE: - switch (req->bRequest) { - case UR_SET_INTERFACE: - goto tr_handle_set_interface; - case UR_CLEAR_FEATURE: - goto tr_valid; - case UR_SET_FEATURE: - default: - goto tr_stalled; - } - break; - - case UT_READ_INTERFACE: - switch (req->bRequest) { - case UR_GET_INTERFACE: - goto tr_handle_get_interface; - case UR_GET_STATUS: - goto tr_handle_get_iface_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_CLASS_INTERFACE: - case UT_WRITE_VENDOR_INTERFACE: - break; - - case UT_READ_CLASS_INTERFACE: - case UT_READ_VENDOR_INTERFACE: - break; - - case UT_WRITE_CLASS_DEVICE: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - goto tr_valid; - case UR_SET_DESCRIPTOR: - case UR_SET_FEATURE: - break; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_CLASS_OTHER: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - goto tr_handle_clear_port_feature; - case UR_SET_FEATURE: - goto tr_handle_set_port_feature; - case UR_CLEAR_TT_BUFFER: - case UR_RESET_TT: - case UR_STOP_TT: - goto tr_valid; - - default: - goto tr_stalled; - } - break; - - case UT_READ_CLASS_OTHER: - switch (req->bRequest) { - case UR_GET_TT_STATE: - goto tr_handle_get_tt_state; - case UR_GET_STATUS: - goto tr_handle_get_port_status; - default: - goto tr_stalled; - } - break; - - case UT_READ_CLASS_DEVICE: - switch (req->bRequest) { - case UR_GET_DESCRIPTOR: - goto tr_handle_get_class_descriptor; - case UR_GET_STATUS: - goto tr_handle_get_class_status; - - default: - goto tr_stalled; - } - break; - default: - goto tr_stalled; - } - goto tr_valid; - -tr_handle_get_descriptor: - switch (value >> 8) { - case UDESC_DEVICE: - if (value & 0xff) { - goto tr_stalled; - } - len = sizeof(at91dci_devd); - ptr = (const void *)&at91dci_devd; - goto tr_valid; - case UDESC_CONFIG: - if (value & 0xff) { - goto tr_stalled; - } - len = sizeof(at91dci_confd); - ptr = (const void *)&at91dci_confd; - goto tr_valid; - case UDESC_STRING: - switch (value & 0xff) { - case 0: - len = sizeof(at91dci_langtab); - ptr = (const void *)&at91dci_langtab; - goto tr_valid; - - case 1: - len = sizeof(at91dci_vendor); - ptr = (const void *)&at91dci_vendor; - goto tr_valid; - - case 2: - len = sizeof(at91dci_product); - ptr = (const void *)&at91dci_product; - goto tr_valid; - default: - break; - } - break; - default: - goto tr_stalled; - } - goto tr_stalled; - -tr_handle_get_config: - len = 1; - sc->sc_hub_temp.wValue[0] = sc->sc_conf; - goto tr_valid; - -tr_handle_get_status: - len = 2; - USETW(sc->sc_hub_temp.wValue, UDS_SELF_POWERED); - goto tr_valid; - -tr_handle_set_address: - if (value & 0xFF00) { - goto tr_stalled; - } - sc->sc_rt_addr = value; - goto tr_valid; - -tr_handle_set_config: - if (value >= 2) { - goto tr_stalled; - } - sc->sc_conf = value; - goto tr_valid; - -tr_handle_get_interface: - len = 1; - sc->sc_hub_temp.wValue[0] = 0; - goto tr_valid; - -tr_handle_get_tt_state: -tr_handle_get_class_status: -tr_handle_get_iface_status: -tr_handle_get_ep_status: - len = 2; - USETW(sc->sc_hub_temp.wValue, 0); - goto tr_valid; - -tr_handle_set_halt: -tr_handle_set_interface: -tr_handle_set_wakeup: -tr_handle_clear_wakeup: -tr_handle_clear_halt: - goto tr_valid; - -tr_handle_clear_port_feature: - if (index != 1) { - goto tr_stalled; - } - DPRINTFN(9, "UR_CLEAR_PORT_FEATURE on port %d\n", index); - - switch (value) { - case UHF_PORT_SUSPEND: - at91dci_wakeup_peer(sc); - break; - - case UHF_PORT_ENABLE: - sc->sc_flags.port_enabled = 0; - break; - - case UHF_PORT_TEST: - case UHF_PORT_INDICATOR: - case UHF_C_PORT_ENABLE: - case UHF_C_PORT_OVER_CURRENT: - case UHF_C_PORT_RESET: - break; - case UHF_PORT_POWER: - sc->sc_flags.port_powered = 0; - at91dci_pull_down(sc); - at91dci_clocks_off(sc); - break; - case UHF_C_PORT_CONNECTION: - sc->sc_flags.change_connect = 0; - break; - case UHF_C_PORT_SUSPEND: - sc->sc_flags.change_suspend = 0; - break; - default: - err = USB_ERR_IOERROR; - goto done; - } - goto tr_valid; - -tr_handle_set_port_feature: - if (index != 1) { - goto tr_stalled; - } - DPRINTFN(9, "UR_SET_PORT_FEATURE\n"); - - switch (value) { - case UHF_PORT_ENABLE: - sc->sc_flags.port_enabled = 1; - break; - case UHF_PORT_SUSPEND: - case UHF_PORT_RESET: - case UHF_PORT_TEST: - case UHF_PORT_INDICATOR: - break; - case UHF_PORT_POWER: - sc->sc_flags.port_powered = 1; - break; - default: - err = USB_ERR_IOERROR; - goto done; - } - goto tr_valid; - -tr_handle_get_port_status: - DPRINTFN(9, "UR_GET_PORT_STATUS\n"); - if (index != 1) { - goto tr_stalled; + if (*index != 1) { + return (USB_ERR_STALLED); } if (sc->sc_flags.status_vbus) { at91dci_clocks_on(sc); @@ -2009,27 +1600,27 @@ at91dci_clocks_off(sc); } - value = UPS_PORT_MODE_DEVICE; + *value = UPS_PORT_MODE_DEVICE; if (sc->sc_flags.port_powered) { - value |= UPS_PORT_POWER; + *value |= UPS_PORT_POWER; } if (sc->sc_flags.port_enabled) { - value |= UPS_PORT_ENABLED; + *value |= UPS_PORT_ENABLED; } if (sc->sc_flags.status_vbus && sc->sc_flags.status_bus_reset) { - value |= UPS_CURRENT_CONNECT_STATUS; + *value |= UPS_CURRENT_CONNECT_STATUS; } if (sc->sc_flags.status_suspend) { - value |= UPS_SUSPEND; + *value |= UPS_SUSPEND; } - USETW(sc->sc_hub_temp.ps.wPortStatus, value); + USETW(sc->sc_hub_temp.ps.wPortStatus, *value); - value = 0; + *value = 0; if (sc->sc_flags.change_connect) { - value |= UPS_C_CONNECT_STATUS; + *value |= UPS_C_CONNECT_STATUS; if (sc->sc_flags.status_vbus && sc->sc_flags.status_bus_reset) { @@ -2037,27 +1628,29 @@ } } if (sc->sc_flags.change_suspend) { - value |= UPS_C_SUSPEND; + *value |= UPS_C_SUSPEND; } - USETW(sc->sc_hub_temp.ps.wPortChange, value); - len = sizeof(sc->sc_hub_temp.ps); - goto tr_valid; + USETW(sc->sc_hub_temp.ps.wPortChange, *value); + *len = sizeof(sc->sc_hub_temp.ps); + return (0); +} -tr_handle_get_class_descriptor: - if (value & 0xFF) { - goto tr_stalled; - } - ptr = (const void *)&at91dci_hubd; - len = sizeof(at91dci_hubd); - goto tr_valid; +static usb_error_t +at91dci_roothub_exec(struct usb_device *udev, + struct usb_device_request *req, const void **pptr, uint16_t *plength) +{ + struct at91dci_softc *sc = AT9100_DCI_BUS2SC(udev->bus); + struct usb_roothub_fops fops; -tr_stalled: - err = USB_ERR_STALLED; -tr_valid: -done: - *plength = len; - *pptr = ptr; - return (err);*/ + bzero(&fops, sizeof(struct usb_roothub_fops)); + fops.handle_get_port_status = &at91dci_get_port_status; + fops.handle_clocks_on = (usb_clocks_fops_t)&at91dci_clocks_on; + fops.handle_clocks_off = (usb_clocks_fops_t)&at91dci_clocks_off; + fops.handle_pull_up = (usb_clocks_fops_t)&at91dci_pull_up; + fops.handle_pull_down = (usb_clocks_fops_t)&at91dci_pull_down; + fops.handle_wakeup_peer = (usb_clocks_fops_t)&at91dci_wakeup_peer; + return generic_roothub_exec((struct usb_generic_softc *)sc, &fops, req, + pptr, plength); } static void From owner-p4-projects@FreeBSD.ORG Wed Aug 12 18:35:08 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2EFFD1065675; Wed, 12 Aug 2009 18:35:08 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E112E1065672 for ; Wed, 12 Aug 2009 18:35:07 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id CE7178FC4F for ; Wed, 12 Aug 2009 18:35:07 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7CIZ7bR033977 for ; Wed, 12 Aug 2009 18:35:07 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7CIZ7hT033975 for perforce@freebsd.org; Wed, 12 Aug 2009 18:35:07 GMT (envelope-from syl@FreeBSD.org) Date: Wed, 12 Aug 2009 18:35:07 GMT Message-Id: <200908121835.n7CIZ7hT033975@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 167254 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 18:35:08 -0000 http://perforce.freebsd.org/chv.cgi?CH=167254 Change 167254 by syl@syl_atuin on 2009/08/12 18:34:28 Implement atmegadci dependant clear_port_feature. Change the code to use generic_roothub_exec. Remove old usb descriptor code. Remove old roothub_exec code. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/atmegadci.c#11 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/atmegadci.c#11 (text+ko) ==== @@ -1476,366 +1476,20 @@ .start = atmegadci_device_isoc_fs_start, }; -/*------------------------------------------------------------------------* - * at91dci root control support - *------------------------------------------------------------------------* - * Simulate a hardware HUB by handling all the necessary requests. - *------------------------------------------------------------------------*/ - -static const struct usb_device_descriptor atmegadci_devd = { - .bLength = sizeof(struct usb_device_descriptor), - .bDescriptorType = UDESC_DEVICE, - .bcdUSB = {0x00, 0x02}, - .bDeviceClass = UDCLASS_HUB, - .bDeviceSubClass = UDSUBCLASS_HUB, - .bDeviceProtocol = UDPROTO_HSHUBSTT, - .bMaxPacketSize = 64, - .bcdDevice = {0x00, 0x01}, - .iManufacturer = 1, - .iProduct = 2, - .bNumConfigurations = 1, -}; - -static const struct usb_device_qualifier atmegadci_odevd = { - .bLength = sizeof(struct usb_device_qualifier), - .bDescriptorType = UDESC_DEVICE_QUALIFIER, - .bcdUSB = {0x00, 0x02}, - .bDeviceClass = UDCLASS_HUB, - .bDeviceSubClass = UDSUBCLASS_HUB, - .bDeviceProtocol = UDPROTO_FSHUB, - .bMaxPacketSize0 = 0, - .bNumConfigurations = 0, -}; - -static const struct atmegadci_config_desc atmegadci_confd = { - .confd = { - .bLength = sizeof(struct usb_config_descriptor), - .bDescriptorType = UDESC_CONFIG, - .wTotalLength[0] = sizeof(atmegadci_confd), - .bNumInterface = 1, - .bConfigurationValue = 1, - .iConfiguration = 0, - .bmAttributes = UC_SELF_POWERED, - .bMaxPower = 0, - }, - .ifcd = { - .bLength = sizeof(struct usb_interface_descriptor), - .bDescriptorType = UDESC_INTERFACE, - .bNumEndpoints = 1, - .bInterfaceClass = UICLASS_HUB, - .bInterfaceSubClass = UISUBCLASS_HUB, - .bInterfaceProtocol = UIPROTO_HSHUBSTT, - }, - .endpd = { - .bLength = sizeof(struct usb_endpoint_descriptor), - .bDescriptorType = UDESC_ENDPOINT, - .bEndpointAddress = (UE_DIR_IN | ATMEGA_INTR_ENDPT), - .bmAttributes = UE_INTERRUPT, - .wMaxPacketSize[0] = 8, - .bInterval = 255, - }, -}; - -static const struct usb_hub_descriptor_min atmegadci_hubd = { - .bDescLength = sizeof(atmegadci_hubd), - .bDescriptorType = UDESC_HUB, - .bNbrPorts = 1, - .wHubCharacteristics[0] = - (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) & 0xFF, - .wHubCharacteristics[1] = - (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) >> 8, - .bPwrOn2PwrGood = 50, - .bHubContrCurrent = 0, - .DeviceRemovable = {0}, /* port is removable */ -}; - -#define STRING_LANG \ - 0x09, 0x04, /* American English */ - -#define STRING_VENDOR \ - 'A', 0, 'T', 0, 'M', 0, 'E', 0, 'G', 0, 'A', 0 - -#define STRING_PRODUCT \ - 'D', 0, 'C', 0, 'I', 0, ' ', 0, 'R', 0, \ - 'o', 0, 'o', 0, 't', 0, ' ', 0, 'H', 0, \ - 'U', 0, 'B', 0, - -USB_MAKE_STRING_DESC(STRING_LANG, atmegadci_langtab); -USB_MAKE_STRING_DESC(STRING_VENDOR, atmegadci_vendor); -USB_MAKE_STRING_DESC(STRING_PRODUCT, atmegadci_product); - static usb_error_t -atmegadci_roothub_exec(struct usb_device *udev, - struct usb_device_request *req, const void **pptr, uint16_t *plength) +atmega_clear_port_feature(struct usb_generic_softc *atsc, + struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { - struct atmegadci_softc *sc = ATMEGA_BUS2SC(udev->bus); - const void *ptr; - uint16_t len; - uint16_t value; - uint16_t index; - uint8_t temp; - usb_error_t err; + struct atmegadci_softc *sc = (struct atmegadci_softc *)atsc; + uint32_t temp; - USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); - - /* buffer reset */ - ptr = (const void *)&sc->sc_hub_temp; - len = 0; - err = 0; - - value = UGETW(req->wValue); - index = UGETW(req->wIndex); - - /* demultiplex the control request */ - - switch (req->bmRequestType) { - case UT_READ_DEVICE: - switch (req->bRequest) { - case UR_GET_DESCRIPTOR: - goto tr_handle_get_descriptor; - case UR_GET_CONFIG: - goto tr_handle_get_config; - case UR_GET_STATUS: - goto tr_handle_get_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_DEVICE: - switch (req->bRequest) { - case UR_SET_ADDRESS: - goto tr_handle_set_address; - case UR_SET_CONFIG: - goto tr_handle_set_config; - case UR_CLEAR_FEATURE: - goto tr_valid; /* nop */ - case UR_SET_DESCRIPTOR: - goto tr_valid; /* nop */ - case UR_SET_FEATURE: - default: - goto tr_stalled; - } - break; - - case UT_WRITE_ENDPOINT: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - switch (UGETW(req->wValue)) { - case UF_ENDPOINT_HALT: - goto tr_handle_clear_halt; - case UF_DEVICE_REMOTE_WAKEUP: - goto tr_handle_clear_wakeup; - default: - goto tr_stalled; - } - break; - case UR_SET_FEATURE: - switch (UGETW(req->wValue)) { - case UF_ENDPOINT_HALT: - goto tr_handle_set_halt; - case UF_DEVICE_REMOTE_WAKEUP: - goto tr_handle_set_wakeup; - default: - goto tr_stalled; - } - break; - case UR_SYNCH_FRAME: - goto tr_valid; /* nop */ - default: - goto tr_stalled; - } - break; - - case UT_READ_ENDPOINT: - switch (req->bRequest) { - case UR_GET_STATUS: - goto tr_handle_get_ep_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_INTERFACE: - switch (req->bRequest) { - case UR_SET_INTERFACE: - goto tr_handle_set_interface; - case UR_CLEAR_FEATURE: - goto tr_valid; /* nop */ - case UR_SET_FEATURE: - default: - goto tr_stalled; - } - break; - - case UT_READ_INTERFACE: - switch (req->bRequest) { - case UR_GET_INTERFACE: - goto tr_handle_get_interface; - case UR_GET_STATUS: - goto tr_handle_get_iface_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_CLASS_INTERFACE: - case UT_WRITE_VENDOR_INTERFACE: - /* XXX forward */ - break; - - case UT_READ_CLASS_INTERFACE: - case UT_READ_VENDOR_INTERFACE: - /* XXX forward */ - break; - - case UT_WRITE_CLASS_DEVICE: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - goto tr_valid; - case UR_SET_DESCRIPTOR: - case UR_SET_FEATURE: - break; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_CLASS_OTHER: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - goto tr_handle_clear_port_feature; - case UR_SET_FEATURE: - goto tr_handle_set_port_feature; - case UR_CLEAR_TT_BUFFER: - case UR_RESET_TT: - case UR_STOP_TT: - goto tr_valid; - - default: - goto tr_stalled; - } - break; - - case UT_READ_CLASS_OTHER: - switch (req->bRequest) { - case UR_GET_TT_STATE: - goto tr_handle_get_tt_state; - case UR_GET_STATUS: - goto tr_handle_get_port_status; - default: - goto tr_stalled; - } - break; - - case UT_READ_CLASS_DEVICE: - switch (req->bRequest) { - case UR_GET_DESCRIPTOR: - goto tr_handle_get_class_descriptor; - case UR_GET_STATUS: - goto tr_handle_get_class_status; - - default: - goto tr_stalled; - } - break; - default: - goto tr_stalled; + if (*index != 1) { + return (USB_ERR_STALLED); } - goto tr_valid; + DPRINTFN(9, "UR_CLEAR_PORT_FEATURE on port %d\n", *index); -tr_handle_get_descriptor: - switch (value >> 8) { - case UDESC_DEVICE: - if (value & 0xff) { - goto tr_stalled; - } - len = sizeof(atmegadci_devd); - ptr = (const void *)&atmegadci_devd; - goto tr_valid; - case UDESC_CONFIG: - if (value & 0xff) { - goto tr_stalled; - } - len = sizeof(atmegadci_confd); - ptr = (const void *)&atmegadci_confd; - goto tr_valid; - case UDESC_STRING: - switch (value & 0xff) { - case 0: /* Language table */ - len = sizeof(atmegadci_langtab); - ptr = (const void *)&atmegadci_langtab; - goto tr_valid; - - case 1: /* Vendor */ - len = sizeof(atmegadci_vendor); - ptr = (const void *)&atmegadci_vendor; - goto tr_valid; - - case 2: /* Product */ - len = sizeof(atmegadci_product); - ptr = (const void *)&atmegadci_product; - goto tr_valid; - default: - break; - } - break; - default: - goto tr_stalled; - } - goto tr_stalled; - -tr_handle_get_config: - len = 1; - sc->sc_hub_temp.wValue[0] = sc->sc_conf; - goto tr_valid; - -tr_handle_get_status: - len = 2; - USETW(sc->sc_hub_temp.wValue, UDS_SELF_POWERED); - goto tr_valid; - -tr_handle_set_address: - if (value & 0xFF00) { - goto tr_stalled; - } - sc->sc_rt_addr = value; - goto tr_valid; - -tr_handle_set_config: - if (value >= 2) { - goto tr_stalled; - } - sc->sc_conf = value; - goto tr_valid; - -tr_handle_get_interface: - len = 1; - sc->sc_hub_temp.wValue[0] = 0; - goto tr_valid; - -tr_handle_get_tt_state: -tr_handle_get_class_status: -tr_handle_get_iface_status: -tr_handle_get_ep_status: - len = 2; - USETW(sc->sc_hub_temp.wValue, 0); - goto tr_valid; - -tr_handle_set_halt: -tr_handle_set_interface: -tr_handle_set_wakeup: -tr_handle_clear_wakeup: -tr_handle_clear_halt: - goto tr_valid; - -tr_handle_clear_port_feature: - if (index != 1) { - goto tr_stalled; - } - DPRINTFN(9, "UR_CLEAR_PORT_FEATURE on port %d\n", index); - - switch (value) { + switch (*value) { case UHF_PORT_SUSPEND: atmegadci_wakeup_peer(sc); break; @@ -1899,97 +1553,27 @@ sc->sc_flags.change_suspend = 0; break; default: - err = USB_ERR_IOERROR; - goto done; + return (USB_ERR_IOERROR); } - goto tr_valid; + return (0); +} -tr_handle_set_port_feature: - if (index != 1) { - goto tr_stalled; - } - DPRINTFN(9, "UR_SET_PORT_FEATURE\n"); +static usb_error_t +atmegadci_roothub_exec(struct usb_device *udev, + struct usb_device_request *req, const void **pptr, uint16_t *plength) +{ + struct atmegadci_softc *sc = ATMEGA_BUS2SC(udev->bus); + struct usb_roothub_fops fops; - switch (value) { - case UHF_PORT_ENABLE: - sc->sc_flags.port_enabled = 1; - break; - case UHF_PORT_SUSPEND: - case UHF_PORT_RESET: - case UHF_PORT_TEST: - case UHF_PORT_INDICATOR: - /* nops */ - break; - case UHF_PORT_POWER: - sc->sc_flags.port_powered = 1; - break; - default: - err = USB_ERR_IOERROR; - goto done; - } - goto tr_valid; - -tr_handle_get_port_status: - - DPRINTFN(9, "UR_GET_PORT_STATUS\n"); - - if (index != 1) { - goto tr_stalled; - } - if (sc->sc_flags.status_vbus) { - atmegadci_clocks_on(sc); - atmegadci_pull_up(sc); - } else { - atmegadci_pull_down(sc); - atmegadci_clocks_off(sc); - } - - /* Select FULL-speed and Device Side Mode */ - - value = UPS_PORT_MODE_DEVICE; - - if (sc->sc_flags.port_powered) { - value |= UPS_PORT_POWER; - } - if (sc->sc_flags.port_enabled) { - value |= UPS_PORT_ENABLED; - } - if (sc->sc_flags.status_vbus && - sc->sc_flags.status_bus_reset) { - value |= UPS_CURRENT_CONNECT_STATUS; - } - if (sc->sc_flags.status_suspend) { - value |= UPS_SUSPEND; - } - USETW(sc->sc_hub_temp.ps.wPortStatus, value); - - value = 0; - - if (sc->sc_flags.change_connect) { - value |= UPS_C_CONNECT_STATUS; - } - if (sc->sc_flags.change_suspend) { - value |= UPS_C_SUSPEND; - } - USETW(sc->sc_hub_temp.ps.wPortChange, value); - len = sizeof(sc->sc_hub_temp.ps); - goto tr_valid; - -tr_handle_get_class_descriptor: - if (value & 0xFF) { - goto tr_stalled; - } - ptr = (const void *)&atmegadci_hubd; - len = sizeof(atmegadci_hubd); - goto tr_valid; - -tr_stalled: - err = USB_ERR_STALLED; -tr_valid: -done: - *plength = len; - *pptr = ptr; - return (err); + bzero(&fops, sizeof(fops)); + fops.handle_clear_port_feature = &atmega_clear_port_feature; + fops.handle_clocks_on = (usb_clocks_fops_t)&atmegadci_clocks_on; + fops.handle_clocks_off = (usb_clocks_fops_t)&atmegadci_clocks_off; + fops.handle_pull_up = (usb_clocks_fops_t)&atmegadci_pull_up; + fops.handle_pull_down = (usb_clocks_fops_t)&atmegadci_pull_down; + fops.handle_wakeup_peer = (usb_clocks_fops_t)&atmegadci_wakeup_peer; + return generic_roothub_exec((struct usb_generic_softc *) sc, &fops, req, + pptr, plength); } static void From owner-p4-projects@FreeBSD.ORG Wed Aug 12 18:42:16 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5DDC21065674; Wed, 12 Aug 2009 18:42:16 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1DDC1106566B for ; Wed, 12 Aug 2009 18:42:16 +0000 (UTC) (envelope-from marinosi@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id E6C6D8FC45 for ; Wed, 12 Aug 2009 18:42:15 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7CIgFCG034544 for ; Wed, 12 Aug 2009 18:42:15 GMT (envelope-from marinosi@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7CIgFFp034542 for perforce@freebsd.org; Wed, 12 Aug 2009 18:42:15 GMT (envelope-from marinosi@FreeBSD.org) Date: Wed, 12 Aug 2009 18:42:15 GMT Message-Id: <200908121842.n7CIgFFp034542@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marinosi@FreeBSD.org using -f From: Ilias Marinos To: Perforce Change Reviews Cc: Subject: PERFORCE change 167255 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 18:42:17 -0000 http://perforce.freebsd.org/chv.cgi?CH=167255 Change 167255 by marinosi@marinosi_redrum on 2009/08/12 18:42:11 Bug fix. auditon_slice() was returning with an exclusive lock held, which was causing a panic. Affected files ... .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#19 edit Differences ... ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#19 (text) ==== @@ -961,6 +961,7 @@ return (cur); } } + AUDIT_SLICES_UNLOCK(); /* * On failure.(slice not found) From owner-p4-projects@FreeBSD.ORG Wed Aug 12 19:09:46 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1B1751065679; Wed, 12 Aug 2009 19:09:46 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C52701065675 for ; Wed, 12 Aug 2009 19:09:45 +0000 (UTC) (envelope-from gk@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B22028FC41 for ; Wed, 12 Aug 2009 19:09:45 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7CJ9j75037435 for ; Wed, 12 Aug 2009 19:09:45 GMT (envelope-from gk@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7CJ9j3Q037433 for perforce@freebsd.org; Wed, 12 Aug 2009 19:09:45 GMT (envelope-from gk@FreeBSD.org) Date: Wed, 12 Aug 2009 19:09:45 GMT Message-Id: <200908121909.n7CJ9j3Q037433@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to gk@FreeBSD.org using -f From: Gleb Kurtsou To: Perforce Change Reviews Cc: Subject: PERFORCE change 167256 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 19:09:47 -0000 http://perforce.freebsd.org/chv.cgi?CH=167256 Change 167256 by gk@gk_h1 on 2009/08/12 19:08:58 * Add hmac-sha256 implementation * Use hmac for file name checksum: hmac(name key, encrypted file name) reduce hmac to 64 bits it should be replaced with something faster previous checksum implementation was completely insecure * Additional algorithms support: AES and Camellia 128, 192, 256 bit key sizes used only in CTR mode (64 bit tweak + 64 bit offset) * Use algorithm id and key size during key generation . It allows use of same passpharase with different algorithms/key sizes * Series of setkey fixes: recycle vnodes without key after adding a new one recycle vnode after renamig it during setkey smaller userspace fixes * Key chain fixes: save int values in littlie endian db * Sepparate salsa20 implementation into 2 files so it can be compilled in userspace easely Affected files ... .. //depot/projects/soc2009/gk_pefs/sbin/pefs/pefs_ctl.c#4 edit .. //depot/projects/soc2009/gk_pefs/sbin/pefs/pefs_ctl.h#4 edit .. //depot/projects/soc2009/gk_pefs/sbin/pefs/pefs_key.c#4 edit .. //depot/projects/soc2009/gk_pefs/sbin/pefs/pefs_keychain.c#3 edit .. //depot/projects/soc2009/gk_pefs/sys/crypto/salsa20/salsa20-kld.c#1 add .. //depot/projects/soc2009/gk_pefs/sys/crypto/salsa20/salsa20.c#2 edit .. //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs.h#9 edit .. //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs_crypto.c#7 edit .. //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs_vfsops.c#8 edit .. //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs_vnops.c#10 edit .. //depot/projects/soc2009/gk_pefs/sys/modules/pefs/Makefile#5 edit Differences ... ==== //depot/projects/soc2009/gk_pefs/sbin/pefs/pefs_ctl.c#4 (text+ko) ==== @@ -118,7 +118,7 @@ static inline void pefs_key_show(struct pefs_xkey *xk, int ind) { - printf("\t%-4d %016jx %s\n", ind, pefs_keyid_as_int(xk->pxk_keyid), pefs_alg_name(xk->pxk_alg)); + printf("\t%-4d %016jx %s\n", ind, pefs_keyid_as_int(xk->pxk_keyid), pefs_alg_name(xk)); } static int @@ -236,12 +236,16 @@ struct pefs_keychain_head kch; struct pefs_keyparam kp; int error, fd, i; + int verbose = 0; int addkey = 0; int chain = PEFS_KEYCHAIN_IGNORE_MISSING; pefs_keyparam_init(&kp); - while ((i = getopt(argc, argv, "xpcCa:i:k:")) != -1) + while ((i = getopt(argc, argv, "vxpcCa:i:k:")) != -1) switch(i) { + case 'v': + verbose = 1; + break; case 'x': addkey = 1; break; @@ -290,13 +294,11 @@ return (error); error = pefs_keychain_get(&kch, argv[0], chain, &k); - bzero(&k, sizeof(k)); + bzero(k.pxk_key, PEFS_KEY_SIZE); if (error) return (EX_DATAERR); pefs_keychain_free(&kch); - bzero(k.pxk_key, PEFS_KEY_SIZE); - fd = open(argv[0], O_RDONLY); if (fd == -1) { err(EX_IOERR, "cannot open %s", argv[0]); @@ -305,6 +307,8 @@ if (ioctl(fd, PEFS_SETKEY, &k) == -1) { warn("cannot set key"); error = EX_OSERR; + } else if (verbose) { + printf("New key: %016jx\n", pefs_keyid_as_int(k.pxk_keyid)); } close(fd); @@ -656,9 +660,9 @@ verbose = 1; break; case 'a': - k[0].pxk_alg = k[1].pxk_alg = pefs_alg_id(optarg); - if (k[0].pxk_alg < 0) + if (pefs_alg_lookup(&k[0], optarg) < 0) errx(EX_USAGE, "invalid algorithm %s", optarg); + k[1] = k[0]; break; case 'n': if ((nmin = atoi(optarg)) <= 0) { @@ -716,7 +720,7 @@ fprintf(stderr, "usage: pefs mount [-o options] target filesystem\n" " pefs unmount [-fv] filesystem\n" " pefs addkey [-cCp] [-a alg] [-i iterations] [-k keyfile] filesystem\n" - " pefs setkey [-cCpx] [-a alg] [-i iterations] [-k keyfile] directory\n" + " pefs setkey [-cCpvx] [-a alg] [-i iterations] [-k keyfile] directory\n" " pefs delkey [-cCp] [-a alg] [-i iterations] [-k keyfile] filesystem\n" " pefs flushkeys filesystem\n" " pefs setchain [-pPv] [-a alg] [-i iterations] [-k keyfile]\n" ==== //depot/projects/soc2009/gk_pefs/sbin/pefs/pefs_ctl.h#4 (text+ko) ==== @@ -27,6 +27,7 @@ */ #define PEFS_ALG_DEFAULT PEFS_ALG_SALSA20 +#define PEFS_ALG_DEFAULT_KEYBITS 256 #define PEFS_KDF_ITERATIONS 50000 @@ -58,6 +59,6 @@ int pefs_key_encrypt(struct pefs_xkey *xk, const struct pefs_xkey *xk_parent); int pefs_key_decrypt(struct pefs_xkey *xk, const struct pefs_xkey *xk_parent); uintmax_t pefs_keyid_as_int(char *keyid); -const char * pefs_alg_name(int alg_id); -int pefs_alg_id(const char *name); +const char * pefs_alg_name(struct pefs_xkey *xk); +int pefs_alg_lookup(struct pefs_xkey *xk, const char *algname); ==== //depot/projects/soc2009/gk_pefs/sbin/pefs/pefs_key.c#4 (text+ko) ==== @@ -53,21 +53,34 @@ struct algorithm { const char *name; - int id; + uint32_t id; + uint32_t keybits; }; static struct algorithm algs[] = { - { "salsa20-256", PEFS_ALG_SALSA20 }, - { NULL, 0 }, + { "salsa20-256", PEFS_ALG_SALSA20, 256 }, + { "aes128-ctr", PEFS_ALG_AES_CTR, 128 }, + { "aes128", PEFS_ALG_AES_CTR, 128 }, + { "aes192-ctr", PEFS_ALG_AES_CTR, 192 }, + { "aes192", PEFS_ALG_AES_CTR, 192 }, + { "aes256-ctr", PEFS_ALG_AES_CTR, 256 }, + { "aes256", PEFS_ALG_AES_CTR, 256 }, + { "camellia128-ctr", PEFS_ALG_CAMELLIA_CTR, 128 }, + { "camellia128", PEFS_ALG_CAMELLIA_CTR, 128 }, + { "camellia192-ctr", PEFS_ALG_CAMELLIA_CTR, 192 }, + { "camellia192", PEFS_ALG_CAMELLIA_CTR, 192 }, + { "camellia256-ctr", PEFS_ALG_CAMELLIA_CTR, 256 }, + { "camellia256", PEFS_ALG_CAMELLIA_CTR, 256 }, + { NULL, 0, 0 }, }; const char * -pefs_alg_name(int alg_id) +pefs_alg_name(struct pefs_xkey *xk) { struct algorithm *alg; for (alg = algs; alg->name != NULL; alg++) { - if (alg->id == alg_id) + if (alg->id == xk->pxk_alg && alg->keybits == xk->pxk_keybits) return (alg->name); } @@ -75,13 +88,16 @@ } int -pefs_alg_id(const char *algname) +pefs_alg_lookup(struct pefs_xkey *xk, const char *algname) { struct algorithm *alg; for (alg = algs; alg->name != NULL; alg++) { - if (strcmp(algname, alg->name) == 0) + if (strcmp(algname, alg->name) == 0) { + xk->pxk_alg = alg->id; + xk->pxk_keybits = alg->keybits; return (alg->id); + } } return (-1); @@ -97,15 +113,20 @@ xk->pxk_index = -1; xk->pxk_alg = PEFS_ALG_DEFAULT; + xk->pxk_keybits = PEFS_ALG_DEFAULT_KEYBITS; if (kp->kp_alg != NULL) { - xk->pxk_alg = pefs_alg_id(kp->kp_alg); - if (xk->pxk_alg < 0) + if (pefs_alg_lookup(xk, kp->kp_alg) < 0) errx(EX_USAGE, "invalid algorithm %s", kp->kp_alg); } g_eli_crypto_hmac_init(&ctx, NULL, 0); + i = htole32(xk->pxk_alg); + g_eli_crypto_hmac_update(&ctx, (void *)&i, sizeof(uint32_t)); + i = htole32(xk->pxk_keybits); + g_eli_crypto_hmac_update(&ctx, (void *)&i, sizeof(uint32_t)); + if (kp->kp_keyfile != NULL && kp->kp_keyfile[0] == '\0') kp->kp_keyfile = NULL; if (kp->kp_keyfile == NULL && kp->kp_nopassphrase) { ==== //depot/projects/soc2009/gk_pefs/sbin/pefs/pefs_keychain.c#3 (text+ko) ==== @@ -29,6 +29,7 @@ __FBSDID("$FreeBSD$"); #include +#include #include #include #include @@ -114,7 +115,10 @@ error = pefs_key_decrypt(&kc->kc_key, &kc_parent->kc_key); if (error) break; - if (pefs_alg_name(kc->kc_key.pxk_alg) == NULL) { + kc->kc_key.pxk_index = -1; + kc->kc_key.pxk_alg = le32toh(kc->kc_key.pxk_alg); + kc->kc_key.pxk_keybits = le32toh(kc->kc_key.pxk_keybits); + if (pefs_alg_name(&kc->kc_key) == NULL) { bzero(&kc->kc_key, sizeof(struct pefs_xkey)); warn("keychain %016jx -> %016jx: invalid algorithm (decyption failed)", pefs_keyid_as_int(kc_parent->kc_key.pxk_keyid), @@ -144,6 +148,9 @@ kc->kc_key = *xk; TAILQ_INSERT_HEAD(kch, kc, kc_entry); + if (flags == 0) + return (0); + db = keychain_dbopen(filesystem, flags, O_RDONLY); if (db == NULL) { if (flags & PEFS_KEYCHAIN_IGNORE_MISSING) @@ -172,6 +179,9 @@ int error; k = *xknext; + k.pxk_index = (uint32_t)random(); + k.pxk_alg = htole32(k.pxk_alg); + k.pxk_keybits = htole32(k.pxk_keybits); if (pefs_key_encrypt(&k, xk) != 0) return (-1); ==== //depot/projects/soc2009/gk_pefs/sys/crypto/salsa20/salsa20.c#2 (text+ko) ==== @@ -7,11 +7,8 @@ #include __FBSDID("$FreeBSD$"); -#include #include #include -#include -#include #include @@ -254,23 +251,3 @@ } } -static int -salsa20_modevent(module_t mod, int type, void *unused) -{ - switch (type) { - case MOD_LOAD: - case MOD_UNLOAD: - return (0); - } - return (EOPNOTSUPP); -} - -static moduledata_t salsa20_mod = { - "salsa20", - salsa20_modevent, - NULL -}; - -DECLARE_MODULE(salsa20, salsa20_mod, SI_SUB_DRIVERS, SI_ORDER_MIDDLE); -MODULE_VERSION(salsa20, 1); - ==== //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs.h#9 (text+ko) ==== @@ -45,16 +45,19 @@ #include #define PEFS_ALG_SALSA20 1 +#define PEFS_ALG_AES_CTR 2 +#define PEFS_ALG_CAMELLIA_CTR 3 #define PEFS_TWEAK_SIZE 8 #define PEFS_KEY_BITS 512 #define PEFS_KEY_SIZE (PEFS_KEY_BITS / 8) #define PEFS_KEYID_SIZE 8 -#define PEFS_NAME_CSUM_SIZE 2 +#define PEFS_NAME_CSUM_SIZE 8 struct pefs_xkey { - int pxk_index; - int pxk_alg; + uint32_t pxk_index; + uint32_t pxk_alg; + uint32_t pxk_keybits; char pxk_keyid[PEFS_KEYID_SIZE]; char pxk_key[PEFS_KEY_SIZE]; }; @@ -70,12 +73,16 @@ #define PEFS_NAME_NTOP_SIZE(a) (((a) * 4 + 2)/3) #define PEFS_NAME_PTON_SIZE(a) (((a) * 3)/4) +struct pefs_alg; + TAILQ_HEAD(pefs_key_head, pefs_key); struct pefs_key { + TAILQ_ENTRY(pefs_key) pk_entry; volatile u_int pk_refcnt; - int pk_alg; - TAILQ_ENTRY(pefs_key) pk_entry; + int pk_algid; + int pk_keybits; + const struct pefs_alg *pk_alg; struct mtx *pk_entry_lock; char pk_name[PEFS_KEY_SIZE]; char pk_data[PEFS_KEY_SIZE]; @@ -169,7 +176,7 @@ struct pefs_ctx * pefs_ctx_get(void); void pefs_ctx_free(struct pefs_ctx *ctx); -struct pefs_key * pefs_key_get(int alg, const char *key, const char *keyid); +struct pefs_key * pefs_key_get(int alg, int keybits, const char *key, const char *keyid); struct pefs_key * pefs_key_ref(struct pefs_key *pk); void pefs_key_release(struct pefs_key *pk); ==== //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs_crypto.c#7 (text+ko) ==== @@ -26,8 +26,8 @@ * $FreeBSD$ */ -#include #include +#include #include #include #include @@ -37,10 +37,55 @@ #include +#include +#include #include #include +#include + +typedef void algop_keysetup_t(struct pefs_ctx *ctx, const uint8_t *key, uint32_t keybits); +typedef void algop_ivsetup_t(struct pefs_ctx *ctx, const uint8_t *iv, uint64_t offset); +typedef void algop_crypt_t(struct pefs_ctx *ctx, const uint8_t *plaintext, uint8_t *ciphertext, uint32_t len); +typedef void algop_cryptblock_t(struct pefs_ctx *ctx, uint8_t *data); + +struct pefs_alg { + int pa_id; + algop_keysetup_t *pa_keysetup; + algop_ivsetup_t *pa_ivsetup; + algop_crypt_t *pa_crypt; +}; + +static algop_keysetup_t pefs_salsa20_keysetup; +static algop_ivsetup_t pefs_salsa20_ivsetup; +static algop_crypt_t pefs_salsa20_crypt; +static algop_ivsetup_t pefs_ctr_ivsetup; +static algop_keysetup_t pefs_aes_keysetup; +static algop_crypt_t pefs_aes_crypt; +static algop_keysetup_t pefs_camellia_keysetup; +static algop_crypt_t pefs_camellia_crypt; + +static const struct pefs_alg pefs_alg_salsa20 = { + PEFS_ALG_SALSA20, + pefs_salsa20_keysetup, + pefs_salsa20_ivsetup, + pefs_salsa20_crypt +}; +static const struct pefs_alg pefs_alg_aes = { + PEFS_ALG_AES_CTR, + pefs_aes_keysetup, + pefs_ctr_ivsetup, + pefs_aes_crypt +}; + +static const struct pefs_alg pefs_alg_camellia = { + PEFS_ALG_CAMELLIA_CTR, + pefs_camellia_keysetup, + pefs_ctr_ivsetup, + pefs_camellia_crypt +}; + static const char magic_tweak_name[PEFS_TWEAK_SIZE] = { 0x5c, 0x83, 0xcb, 0x96, 0x2f, 0xaf, 0x3b, 0xb5, }; @@ -51,8 +96,26 @@ 0xc8, 0x27, 0xa3, 0x7e, 0xcf, 0x86, 0x3d, 0x0d, }; +#define PEFS_CTR_BLOCK_SIZE 16 + +CTASSERT(PEFS_TWEAK_SIZE == 64/8); +CTASSERT(CAMELLIA_BLOCK_SIZE == PEFS_CTR_BLOCK_SIZE); + +struct pefs_ctr { + uint64_t pctr_offset; + uint32_t pctr_pos; + char pctr_tweak[PEFS_TWEAK_SIZE]; + char pctr_block[PEFS_CTR_BLOCK_SIZE]; +} ; + struct pefs_ctx { - salsa20_ctx pctx_salsa; + struct pefs_ctr pctx_ctr; + union { + camellia_ctx pctx_camellia; + rijndael_ctx pctx_aes; + salsa20_ctx pctx_salsa; + struct pefs_hmac_ctx pctx_hmac; + } o; }; static uma_zone_t pefs_ctx_zone; @@ -101,30 +164,50 @@ memcpy(tweak, magic_tweak_keygen, PEFS_TWEAK_SIZE); for (i = 1; i < MAGIC_KEYGEN_ITERATIONS; i++) { - salsa20_keysetup(&ctx->pctx_salsa, key, PEFS_KEY_BITS); - salsa20_ivsetup(&ctx->pctx_salsa, tweak, i * 64); - salsa20_crypt(&ctx->pctx_salsa, key, key, PEFS_KEY_SIZE); + salsa20_keysetup(&ctx->o.pctx_salsa, key, 256); + salsa20_ivsetup(&ctx->o.pctx_salsa, tweak, i * 64); + salsa20_crypt(&ctx->o.pctx_salsa, key, key, PEFS_KEY_SIZE); for (j = 0; j < PEFS_TWEAK_SIZE; j++) tweak[j]++; } } struct pefs_key * -pefs_key_get(int alg, const char *key, const char *keyid) +pefs_key_get(int alg, int keybits, const char *key, const char *keyid) { struct pefs_ctx *ctx; struct pefs_key *pk; + pk = uma_zalloc(pefs_key_zone, M_WAITOK | M_ZERO); + switch (alg) { case PEFS_ALG_SALSA20: + pk->pk_alg = &pefs_alg_salsa20; + if (keybits == 256) + pk->pk_keybits = keybits; + break; + case PEFS_ALG_AES_CTR: + pk->pk_alg = &pefs_alg_aes; + if (keybits == 128 || keybits == 192 || keybits == 256) + pk->pk_keybits = keybits; + break; + case PEFS_ALG_CAMELLIA_CTR: + pk->pk_alg = &pefs_alg_camellia; + if (keybits == 128 || keybits == 192 || keybits == 256) + pk->pk_keybits = keybits; break; default: + uma_zfree(pefs_key_zone, pk); printf("pefs: unknown algorithm %d\n", alg); return (NULL); } + if (pk->pk_keybits == 0) { + uma_zfree(pefs_key_zone, pk); + printf("pefs: invalid key size %d for algorithm %d\n", keybits, alg); + return (NULL); + } + pk->pk_algid = alg; - pk = uma_zalloc(pefs_key_zone, M_WAITOK | M_ZERO); - pk->pk_alg = alg; refcount_init(&pk->pk_refcnt, 1); memcpy(pk->pk_keyid, keyid, PEFS_KEYID_SIZE); @@ -244,6 +327,7 @@ void pefs_data_encrypt(struct pefs_ctx *ctx, struct pefs_tkey *ptk, off_t offset, struct pefs_chunk *pc) { + const struct pefs_alg *alg; struct iovec *iov; int free_ctx = 0; @@ -256,10 +340,11 @@ free_ctx = 1; } - salsa20_keysetup(&ctx->pctx_salsa, ptk->ptk_key->pk_data, PEFS_KEY_BITS); - salsa20_ivsetup(&ctx->pctx_salsa, ptk->ptk_tweak, offset); + alg = ptk->ptk_key->pk_alg; + alg->pa_keysetup(ctx, ptk->ptk_key->pk_data, ptk->ptk_key->pk_keybits); + alg->pa_ivsetup(ctx, ptk->ptk_tweak, offset); for (iov = pc->pc_iov; iov < pc->pc_iov + pc->pc_iovcnt; iov++) { - salsa20_crypt(&ctx->pctx_salsa, iov->iov_base, iov->iov_base, + alg->pa_crypt(ctx, iov->iov_base, iov->iov_base, iov->iov_len); } @@ -273,43 +358,19 @@ pefs_data_encrypt(ctx, ptk, offset, pc); } -/* - * Compute Internet Checksum - */ -static u_short -pefs_name_checksum(void *mem, size_t count) +static inline void +pefs_name_checksum(struct pefs_ctx *ctx, struct pefs_key *pk, u_char *csum, const void *mem, size_t count) { - u_short *buf = mem; - u_int sum = 0; - - while (count > 1) { - sum += *buf++; - count -= 2; - } - - /* Fold 32-bit sum to 16 bits */ - while (sum >> 16) - sum = (sum & 0xffff) + (sum >> 16); - - /* Add left-over byte, if any */ - if (count > 0) { - sum += * (unsigned char *) buf; - sum <<= 8; - } - - /* Fold 32-bit sum to 16 bits */ - while (sum >> 16) - sum = (sum & 0xffff) + (sum >> 16); - - return (~sum & 0xffff); + pefs_hmac(&ctx->o.pctx_hmac, pk->pk_name, pk->pk_keybits / 8, + mem, count, csum, PEFS_NAME_CSUM_SIZE); } int pefs_name_encrypt(struct pefs_ctx *ctx, struct pefs_tkey *ptk, const char *plain, size_t plain_len, char *enc, size_t enc_size) { + const struct pefs_alg *alg; char *buf; size_t size; - u_short csum; int free_ctx = 0; int r; @@ -318,6 +379,7 @@ PEFSDEBUG("!!!! %s: NULL key\n", __func__); return (-1); } + alg = ptk->ptk_key->pk_alg; size = PEFS_TWEAK_SIZE + plain_len + PEFS_NAME_CSUM_SIZE; if (enc_size < PEFS_NAME_NTOP_SIZE(size)) { @@ -326,22 +388,22 @@ return (-1); } + if (ctx == NULL) { + ctx = pefs_ctx_get(); + free_ctx = 1; + } + buf = malloc(size, M_PEFSBUF, M_WAITOK); memcpy(buf, ptk->ptk_tweak, PEFS_TWEAK_SIZE); memcpy(buf + PEFS_TWEAK_SIZE, plain, plain_len); - bzero(buf + size - PEFS_NAME_CSUM_SIZE, PEFS_NAME_CSUM_SIZE); - csum = pefs_name_checksum(buf, size); - memcpy(buf + size - PEFS_NAME_CSUM_SIZE, &csum, PEFS_NAME_CSUM_SIZE); - if (ctx == NULL) { - ctx = pefs_ctx_get(); - free_ctx = 1; - } + alg->pa_keysetup(ctx, ptk->ptk_key->pk_name, ptk->ptk_key->pk_keybits); + alg->pa_ivsetup(ctx, magic_tweak_name, 0); + alg->pa_crypt(ctx, buf, buf, size - PEFS_NAME_CSUM_SIZE); - salsa20_keysetup(&ctx->pctx_salsa, ptk->ptk_key->pk_name, PEFS_KEY_BITS); - salsa20_ivsetup(&ctx->pctx_salsa, magic_tweak_name, 0); - salsa20_crypt(&ctx->pctx_salsa, buf, buf, size); + pefs_name_checksum(ctx, ptk->ptk_key, buf + size - PEFS_NAME_CSUM_SIZE, + buf, size - PEFS_NAME_CSUM_SIZE); if (free_ctx) pefs_ctx_free(ctx); @@ -358,8 +420,9 @@ int pefs_name_decrypt(struct pefs_ctx *ctx, struct pefs_key *pk, struct pefs_tkey *ptk, const char *enc, size_t enc_len, char *plain, size_t plain_size) { + const struct pefs_alg *alg; struct pefs_key *ki; - char *dec; + char csum[PEFS_NAME_CSUM_SIZE]; int free_ctx = 0; int r, ki_rev; @@ -367,6 +430,7 @@ PEFSDEBUG("!!!! %s: NULL pk\n", __func__); return (-1); } + alg = pk->pk_alg; if (enc == plain) { PEFSDEBUG("pefs_name_decrypt: enc == plain\n"); @@ -386,24 +450,11 @@ ki = pk; ki_rev = 0; - if (plain_size >= r * 2) - dec = plain + r; - else - dec = plain; do { - salsa20_keysetup(&ctx->pctx_salsa, ki->pk_name, PEFS_KEY_BITS); - salsa20_ivsetup(&ctx->pctx_salsa, magic_tweak_name, 0); - salsa20_crypt(&ctx->pctx_salsa, plain, dec, r); - - if (pefs_name_checksum(dec, r) == 0) + pefs_name_checksum(ctx, ki, csum, plain, r - PEFS_NAME_CSUM_SIZE); + if (memcmp(csum, plain + r - PEFS_NAME_CSUM_SIZE, PEFS_NAME_CSUM_SIZE) == 0) break; - if (plain == dec) { - /* Restore previous value. */ - salsa20_ivsetup(&ctx->pctx_salsa, magic_tweak_name, 0); - salsa20_crypt(&ctx->pctx_salsa, dec, plain, r); - } - if (!ki_rev) { ki = TAILQ_NEXT(ki, pk_entry); if (ki == NULL) { @@ -422,13 +473,17 @@ if (ki == NULL) return (-1); + alg->pa_keysetup(ctx, ki->pk_name, ki->pk_keybits); + alg->pa_ivsetup(ctx, magic_tweak_name, 0); + alg->pa_crypt(ctx, plain, plain, r - PEFS_NAME_CSUM_SIZE); + if (ptk) { ptk->ptk_key = ki; - memcpy(ptk->ptk_tweak, dec, PEFS_TWEAK_SIZE); + memcpy(ptk->ptk_tweak, plain, PEFS_TWEAK_SIZE); } r -= PEFS_TWEAK_SIZE + PEFS_NAME_CSUM_SIZE; - memcpy(plain, dec + PEFS_TWEAK_SIZE, r); + memcpy(plain, plain + PEFS_TWEAK_SIZE, r); plain[r] = '\0'; // PEFSDEBUG("pefs_name_decrypt: %d; %.*s => %.*s\n", r, enc_len, enc, r < 0 ? 0 : r, plain); @@ -436,3 +491,96 @@ return (r); } +static void +pefs_salsa20_keysetup(struct pefs_ctx *ctx, const uint8_t *key, uint32_t keybits) +{ + salsa20_keysetup(&ctx->o.pctx_salsa, key, keybits); +} + +static void +pefs_salsa20_ivsetup(struct pefs_ctx *ctx, const uint8_t *iv, uint64_t offset) +{ + salsa20_ivsetup(&ctx->o.pctx_salsa, iv, offset); +} + +static void +pefs_salsa20_crypt(struct pefs_ctx *ctx, const uint8_t *plaintext, uint8_t *ciphertext, uint32_t len) +{ + salsa20_crypt(&ctx->o.pctx_salsa, plaintext, ciphertext, len); +} + +static void +pefs_ctr_ivsetup(struct pefs_ctx *ctx, const uint8_t *iv, uint64_t offset) +{ + ctx->pctx_ctr.pctr_offset = offset / PEFS_CTR_BLOCK_SIZE; + ctx->pctx_ctr.pctr_pos = offset % PEFS_CTR_BLOCK_SIZE; + memcpy(ctx->pctx_ctr.pctr_tweak, iv, PEFS_TWEAK_SIZE); +} + +static inline void +pefs_ctr_crypt(struct pefs_ctx *ctx, algop_cryptblock_t *cryptblock, + const uint8_t *plaintext, uint8_t *ciphertext, uint32_t len) +{ + struct pefs_ctr *c = &ctx->pctx_ctr; + uint64_t le_offset; + uint32_t pos, l, i; + + pos = c->pctr_pos; + while (len) { + l = pos + len > PEFS_CTR_BLOCK_SIZE ? PEFS_CTR_BLOCK_SIZE - pos : len; + le_offset = htole64(c->pctr_offset); + memcpy(c->pctr_block + PEFS_TWEAK_SIZE, &le_offset, sizeof(uint64_t)); + memcpy(c->pctr_block, c->pctr_tweak, PEFS_TWEAK_SIZE); + + cryptblock(ctx, c->pctr_block); + for (i = 0; i < l; i++) { + *(ciphertext++) = c->pctr_block[pos + i] ^ (*plaintext++); + } + pos = (pos + l) & (PEFS_CTR_BLOCK_SIZE - 1); + if (!pos) + c->pctr_offset++; + len -= l; + } + c->pctr_pos = pos; +} + +static void +pefs_camellia_keysetup(struct pefs_ctx *ctx, const uint8_t *key, uint32_t keybits) +{ + camellia_set_key(&ctx->o.pctx_camellia, key, keybits); +} + +static void +pefs_camellia_cryptblock(struct pefs_ctx *ctx, uint8_t *data) +{ + camellia_encrypt(&ctx->o.pctx_camellia, data, data); +} + +static void +pefs_camellia_crypt(struct pefs_ctx *ctx, const uint8_t *plaintext, + uint8_t *ciphertext, uint32_t len) +{ + pefs_ctr_crypt(ctx, pefs_camellia_cryptblock, + plaintext, ciphertext, len); +} + +static void +pefs_aes_keysetup(struct pefs_ctx *ctx, const uint8_t *key, uint32_t keybits) +{ + rijndael_set_key(&ctx->o.pctx_aes, key, keybits); +} + +static void +pefs_aes_cryptblock(struct pefs_ctx *ctx, uint8_t *data) +{ + rijndael_encrypt(&ctx->o.pctx_aes, data, data); +} + +static void +pefs_aes_crypt(struct pefs_ctx *ctx, const uint8_t *plaintext, + uint8_t *ciphertext, uint32_t len) +{ + pefs_ctr_crypt(ctx, pefs_aes_cryptblock, + plaintext, ciphertext, len); +} + ==== //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs_vfsops.c#8 (text+ko) ==== @@ -222,10 +222,6 @@ { struct vnode *vp; - PEFSDEBUG("pefs_root(mp = %p, vp = %p->%p)\n", (void *)mp, - (void *)VFS_TO_PEFS(mp)->pm_rootvp, - (void *)PEFS_LOWERVP(VFS_TO_PEFS(mp)->pm_rootvp)); - /* * Return locked reference to root. */ ==== //depot/projects/soc2009/gk_pefs/sys/fs/pefs/pefs_vnops.c#10 (text+ko) ==== @@ -101,7 +101,7 @@ pec->pec_cn.cn_nameptr = pec->pec_buf; pec->pec_cn.cn_namelen = encname_len; pec->pec_cn.cn_consume = 0; - PEFSDEBUG("%s: name=%s len=%d\n", __func__, (char*)pec->pec_buf, encname_len); + PEFSDEBUG("%s: name=%s len=%d pk=%p\n", __func__, (char*)pec->pec_buf, encname_len, pec->pec_tkey.ptk_key); } static int @@ -112,7 +112,7 @@ MPASS(pec != NULL && cnp != NULL); pec->pec_cn = *cnp; - if (/* pk == NULL || */ (cnp->cn_flags & ISDOTDOT) || pefs_name_skip(cnp->cn_nameptr, cnp->cn_namelen)) { + if ((cnp->cn_flags & ISDOTDOT) || pefs_name_skip(cnp->cn_nameptr, cnp->cn_namelen)) { pefs_enccn_init(pec, NULL, cnp->cn_nameptr, cnp->cn_namelen, cnp); return (0); } @@ -290,33 +290,35 @@ return (error); } +#define PEFS_FLUSHKEY_ALL 1 + /* - * Recycle vnodes using key pk. - * If pk is NULL recycle all vnodes with PN_HASKEY flag set. + * Recycle vnodes with key pk. + * + * pk == NULL => recycle vnodes without key + * flags & PEFS_FLUSHKEY_ALL => recycle all vnodes with key */ -#define PEFS_FLUSHKEY_ALL 1 - static int pefs_flushkey(struct mount *mp, struct thread *td, int flags, struct pefs_key *pk) { - struct vnode *vp, *mvp; + struct vnode *vp, *rootvp, *mvp; struct pefs_node *pn; int error; - PEFSDEBUG("pefs_flushkey: pk=%p\n", pk); + PEFSDEBUG("pefs_flushkey: pk=%p flags=%d\n", pk, flags); vflush(mp, 0, 0, td); - if ((flags & PEFS_FLUSHKEY_ALL) == 0 && pk == NULL) - goto loop_end; MNT_ILOCK(mp); + rootvp = VFS_TO_PEFS(mp)->pm_rootvp; loop: MNT_VNODE_FOREACH(vp, mp, mvp) { - if (vp->v_type != VREG && vp->v_type != VDIR) + if ((vp->v_type != VREG && vp->v_type != VDIR) || vp == rootvp) continue; VI_LOCK(vp); pn = VP_TO_PN(vp); - if ((pn->pn_flags & PN_HASKEY) && - ((flags & PEFS_FLUSHKEY_ALL) || pn->pn_tkey.ptk_key == pk)) { + if (((pn->pn_flags & PN_HASKEY) && + ((flags & PEFS_FLUSHKEY_ALL) || pn->pn_tkey.ptk_key == pk)) || + ((pn->pn_flags & PN_HASKEY) == 0 && pk == NULL)) { vholdl(vp); MNT_IUNLOCK(mp); error = vn_lock(vp, LK_INTERLOCK | LK_EXCLUSIVE); @@ -336,7 +338,7 @@ } } MNT_IUNLOCK(mp); -loop_end: + cache_purgevfs(mp); return (0); } @@ -1568,50 +1570,54 @@ PEFSDEBUG("pefs_setkey: name=%s; vp=%p; dvp=%p\n", cn.cn_nameptr, vp, dvp); MPASS(dvp->v_mount == vp->v_mount); + lvp = PEFS_LOWERVP(vp); + ldvp = PEFS_LOWERVP(dvp); vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); + vdrop(dvp); /* vhold by vn_vptocnp */ error = pefs_enccn_get(&fenccn, vp, &cn); if (error) { + VOP_UNLOCK(lvp, 0); + VOP_UNLOCK(ldvp, 0); PEFSDEBUG("%s: pefs_enccn_get failed: %d\n", __func__, error); goto out; } PEFSDEBUG("pefs_setkey: fromname=%s; key=%p\n", fenccn.pec_cn.cn_nameptr, fenccn.pec_tkey.ptk_key); error = pefs_enccn_create(&tenccn, pk, NULL, &cn); if (error) { + VOP_UNLOCK(lvp, 0); + VOP_UNLOCK(ldvp, 0); pefs_enccn_free(&fenccn); goto out; } PEFSDEBUG("pefs_setkey: toname=%s; key=%p\n", tenccn.pec_cn.cn_nameptr, tenccn.pec_tkey.ptk_key); - lvp = PEFS_LOWERVP(vp); - ldvp = PEFS_LOWERVP(dvp); + PEFSDEBUG("pefs_setkey: lvp usecount=%d, ldvp usecount=%d\n", lvp->v_usecount, ldvp->v_usecount); + vref(lvp); vref(lvp); vref(ldvp); + vref(ldvp); error = VOP_RENAME(ldvp, lvp, &fenccn.pec_cn, ldvp, lvp, &tenccn.pec_cn); if (error) { - VOP_UNLOCK(dvp, 0); - VOP_UNLOCK(vp, 0); + vput(lvp); + vput(ldvp); vrele(lvp); vrele(ldvp); + PEFSDEBUG("pefs_setkey: error; lvp usecount=%d, ldvp usecount=%d\n", lvp->v_usecount, ldvp->v_usecount); } else { - pefs_key_release(pn->pn_tkey.ptk_key); - pn->pn_tkey = tenccn.pec_tkey; - pefs_key_ref(pn->pn_tkey.ptk_key); + PEFSDEBUG("pefs_setkey: ok; lvp usecount=%d, ldvp usecount=%d\n", lvp->v_usecount, ldvp->v_usecount); + vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); + vgone(vp); + VOP_UNLOCK(vp, 0); } pefs_enccn_free(&fenccn); pefs_enccn_free(&tenccn); out: - vdrop(dvp); free(namebuf, M_PEFSBUF); - if (!error) { - cache_purge(dvp); - cache_purge(vp); - } - return (error); } @@ -1642,7 +1648,8 @@ TAILQ_FOREACH(pk, &pm->pm_keys, pk_entry) { if (i++ == xk->pxk_index) { memcpy(xk->pxk_keyid, pk->pk_keyid, PEFS_KEYID_SIZE); - xk->pxk_alg = pk->pk_alg; + xk->pxk_alg = pk->pk_algid; + xk->pxk_keybits = pk->pk_keybits; break; } } @@ -1667,7 +1674,7 @@ break; case PEFS_ADDKEY: PEFSDEBUG("pefs_ioctl: add key: %8D\n", xk->pxk_keyid, ""); - pk = pefs_key_get(xk->pxk_alg, xk->pxk_key, xk->pxk_keyid); + pk = pefs_key_get(xk->pxk_alg, xk->pxk_keybits, xk->pxk_key, xk->pxk_keyid); if (pk == NULL) { PEFSDEBUG("pefs_key_get: error\n"); error = ENOENT; ==== //depot/projects/soc2009/gk_pefs/sys/modules/pefs/Makefile#5 (text+ko) ==== @@ -4,7 +4,7 @@ KMOD= pefs SRCS= vnode_if.h \ - pefs_subr.c pefs_vfsops.c pefs_vnops.c pefs_xbase64.c pefs_crypto.c + pefs_subr.c pefs_vfsops.c pefs_vnops.c pefs_xbase64.c pefs_crypto.c pefs_hmac.c DEBUG_FLAGS= -g -DPEFS_DEBUG .include From owner-p4-projects@FreeBSD.ORG Wed Aug 12 20:52:39 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0F8B01065674; Wed, 12 Aug 2009 20:52:39 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C3EC9106566C for ; Wed, 12 Aug 2009 20:52:38 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B42EF8FC54 for ; Wed, 12 Aug 2009 20:52:38 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7CKqctS056082 for ; Wed, 12 Aug 2009 20:52:38 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7CKqcZG056080 for perforce@freebsd.org; Wed, 12 Aug 2009 20:52:38 GMT (envelope-from zec@fer.hr) Date: Wed, 12 Aug 2009 20:52:38 GMT Message-Id: <200908122052.n7CKqcZG056080@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167259 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 20:52:40 -0000 http://perforce.freebsd.org/chv.cgi?CH=167259 Change 167259 by zec@zec_tpx32 on 2009/08/12 20:51:39 When registering new sub-domain "protocol" (i.e. defined by its struct protosw) via pf_proto_register(), iterate over all existing vnets to call that protocol's pr_init() routine. Calling pr_init() only in the current vnet was a bug. Affected files ... .. //depot/projects/vimage-commit2/src/sys/kern/uipc_domain.c#12 edit Differences ... ==== //depot/projects/vimage-commit2/src/sys/kern/uipc_domain.c#12 (text+ko) ==== @@ -336,6 +336,7 @@ int pf_proto_register(int family, struct protosw *npr) { + VNET_ITERATOR_DECL(vnet_iter); struct domain *dp; struct protosw *pr, *fpr; @@ -391,7 +392,13 @@ mtx_unlock(&dom_mtx); /* Initialize and activate the protocol. */ - protosw_init(fpr); + VNET_LIST_RLOCK(); + VNET_FOREACH(vnet_iter) { + CURVNET_SET_QUIET(vnet_iter); + protosw_init(fpr); + CURVNET_RESTORE(); + } + VNET_LIST_RUNLOCK(); return (0); } From owner-p4-projects@FreeBSD.ORG Wed Aug 12 21:08:57 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id ED774106566C; Wed, 12 Aug 2009 21:08:56 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ACCEC106564A for ; Wed, 12 Aug 2009 21:08:56 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 9C1DE8FC41 for ; Wed, 12 Aug 2009 21:08:56 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7CL8uBr058400 for ; Wed, 12 Aug 2009 21:08:56 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7CL8uhJ058398 for perforce@freebsd.org; Wed, 12 Aug 2009 21:08:56 GMT (envelope-from zec@fer.hr) Date: Wed, 12 Aug 2009 21:08:56 GMT Message-Id: <200908122108.n7CL8uhJ058398@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167260 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 21:08:57 -0000 http://perforce.freebsd.org/chv.cgi?CH=167260 Change 167260 by zec@zec_tpx32 on 2009/08/12 21:08:10 Significanlty simplify / reduce previous patch aimed at making ipdivert work with VIMAGE. The restriction is that with current patch it is not permitted to kldunload -f ipdivert if built with options VIMAGE enabled. The patch is verified to work with natd running in a non-default vimage. Diff size against head/sys/netinet/ip_divert.c: tpx32% wc before.diff 287 1073 7891 before.diff tpx32% wc after.diff 90 261 2370 after.diff Affected files ... .. //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#38 edit Differences ... ==== //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#38 (text+ko) ==== @@ -125,11 +125,13 @@ static u_long div_sendspace = DIVSNDQ; /* XXX sysctl ? */ static u_long div_recvspace = DIVRCVQ; /* XXX sysctl ? */ +static eventhandler_tag ip_divert_event_tag; + /* * Initialize divert connection block queue. */ static void -div_zone_change(struct vnet *vnet) +div_zone_change(void *tag) { VNET_ITERATOR_DECL(vnet_iter); @@ -139,7 +141,7 @@ uma_zone_set_max(V_divcbinfo.ipi_zone, maxsockets); CURVNET_RESTORE(); } - VNET_LIST_RUNLOCK_NOSLEEP(); + VNET_LIST_RUNLOCK_NOSLEEP(); } static int @@ -159,6 +161,30 @@ INP_LOCK_DESTROY(inp); } +static void +div_init(void) +{ + + INP_INFO_LOCK_INIT(&V_divcbinfo, "div"); + LIST_INIT(&V_divcb); + V_divcbinfo.ipi_listhead = &V_divcb; +#ifdef VIMAGE + V_divcbinfo.ipi_vnet = curvnet; +#endif + /* + * XXX We don't use the hash list for divert IP, but it's easier + * to allocate a one entry hash list than it is to check all + * over the place for hashbase == NULL. + */ + V_divcbinfo.ipi_hashbase = hashinit(1, M_PCB, &V_divcbinfo.ipi_hashmask); + V_divcbinfo.ipi_porthashbase = hashinit(1, M_PCB, + &V_divcbinfo.ipi_porthashmask); + V_divcbinfo.ipi_zone = uma_zcreate("divcb", sizeof(struct inpcb), + NULL, NULL, div_inpcb_init, div_inpcb_fini, UMA_ALIGN_PTR, + UMA_ZONE_NOFREE); + uma_zone_set_max(V_divcbinfo.ipi_zone, maxsockets); +} + /* * IPPROTO_DIVERT is not in the real IP protocol number space; this * function should never be called. Just in case, drop any packets. @@ -505,8 +531,7 @@ div_bind(struct socket *so, struct sockaddr *nam, struct thread *td) { struct inpcb *inp; - int error = 0; - struct in_addr laddr; + int error; inp = sotoinpcb(so); KASSERT(inp != NULL, ("div_bind: inp == NULL")); @@ -517,32 +542,12 @@ * XXX -- divert should not be abusing in_pcbind * and should probably have its own family. */ - if (inp->inp_lport != 0 || inp->inp_laddr.s_addr != INADDR_ANY) - return (EINVAL); - /* possibly not needed.. but play safe */ - inp->inp_fport = 0; - inp->inp_faddr.s_addr = INADDR_ANY; - if (nam->sa_family != AF_INET) return EAFNOSUPPORT; - - laddr.s_addr = INADDR_ANY; - /* just to be sure, since the man page says it is ignored. */ ((struct sockaddr_in *)nam)->sin_addr.s_addr = INADDR_ANY; - INP_INFO_WLOCK(&V_divcbinfo); INP_WLOCK(inp); - if (in_pcblookup_local(&V_divcbinfo, laddr, - ((struct sockaddr_in *)nam)->sin_port, 0/*not wild ok */, - td->td_ucred)) { - error = EADDRNOTAVAIL; - } else { - inp->inp_lport = ((struct sockaddr_in *)nam)->sin_port; - if (in_pcbinshash(inp) != 0) { - inp->inp_lport = 0; - error = EAGAIN; - } - } + error = in_pcbbind(inp, nam, td->td_ucred); INP_WUNLOCK(inp); INP_INFO_WUNLOCK(&V_divcbinfo); return error; @@ -710,22 +715,36 @@ .pr_input = div_input, .pr_ctlinput = div_ctlinput, .pr_ctloutput = ip_ctloutput, - .pr_init = NULL, + .pr_init = div_init, .pr_usrreqs = &div_usrreqs }; -static int div_loaded = 0; -static eventhandler_tag div_evh_tag; static int div_modevent(module_t mod, int type, void *unused) { int err = 0; +#ifndef VIMAGE + int n; +#endif switch (type) { case MOD_LOAD: - + /* + * Protocol will be initialized by pf_proto_register(). + * We don't have to register ip_protox because we are not + * a true IP protocol that goes over the wire. + */ + err = pf_proto_register(PF_INET, &div_protosw); + if (err != 0) + return (err); + ip_divert_ptr = divert_packet; + ip_divert_event_tag = EVENTHANDLER_REGISTER(maxsockets_change, + div_zone_change, NULL, EVENTHANDLER_PRI_ANY); break; case MOD_QUIESCE: +#ifdef VIMAGE + case MOD_UNLOAD: +#endif /* * IPDIVERT may normally not be unloaded because of the * potential race conditions. Tell kldunload we can't be @@ -733,8 +752,34 @@ */ err = EPERM; break; +#ifndef VIMAGE case MOD_UNLOAD: + /* + * Forced unload. + * + * Module ipdivert can only be unloaded if no sockets are + * connected. Maybe this can be changed later to forcefully + * disconnect any open sockets. + * + * XXXRW: Note that there is a slight race here, as a new + * socket open request could be spinning on the lock and then + * we destroy the lock. + */ + INP_INFO_WLOCK(&V_divcbinfo); + n = V_divcbinfo.ipi_count; + if (n != 0) { + err = EBUSY; + INP_INFO_WUNLOCK(&V_divcbinfo); + break; + } + ip_divert_ptr = NULL; + err = pf_proto_unregister(PF_INET, IPPROTO_DIVERT, SOCK_RAW); + INP_INFO_WUNLOCK(&V_divcbinfo); + INP_INFO_LOCK_DESTROY(&V_divcbinfo); + uma_zdestroy(V_divcbinfo.ipi_zone); + EVENTHANDLER_DEREGISTER(maxsockets_change, ip_divert_event_tag); break; +#endif /* !VIMAGE */ default: err = EOPNOTSUPP; break; @@ -748,124 +793,6 @@ 0 }; -/* init on boot or module load */ -static void -div_init(void) -{ - int err; - - /* - * Protocol will be initialized by pf_proto_register(). - * We don't have to register ip_protox because we are not - * a true IP protocol that goes over the wire. - */ - err = pf_proto_register(PF_INET, &div_protosw); - if (err == 0) { - ip_divert_ptr = divert_packet; - div_evh_tag = - EVENTHANDLER_REGISTER(maxsockets_change, div_zone_change, - NULL, EVENTHANDLER_PRI_ANY); - div_loaded = 1; - } - return; -} - -/**************** - * Stuff that must be initialized for every instance - * (including the first of course). - */ -static int -div_vnet_init(const void *unused) -{ - if (div_loaded == 0) - return (0); - INP_INFO_LOCK_INIT(&V_divcbinfo, "div"); - LIST_INIT(&V_divcb); - V_divcbinfo.ipi_listhead = &V_divcb; -#ifdef VIMAGE - V_divcbinfo.ipi_vnet = curvnet; -#endif - /* - * XXX We don't use the hash list for divert IP, but it's easier - * to allocate a one entry hash list than it is to check all - * over the place for hashbase == NULL. - */ - V_divcbinfo.ipi_hashbase = hashinit(1, M_PCB, &V_divcbinfo.ipi_hashmask); - V_divcbinfo.ipi_porthashbase = hashinit(1, M_PCB, - &V_divcbinfo.ipi_porthashmask); - V_divcbinfo.ipi_zone = uma_zcreate("divcb", sizeof(struct inpcb), - NULL, NULL, div_inpcb_init, div_inpcb_fini, UMA_ALIGN_PTR, - UMA_ZONE_NOFREE); - uma_zone_set_max(V_divcbinfo.ipi_zone, maxsockets); - return (0); -} - -/********************** - * Called for the removal of the last instance only on module unload. - */ -static void -div_uninit(void) -{ - int err; - - if (div_loaded == 0) - return; - div_loaded = 0; - ip_divert_ptr = NULL; - EVENTHANDLER_DEREGISTER(maxsockets_change, div_evh_tag); - err = pf_proto_unregister(PF_INET, IPPROTO_DIVERT, SOCK_RAW); -} - -/*********************** - * Called for the removal of each instance. - */ -static int -div_vnet_uninit(const void *unused) -{ - int err = 0; - int n; - - if (div_loaded == 0) - return (0); - /* - * Forced unload. - * - * Module ipdivert can only be unloaded if no sockets are - * connected. Maybe this can be changed later to forcefully - * disconnect any open sockets. - * - * XXXRW: Note that there is a slight race here, as a new - * socket open request could be spinning on the lock and then - * we destroy the lock. - */ - INP_INFO_WLOCK(&V_divcbinfo); - n = V_divcbinfo.ipi_count; - INP_INFO_WUNLOCK(&V_divcbinfo); - if (n != 0) { - err = EBUSY; - } else { - INP_INFO_LOCK_DESTROY(&V_divcbinfo); - uma_zdestroy(V_divcbinfo.ipi_zone); - } - return (err); -} - - -#define DIV_MAJOR_ORDER SI_SUB_PROTO_IFATTACHDOMAIN -#define DIV_MODULE_ORDER (SI_ORDER_ANY + 64) -#define DIV_SYSINIT_ORDER (DIV_MODULE_ORDER + 1) -#define DIV_VNET_ORDER (DIV_SYSINIT_ORDER + 1 ) - -DECLARE_MODULE(ipdivert, ipdivertmod, DIV_MAJOR_ORDER, DIV_MODULE_ORDER); +DECLARE_MODULE(ipdivert, ipdivertmod, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_ANY); MODULE_DEPEND(dummynet, ipfw, 2, 2, 2); MODULE_VERSION(ipdivert, 1); - -SYSINIT(div_init, DIV_MAJOR_ORDER, DIV_SYSINIT_ORDER, div_init, NULL); -SYSUNINIT(div_uninit, DIV_MAJOR_ORDER, DIV_SYSINIT_ORDER, - div_uninit, NULL); - -VNET_SYSINIT(div_vnet_init, DIV_MAJOR_ORDER, DIV_VNET_ORDER, - div_vnet_init, NULL); -VNET_SYSUNINIT(div_vnet_uninit, DIV_MAJOR_ORDER, DIV_VNET_ORDER, - div_vnet_uninit, NULL); - From owner-p4-projects@FreeBSD.ORG Wed Aug 12 21:40:31 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 95DF31065672; Wed, 12 Aug 2009 21:40:31 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 522F5106564A for ; Wed, 12 Aug 2009 21:40:31 +0000 (UTC) (envelope-from marinosi@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 420B08FC56 for ; Wed, 12 Aug 2009 21:40:31 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7CLeVMS061001 for ; Wed, 12 Aug 2009 21:40:31 GMT (envelope-from marinosi@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7CLeVFq060999 for perforce@freebsd.org; Wed, 12 Aug 2009 21:40:31 GMT (envelope-from marinosi@FreeBSD.org) Date: Wed, 12 Aug 2009 21:40:31 GMT Message-Id: <200908122140.n7CLeVFq060999@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marinosi@FreeBSD.org using -f From: Ilias Marinos To: Perforce Change Reviews Cc: Subject: PERFORCE change 167263 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 21:40:32 -0000 http://perforce.freebsd.org/chv.cgi?CH=167263 Change 167263 by marinosi@marinosi_redrum on 2009/08/12 21:40:24 - Fixed a leftover condition that was preventing some auditon_slice() commands to run. - Removed as_dev_name from struct audit_slice. Audit slices special device nodes should have the same name with the slice itself. Affected files ... .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#20 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.c#8 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.h#15 edit Differences ... ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#20 (text) ==== @@ -723,19 +723,27 @@ */ as_ptr = as; + + uprintf("audit_slice_create: Calling audit_slice_init()\n"); /* Initialize the base slice */ audit_slice_init(as, name); + uprintf("audit_slice_create: Returned from audit_slice_init()\n"); + /* * XXXRW: Possibly start worker before creating the device? * FIXED. */ /* Start audit worker thread. */ + uprintf("audit_slice_create: Calling audit_worker_start()\n"); audit_worker_start(as); + uprintf("audit_slice_create: Returned from audit_worker_start()\n"); /* Create the special device node */ + uprintf("audit_slice_create: Calling audit_slice_cdev_init()\n"); audit_slice_cdev_init(as); + uprintf("audit_slice_create: Returned from audit_slice_cdev_init()\n"); /* Insert the slice on the list */ TAILQ_INSERT_TAIL(&audit_slice_q, as, as_q); @@ -1371,8 +1379,6 @@ * function. */ case A_CREATESLICE: - if (length != sizeof(udata.au_slice)) - return (EINVAL); /* We shouldn't call this command for base slice! */ if (as == audit_base_slice) return (EINVAL); @@ -1383,18 +1389,12 @@ break; case A_UPDATESLICE: - if (length != sizeof(udata.au_slice)) - return (EINVAL); return (0); case A_GETSLICE: - if (length != sizeof(udata.au_slice)) - return (EINVAL); return (0); case A_REMOVESLICE: - if (length != sizeof(udata.au_slice)) - return (EINVAL); /* We cannot remove base slice! */ if (as == audit_base_slice) return (EINVAL); ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.c#8 (text+ko) ==== @@ -265,7 +265,7 @@ /* Create the special device file. */ as->as_dev = make_dev(&audit_slice_cdevsw, as->unit, as->uid, as->gid, - as->perms, "%s", as->as_dev_name); + as->perms, "%s", as->as_name); } /* ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.h#15 (text+ko) ==== @@ -148,9 +148,9 @@ /* * Applications need their slice device to submit their audit * records. Device specific variables here. + * Device name will be the same as slice name. */ struct cdev *as_dev; - char as_dev_name[AUDIT_DEV_NAME_LEN]; int unit; uid_t uid; gid_t gid; From owner-p4-projects@FreeBSD.ORG Wed Aug 12 21:58:48 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5674F1065676; Wed, 12 Aug 2009 21:58:48 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 162CE1065673 for ; Wed, 12 Aug 2009 21:58:48 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outC.internet-mail-service.net (outc.internet-mail-service.net [216.240.47.226]) by mx1.freebsd.org (Postfix) with ESMTP id F0D1A8FC4A for ; Wed, 12 Aug 2009 21:58:47 +0000 (UTC) Received: from idiom.com (mx0.idiom.com [216.240.32.160]) by out.internet-mail-service.net (Postfix) with ESMTP id C2999B2E72; Wed, 12 Aug 2009 14:58:47 -0700 (PDT) X-Client-Authorized: MaGic Cook1e X-Client-Authorized: MaGic Cook1e Received: from julian-mac.elischer.org (home.elischer.org [216.240.48.38]) by idiom.com (Postfix) with ESMTP id 2A6092D601B; Wed, 12 Aug 2009 14:58:47 -0700 (PDT) Message-ID: <4A833B16.2040301@elischer.org> Date: Wed, 12 Aug 2009 14:58:46 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.22 (Macintosh/20090605) MIME-Version: 1.0 To: Marko Zec References: <200908122108.n7CL8uhJ058398@repoman.freebsd.org> In-Reply-To: <200908122108.n7CL8uhJ058398@repoman.freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews Subject: Re: PERFORCE change 167260 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 21:58:49 -0000 Marko Zec wrote: > http://perforce.freebsd.org/chv.cgi?CH=167260 > > Change 167260 by zec@zec_tpx32 on 2009/08/12 21:08:10 > > Significanlty simplify / reduce previous patch aimed at > making ipdivert work with VIMAGE. The restriction is that > with current patch it is not permitted to kldunload -f > ipdivert if built with options VIMAGE enabled. The patch > is verified to work with natd running in a non-default vimage. > > Diff size against head/sys/netinet/ip_divert.c: > > tpx32% wc before.diff > 287 1073 7891 before.diff > tpx32% wc after.diff > 90 261 2370 after.diff > > Affected files ... > > .. //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#38 edit > > Differences ... > > ==== //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#38 (text+ko) ==== > > @@ -125,11 +125,13 @@ > static u_long div_sendspace = DIVSNDQ; /* XXX sysctl ? */ > static u_long div_recvspace = DIVRCVQ; /* XXX sysctl ? */ > > +static eventhandler_tag ip_divert_event_tag; > + > /* > * Initialize divert connection block queue. > */ > static void > -div_zone_change(struct vnet *vnet) > +div_zone_change(void *tag) > { > VNET_ITERATOR_DECL(vnet_iter); > > @@ -139,7 +141,7 @@ > uma_zone_set_max(V_divcbinfo.ipi_zone, maxsockets); > CURVNET_RESTORE(); > } > - VNET_LIST_RUNLOCK_NOSLEEP(); > + VNET_LIST_RUNLOCK_NOSLEEP(); > } > > static int > @@ -159,6 +161,30 @@ > INP_LOCK_DESTROY(inp); > } > > +static void > +div_init(void) > +{ > + > + INP_INFO_LOCK_INIT(&V_divcbinfo, "div"); > + LIST_INIT(&V_divcb); > + V_divcbinfo.ipi_listhead = &V_divcb; > +#ifdef VIMAGE > + V_divcbinfo.ipi_vnet = curvnet; > +#endif > + /* > + * XXX We don't use the hash list for divert IP, but it's easier > + * to allocate a one entry hash list than it is to check all > + * over the place for hashbase == NULL. > + */ > + V_divcbinfo.ipi_hashbase = hashinit(1, M_PCB, &V_divcbinfo.ipi_hashmask); > + V_divcbinfo.ipi_porthashbase = hashinit(1, M_PCB, > + &V_divcbinfo.ipi_porthashmask); > + V_divcbinfo.ipi_zone = uma_zcreate("divcb", sizeof(struct inpcb), > + NULL, NULL, div_inpcb_init, div_inpcb_fini, UMA_ALIGN_PTR, > + UMA_ZONE_NOFREE); > + uma_zone_set_max(V_divcbinfo.ipi_zone, maxsockets); > +} > + > /* > - } > + error = in_pcbbind(inp, nam, td->td_ucred); > INP_WUNLOCK(inp); > INP_INFO_WUNLOCK(&V_divcbinfo); > return error; > @@ -710,22 +715,36 @@ > .pr_input = div_input, > .pr_ctlinput = div_ctlinput, > .pr_ctloutput = ip_ctloutput, > - .pr_init = NULL, > + .pr_init = div_init, > .pr_usrreqs = &div_usrreqs If you are going to make pr_init() called for every vnet then pr_destroy should be as well. But in fact that is not really safe. (either of them) The trouble is that we can not guarantee that other protocols can handle being called multiple times in their init and destroy methods. Especially 3rd party protocols. We need to ensure only protocols that have been converted to run with multiple vnets are ever called with multiple vnets. for this reason the only safe way to do this is via the VNET_SYSINIT and VNET_SYSUNINIT calls. > }; > > -static int div_loaded = 0; > -static eventhandler_tag div_evh_tag; > static int > div_modevent(module_t mod, int type, void *unused) > { > int err = 0; > +#ifndef VIMAGE > + int n; > +#endif > > switch (type) { > case MOD_LOAD: > - > + /* > + * Protocol will be initialized by pf_proto_register(). > + * We don't have to register ip_protox because we are not > + * a true IP protocol that goes over the wire. > + */ > + err = pf_proto_register(PF_INET, &div_protosw); > + if (err != 0) > + return (err); > + ip_divert_ptr = divert_packet; > + ip_divert_event_tag = EVENTHANDLER_REGISTER(maxsockets_change, > + div_zone_change, NULL, EVENTHANDLER_PRI_ANY); > break; > case MOD_QUIESCE: > +#ifdef VIMAGE > + case MOD_UNLOAD: > +#endif > /* > * IPDIVERT may normally not be unloaded because of the > * potential race conditions. Tell kldunload we can't be > @@ -733,8 +752,34 @@ > */ > err = EPERM; > break; > +#ifndef VIMAGE > case MOD_UNLOAD: > + /* > + * Forced unload. > + * > + * Module ipdivert can only be unloaded if no sockets are > + * connected. Maybe this can be changed later to forcefully > + * disconnect any open sockets. > + * > + * XXXRW: Note that there is a slight race here, as a new > + * socket open request could be spinning on the lock and then > + * we destroy the lock. > + */ > + INP_INFO_WLOCK(&V_divcbinfo); > + n = V_divcbinfo.ipi_count; > + if (n != 0) { > + err = EBUSY; > + INP_INFO_WUNLOCK(&V_divcbinfo); > + break; > + } > + ip_divert_ptr = NULL; > + err = pf_proto_unregister(PF_INET, IPPROTO_DIVERT, SOCK_RAW); > + INP_INFO_WUNLOCK(&V_divcbinfo); > + INP_INFO_LOCK_DESTROY(&V_divcbinfo); > + uma_zdestroy(V_divcbinfo.ipi_zone); > + EVENTHANDLER_DEREGISTER(maxsockets_change, ip_divert_event_tag); > break; > +#endif /* !VIMAGE */ > default: > err = EOPNOTSUPP; > break; > @@ -748,124 +793,6 @@ > 0 > }; > > -/* init on boot or module load */ > -static void > -div_init(void) > -{ > - int err; > - > - /* > - * Protocol will be initialized by pf_proto_register(). > - * We don't have to register ip_protox because we are not > - * a true IP protocol that goes over the wire. > - */ > - err = pf_proto_register(PF_INET, &div_protosw); > - if (err == 0) { > - ip_divert_ptr = divert_packet; > - div_evh_tag = > - EVENTHANDLER_REGISTER(maxsockets_change, div_zone_change, > - NULL, EVENTHANDLER_PRI_ANY); > - div_loaded = 1; > - } > - return; > -} > - > -/**************** > - * Stuff that must be initialized for every instance > - * (including the first of course). > - */ > -static int > -div_vnet_init(const void *unused) > -{ > - if (div_loaded == 0) > - return (0); > - INP_INFO_LOCK_INIT(&V_divcbinfo, "div"); > - LIST_INIT(&V_divcb); > - V_divcbinfo.ipi_listhead = &V_divcb; > -#ifdef VIMAGE > - V_divcbinfo.ipi_vnet = curvnet; > -#endif > - /* > - * XXX We don't use the hash list for divert IP, but it's easier > - * to allocate a one entry hash list than it is to check all > - * over the place for hashbase == NULL. > - */ > - V_divcbinfo.ipi_hashbase = hashinit(1, M_PCB, &V_divcbinfo.ipi_hashmask); > - V_divcbinfo.ipi_porthashbase = hashinit(1, M_PCB, > - &V_divcbinfo.ipi_porthashmask); > - V_divcbinfo.ipi_zone = uma_zcreate("divcb", sizeof(struct inpcb), > - NULL, NULL, div_inpcb_init, div_inpcb_fini, UMA_ALIGN_PTR, > - UMA_ZONE_NOFREE); > - uma_zone_set_max(V_divcbinfo.ipi_zone, maxsockets); > - return (0); > -} > - > -/********************** > - * Called for the removal of the last instance only on module unload. > - */ > -static void > -div_uninit(void) > -{ > - int err; > - > - if (div_loaded == 0) > - return; > - div_loaded = 0; > - ip_divert_ptr = NULL; > - EVENTHANDLER_DEREGISTER(maxsockets_change, div_evh_tag); > - err = pf_proto_unregister(PF_INET, IPPROTO_DIVERT, SOCK_RAW); > -} > - > -/*********************** > - * Called for the removal of each instance. > - */ > -static int > -div_vnet_uninit(const void *unused) > -{ > - int err = 0; > - int n; > - > - if (div_loaded == 0) > - return (0); > - /* > - * Forced unload. > - * > - * Module ipdivert can only be unloaded if no sockets are > - * connected. Maybe this can be changed later to forcefully > - * disconnect any open sockets. > - * > - * XXXRW: Note that there is a slight race here, as a new > - * socket open request could be spinning on the lock and then > - * we destroy the lock. > - */ > - INP_INFO_WLOCK(&V_divcbinfo); > - n = V_divcbinfo.ipi_count; > - INP_INFO_WUNLOCK(&V_divcbinfo); > - if (n != 0) { > - err = EBUSY; > - } else { > - INP_INFO_LOCK_DESTROY(&V_divcbinfo); > - uma_zdestroy(V_divcbinfo.ipi_zone); > - } > - return (err); > -} > - > - > -#define DIV_MAJOR_ORDER SI_SUB_PROTO_IFATTACHDOMAIN > -#define DIV_MODULE_ORDER (SI_ORDER_ANY + 64) > -#define DIV_SYSINIT_ORDER (DIV_MODULE_ORDER + 1) > -#define DIV_VNET_ORDER (DIV_SYSINIT_ORDER + 1 ) > - > -DECLARE_MODULE(ipdivert, ipdivertmod, DIV_MAJOR_ORDER, DIV_MODULE_ORDER); > +DECLARE_MODULE(ipdivert, ipdivertmod, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_ANY); > MODULE_DEPEND(dummynet, ipfw, 2, 2, 2); > MODULE_VERSION(ipdivert, 1); > - > -SYSINIT(div_init, DIV_MAJOR_ORDER, DIV_SYSINIT_ORDER, div_init, NULL); > -SYSUNINIT(div_uninit, DIV_MAJOR_ORDER, DIV_SYSINIT_ORDER, > - div_uninit, NULL); > - > -VNET_SYSINIT(div_vnet_init, DIV_MAJOR_ORDER, DIV_VNET_ORDER, > - div_vnet_init, NULL); > -VNET_SYSUNINIT(div_vnet_uninit, DIV_MAJOR_ORDER, DIV_VNET_ORDER, > - div_vnet_uninit, NULL); > - From owner-p4-projects@FreeBSD.ORG Wed Aug 12 22:02:56 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7A2321065678; Wed, 12 Aug 2009 22:02:56 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3AA731065676 for ; Wed, 12 Aug 2009 22:02:56 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 2B2268FC1F for ; Wed, 12 Aug 2009 22:02:56 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7CM2ujs062544 for ; Wed, 12 Aug 2009 22:02:56 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7CM2tE5062542 for perforce@freebsd.org; Wed, 12 Aug 2009 22:02:55 GMT (envelope-from zec@fer.hr) Date: Wed, 12 Aug 2009 22:02:55 GMT Message-Id: <200908122202.n7CM2tE5062542@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167264 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 22:02:57 -0000 http://perforce.freebsd.org/chv.cgi?CH=167264 Change 167264 by zec@zec_tpx32 on 2009/08/12 22:02:24 Release resources / memory when vnets are destroyed. Affected files ... .. //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#39 edit Differences ... ==== //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#39 (text+ko) ==== @@ -185,6 +185,17 @@ uma_zone_set_max(V_divcbinfo.ipi_zone, maxsockets); } +static void +div_destroy(void) +{ + + INP_INFO_LOCK_DESTROY(&V_divcbinfo); + uma_zdestroy(V_divcbinfo.ipi_zone); + hashdestroy(V_divcbinfo.ipi_hashbase, M_PCB, V_divcbinfo.ipi_hashmask); + hashdestroy(V_divcbinfo.ipi_porthashbase, M_PCB, + V_divcbinfo.ipi_porthashmask); +} + /* * IPPROTO_DIVERT is not in the real IP protocol number space; this * function should never be called. Just in case, drop any packets. @@ -716,6 +727,9 @@ .pr_ctlinput = div_ctlinput, .pr_ctloutput = ip_ctloutput, .pr_init = div_init, +#ifdef VIMAGE + .pr_destroy = div_destroy, +#endif .pr_usrreqs = &div_usrreqs }; @@ -775,8 +789,7 @@ ip_divert_ptr = NULL; err = pf_proto_unregister(PF_INET, IPPROTO_DIVERT, SOCK_RAW); INP_INFO_WUNLOCK(&V_divcbinfo); - INP_INFO_LOCK_DESTROY(&V_divcbinfo); - uma_zdestroy(V_divcbinfo.ipi_zone); + div_destroy(); EVENTHANDLER_DEREGISTER(maxsockets_change, ip_divert_event_tag); break; #endif /* !VIMAGE */ From owner-p4-projects@FreeBSD.ORG Wed Aug 12 22:18:51 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DB5E310656C0; Wed, 12 Aug 2009 22:18:50 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 93A051065679 for ; Wed, 12 Aug 2009 22:18:50 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outS.internet-mail-service.net (outs.internet-mail-service.net [216.240.47.242]) by mx1.freebsd.org (Postfix) with ESMTP id 7DA618FC62 for ; Wed, 12 Aug 2009 22:18:50 +0000 (UTC) Received: from idiom.com (mx0.idiom.com [216.240.32.160]) by out.internet-mail-service.net (Postfix) with ESMTP id 477C5B5A31; Wed, 12 Aug 2009 15:18:50 -0700 (PDT) X-Client-Authorized: MaGic Cook1e X-Client-Authorized: MaGic Cook1e Received: from julian-mac.elischer.org (home.elischer.org [216.240.48.38]) by idiom.com (Postfix) with ESMTP id C66792D6006; Wed, 12 Aug 2009 15:18:49 -0700 (PDT) Message-ID: <4A833FC9.2000308@elischer.org> Date: Wed, 12 Aug 2009 15:18:49 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.22 (Macintosh/20090605) MIME-Version: 1.0 To: Marko Zec References: <200908122202.n7CM2tE5062542@repoman.freebsd.org> In-Reply-To: <200908122202.n7CM2tE5062542@repoman.freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews Subject: Re: PERFORCE change 167264 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 22:18:52 -0000 Marko Zec wrote: > http://perforce.freebsd.org/chv.cgi?CH=167264 > > Change 167264 by zec@zec_tpx32 on 2009/08/12 22:02:24 > > Release resources / memory when vnets are destroyed. > > Affected files ... > > .. //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#39 edit > > Differences ... > > ==== //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#39 (text+ko) ==== > > @@ -185,6 +185,17 @@ > uma_zone_set_max(V_divcbinfo.ipi_zone, maxsockets); > } > > +static void > +div_destroy(void) > +{ > + > + INP_INFO_LOCK_DESTROY(&V_divcbinfo); > + uma_zdestroy(V_divcbinfo.ipi_zone); > + hashdestroy(V_divcbinfo.ipi_hashbase, M_PCB, V_divcbinfo.ipi_hashmask); > + hashdestroy(V_divcbinfo.ipi_porthashbase, M_PCB, > + V_divcbinfo.ipi_porthashmask); > +} > + > /* > * IPPROTO_DIVERT is not in the real IP protocol number space; this > * function should never be called. Just in case, drop any packets. > @@ -716,6 +727,9 @@ > .pr_ctlinput = div_ctlinput, > .pr_ctloutput = ip_ctloutput, > .pr_init = div_init, > +#ifdef VIMAGE > + .pr_destroy = div_destroy, > +#endif > .pr_usrreqs = &div_usrreqs > }; > > @@ -775,8 +789,7 @@ > ip_divert_ptr = NULL; > err = pf_proto_unregister(PF_INET, IPPROTO_DIVERT, SOCK_RAW); > INP_INFO_WUNLOCK(&V_divcbinfo); > - INP_INFO_LOCK_DESTROY(&V_divcbinfo); > - uma_zdestroy(V_divcbinfo.ipi_zone); > + div_destroy(); > EVENTHANDLER_DEREGISTER(maxsockets_change, ip_divert_event_tag); > break; > #endif /* !VIMAGE */ to avoid this problem Robert added: VNET_DOMAIN_SET(inet) which does this for domains. and he uses elsewhere. From owner-p4-projects@FreeBSD.ORG Wed Aug 12 22:35:13 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 944671065672; Wed, 12 Aug 2009 22:35:12 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 52949106566B; Wed, 12 Aug 2009 22:35:12 +0000 (UTC) (envelope-from zec@freebsd.org) Received: from labs3.cc.fer.hr (labs3.cc.fer.hr [161.53.72.21]) by mx1.freebsd.org (Postfix) with ESMTP id C236E8FC52; Wed, 12 Aug 2009 22:35:11 +0000 (UTC) Received: from sluga.fer.hr (sluga.cc.fer.hr [161.53.72.14]) by labs3.cc.fer.hr (8.13.8+Sun/8.12.10) with ESMTP id n7CMZ5al013451; Thu, 13 Aug 2009 00:35:10 +0200 (CEST) Received: from localhost ([161.53.19.8]) by sluga.fer.hr with Microsoft SMTPSVC(6.0.3790.3959); Thu, 13 Aug 2009 00:35:04 +0200 From: Marko Zec To: Julian Elischer Date: Thu, 13 Aug 2009 00:34:57 +0200 User-Agent: KMail/1.9.10 References: <200908122108.n7CL8uhJ058398@repoman.freebsd.org> <4A833B16.2040301@elischer.org> In-Reply-To: <4A833B16.2040301@elischer.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200908130034.57133.zec@freebsd.org> X-OriginalArrivalTime: 12 Aug 2009 22:35:05.0068 (UTC) FILETIME=[235E52C0:01CA1B9D] Cc: Perforce Change Reviews , Robert Watson Subject: Re: PERFORCE change 167260 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 22:35:13 -0000 On Wednesday 12 August 2009 23:58:46 Julian Elischer wrote: > Marko Zec wrote: ... > > @@ -710,22 +715,36 @@ > > .pr_input = div_input, > > .pr_ctlinput = div_ctlinput, > > .pr_ctloutput = ip_ctloutput, > > - .pr_init = NULL, > > + .pr_init = div_init, > > .pr_usrreqs = &div_usrreqs > > If you are going to make pr_init() called for every vnet then > pr_destroy should be as well. But in fact that is not really safe. > (either of them) > > The trouble is that we can not guarantee that other protocols can > handle being called multiple times in their init and destroy methods. > Especially 3rd party protocols. > > We need to ensure only protocols that have been converted to run > with multiple vnets are ever called with multiple vnets. > > for this reason the only safe way to do this is via the VNET_SYSINIT > and VNET_SYSUNINIT calls. That would mean you would have to convert most if not all of the existing things that hang off of protosw-s in netinet, netinet6 etc. to use VNET_SYSINT / VNET_SYSUNIT instead of protosw->pr_init(). So the short answer is no. I cannot recall that we ever discussed or planned to be able to mix virtualized with non-virtualized protocols in the same kernel. That would be a horrible mess, and I cannot even imagine having say a multi-instance INET with a single-instance INET6 kernel, shared among all the vnets. To start with, how would you decide that you're not allowed to process an IPv6 packet received on the wire in a non-default vnet in such an environment? Do we have the infrastructure in place necessary for preventing doing say a ifconfig lo0 ::1 in a non-default vnet in such an hypotetical setup? The answer is no. VNET_SYSINIT is nice, but proper special-casing changes required to support single-instance protocols to work only with vnet0 and not with the other protocols are simply not there, and I hope will never be, because I fear they would be highly intrusive, difficult to verify and maintain, and probably also have an impact on performance. A proper solution for the issue you are raising could be something that would prevent modules assuming our stack is compiled as single-instance to be kldloaded if the kernel was actually built with multi-instance stack support. I think Robert (cc-ed) had some ideas on how to accomplish this by having such modules depend on a magic global variable (say __no_vnet_support) to be available. All the current "base" protocols are already using pr_init() in multi-instance mode in options VIMAGE case. So I see no reason for ip_divert not being allowed to leverage on the same mechanism. Re. pr_destroy(), you're right, patch already submitted to p4... Marko From owner-p4-projects@FreeBSD.ORG Wed Aug 12 22:44:51 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 799181065677; Wed, 12 Aug 2009 22:44:51 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1FF361065673 for ; Wed, 12 Aug 2009 22:44:51 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outQ.internet-mail-service.net (outq.internet-mail-service.net [216.240.47.240]) by mx1.freebsd.org (Postfix) with ESMTP id 05FCC8FC3F for ; Wed, 12 Aug 2009 22:44:50 +0000 (UTC) Received: from idiom.com (mx0.idiom.com [216.240.32.160]) by out.internet-mail-service.net (Postfix) with ESMTP id C0C2DB15FD; Wed, 12 Aug 2009 15:44:50 -0700 (PDT) X-Client-Authorized: MaGic Cook1e X-Client-Authorized: MaGic Cook1e X-Client-Authorized: MaGic Cook1e Received: from julian-mac.elischer.org (home.elischer.org [216.240.48.38]) by idiom.com (Postfix) with ESMTP id 126372D6018; Wed, 12 Aug 2009 15:44:49 -0700 (PDT) Message-ID: <4A8345E1.1070301@elischer.org> Date: Wed, 12 Aug 2009 15:44:49 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.22 (Macintosh/20090605) MIME-Version: 1.0 To: Marko Zec References: <200908122108.n7CL8uhJ058398@repoman.freebsd.org> <4A833B16.2040301@elischer.org> <200908130034.57133.zec@freebsd.org> In-Reply-To: <200908130034.57133.zec@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews , Robert Watson Subject: Re: PERFORCE change 167260 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 22:44:52 -0000 Marko Zec wrote: > On Wednesday 12 August 2009 23:58:46 Julian Elischer wrote: >> Marko Zec wrote: > ... >>> @@ -710,22 +715,36 @@ >>> .pr_input = div_input, >>> .pr_ctlinput = div_ctlinput, >>> .pr_ctloutput = ip_ctloutput, >>> - .pr_init = NULL, >>> + .pr_init = div_init, >>> .pr_usrreqs = &div_usrreqs >> If you are going to make pr_init() called for every vnet then >> pr_destroy should be as well. But in fact that is not really safe. >> (either of them) >> >> The trouble is that we can not guarantee that other protocols can >> handle being called multiple times in their init and destroy methods. >> Especially 3rd party protocols. >> >> We need to ensure only protocols that have been converted to run >> with multiple vnets are ever called with multiple vnets. >> >> for this reason the only safe way to do this is via the VNET_SYSINIT >> and VNET_SYSUNINIT calls. > > That would mean you would have to convert most if not all of the existing > things that hang off of protosw-s in netinet, netinet6 etc. to use > VNET_SYSINT / VNET_SYSUNIT instead of protosw->pr_init(). So the short > answer is no. robert has done just that. > > I cannot recall that we ever discussed or planned to be able to mix > virtualized with non-virtualized protocols in the same kernel. That would be > a horrible mess, and I cannot even imagine having say a multi-instance INET > with a single-instance INET6 kernel, shared among all the vnets. To start > with, how would you decide that you're not allowed to process an IPv6 packet > received on the wire in a non-default vnet in such an environment? Do we > have the infrastructure in place necessary for preventing doing say a > ifconfig lo0 ::1 in a non-default vnet in such an hypotetical setup? The > answer is no. > I agree that it is horrible and we have not said that it will all work > VNET_SYSINIT is nice, but proper special-casing changes required to support > single-instance protocols to work only with vnet0 and not with the other > protocols are simply not there, and I hope will never be, because I fear they > would be highly intrusive, difficult to verify and maintain, and probably > also have an impact on performance. > > A proper solution for the issue you are raising could be something that would > prevent modules assuming our stack is compiled as single-instance to be > kldloaded if the kernel was actually built with multi-instance stack support. > I think Robert (cc-ed) had some ideas on how to accomplish this by having > such modules depend on a magic global variable (say __no_vnet_support) to be > available. > > All the current "base" protocols are already using pr_init() in multi-instance > mode in options VIMAGE case. So I see no reason for ip_divert not being > allowed to leverage on the same mechanism. > > Re. pr_destroy(), you're right, patch already submitted to p4... > > Marko From owner-p4-projects@FreeBSD.ORG Wed Aug 12 22:52:22 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8694F1065673; Wed, 12 Aug 2009 22:52:21 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 45733106566C; Wed, 12 Aug 2009 22:52:21 +0000 (UTC) (envelope-from zec@freebsd.org) Received: from labs3.cc.fer.hr (labs3.cc.fer.hr [161.53.72.21]) by mx1.freebsd.org (Postfix) with ESMTP id E01668FC16; Wed, 12 Aug 2009 22:52:20 +0000 (UTC) Received: from sluga.fer.hr (sluga.cc.fer.hr [161.53.72.14]) by labs3.cc.fer.hr (8.13.8+Sun/8.12.10) with ESMTP id n7CMqJjj013948; Thu, 13 Aug 2009 00:52:19 +0200 (CEST) Received: from localhost ([161.53.19.8]) by sluga.fer.hr with Microsoft SMTPSVC(6.0.3790.3959); Thu, 13 Aug 2009 00:52:18 +0200 From: Marko Zec To: Julian Elischer Date: Thu, 13 Aug 2009 00:52:11 +0200 User-Agent: KMail/1.9.10 References: <200908122108.n7CL8uhJ058398@repoman.freebsd.org> <200908130034.57133.zec@freebsd.org> <4A8345E1.1070301@elischer.org> In-Reply-To: <4A8345E1.1070301@elischer.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200908130052.11423.zec@freebsd.org> X-OriginalArrivalTime: 12 Aug 2009 22:52:19.0461 (UTC) FILETIME=[8BEA2B50:01CA1B9F] Cc: Perforce Change Reviews , Robert Watson Subject: Re: PERFORCE change 167260 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 22:52:22 -0000 On Thursday 13 August 2009 00:44:49 Julian Elischer wrote: > Marko Zec wrote: > > On Wednesday 12 August 2009 23:58:46 Julian Elischer wrote: > >> Marko Zec wrote: > > > > ... > > > >>> @@ -710,22 +715,36 @@ > >>> .pr_input = div_input, > >>> .pr_ctlinput = div_ctlinput, > >>> .pr_ctloutput = ip_ctloutput, > >>> - .pr_init = NULL, > >>> + .pr_init = div_init, > >>> .pr_usrreqs = &div_usrreqs > >> > >> If you are going to make pr_init() called for every vnet then > >> pr_destroy should be as well. But in fact that is not really safe. > >> (either of them) > >> > >> The trouble is that we can not guarantee that other protocols can > >> handle being called multiple times in their init and destroy methods. > >> Especially 3rd party protocols. > >> > >> We need to ensure only protocols that have been converted to run > >> with multiple vnets are ever called with multiple vnets. > >> > >> for this reason the only safe way to do this is via the VNET_SYSINIT > >> and VNET_SYSUNINIT calls. > > > > That would mean you would have to convert most if not all of the existing > > things that hang off of protosw-s in netinet, netinet6 etc. to use > > VNET_SYSINT / VNET_SYSUNIT instead of protosw->pr_init(). So the short > > answer is no. > > robert has done just that. hmm: tpx32% pwd /u/marko/svn/head/sys tpx32% fgrep -R .pr_init netinet netinet6 netipsec|fgrep -v .svn netinet/ip_divert.c: .pr_init = div_init, netinet/in_proto.c: .pr_init = ip_init, netinet/in_proto.c: .pr_init = udp_init, netinet/in_proto.c: .pr_init = tcp_init, netinet/in_proto.c: .pr_init = sctp_init, netinet/in_proto.c: .pr_init = icmp_init, netinet/in_proto.c: .pr_init = encap_init, netinet/in_proto.c: .pr_init = encap_init, netinet/in_proto.c: .pr_init = encap_init, netinet/in_proto.c: .pr_init = encap_init, netinet/in_proto.c: .pr_init = encap_init, netinet/in_proto.c: .pr_init = rip_init, netinet6/in6_proto.c: .pr_init = ip6_init, netinet6/in6_proto.c: .pr_init = tcp_init, netinet6/in6_proto.c: .pr_init = icmp6_init, netinet6/in6_proto.c: .pr_init = encap_init, netinet6/in6_proto.c: .pr_init = encap_init, netinet6/ip6_mroute.c: .pr_init = pim6_init, netipsec/keysock.c: .pr_init = raw_init, > > I cannot recall that we ever discussed or planned to be able to mix > > virtualized with non-virtualized protocols in the same kernel. That > > would be a horrible mess, and I cannot even imagine having say a > > multi-instance INET with a single-instance INET6 kernel, shared among all > > the vnets. To start with, how would you decide that you're not allowed > > to process an IPv6 packet received on the wire in a non-default vnet in > > such an environment? Do we have the infrastructure in place necessary > > for preventing doing say a ifconfig lo0 ::1 in a non-default vnet in such > > an hypotetical setup? The answer is no. > > I agree that it is horrible and we have not said that it will all work Then we shouldn't attempt to do it. Marko > > VNET_SYSINIT is nice, but proper special-casing changes required to > > support single-instance protocols to work only with vnet0 and not with > > the other protocols are simply not there, and I hope will never be, > > because I fear they would be highly intrusive, difficult to verify and > > maintain, and probably also have an impact on performance. > > > > A proper solution for the issue you are raising could be something that > > would prevent modules assuming our stack is compiled as single-instance > > to be kldloaded if the kernel was actually built with multi-instance > > stack support. I think Robert (cc-ed) had some ideas on how to accomplish > > this by having such modules depend on a magic global variable (say > > __no_vnet_support) to be available. > > > > All the current "base" protocols are already using pr_init() in > > multi-instance mode in options VIMAGE case. So I see no reason for > > ip_divert not being allowed to leverage on the same mechanism. > > > > Re. pr_destroy(), you're right, patch already submitted to p4... > > > > Marko From owner-p4-projects@FreeBSD.ORG Wed Aug 12 22:53:27 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9E9C01065676; Wed, 12 Aug 2009 22:53:27 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5E7721065674 for ; Wed, 12 Aug 2009 22:53:27 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outO.internet-mail-service.net (outo.internet-mail-service.net [216.240.47.238]) by mx1.freebsd.org (Postfix) with ESMTP id 444198FC44 for ; Wed, 12 Aug 2009 22:53:27 +0000 (UTC) Received: from idiom.com (mx0.idiom.com [216.240.32.160]) by out.internet-mail-service.net (Postfix) with ESMTP id D5EC3CB05; Wed, 12 Aug 2009 15:53:26 -0700 (PDT) X-Client-Authorized: MaGic Cook1e X-Client-Authorized: MaGic Cook1e X-Client-Authorized: MaGic Cook1e Received: from julian-mac.elischer.org (home.elischer.org [216.240.48.38]) by idiom.com (Postfix) with ESMTP id 272232D6015; Wed, 12 Aug 2009 15:53:26 -0700 (PDT) Message-ID: <4A8347E5.8070409@elischer.org> Date: Wed, 12 Aug 2009 15:53:25 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.22 (Macintosh/20090605) MIME-Version: 1.0 To: Marko Zec References: <200908122108.n7CL8uhJ058398@repoman.freebsd.org> <4A833B16.2040301@elischer.org> <200908130034.57133.zec@freebsd.org> <4A8345E1.1070301@elischer.org> In-Reply-To: <4A8345E1.1070301@elischer.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews , Robert Watson Subject: Re: PERFORCE change 167260 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 22:53:28 -0000 Julian Elischer wrote: > Marko Zec wrote: >> On Wednesday 12 August 2009 23:58:46 Julian Elischer wrote: >>> Marko Zec wrote: >> ... >>>> @@ -710,22 +715,36 @@ >>>> .pr_input = div_input, >>>> .pr_ctlinput = div_ctlinput, >>>> .pr_ctloutput = ip_ctloutput, >>>> - .pr_init = NULL, >>>> + .pr_init = div_init, >>>> .pr_usrreqs = &div_usrreqs >>> If you are going to make pr_init() called for every vnet then >>> pr_destroy should be as well. But in fact that is not really safe. >>> (either of them) >>> >>> The trouble is that we can not guarantee that other protocols can >>> handle being called multiple times in their init and destroy methods. >>> Especially 3rd party protocols. >>> >>> We need to ensure only protocols that have been converted to run >>> with multiple vnets are ever called with multiple vnets. >>> >>> for this reason the only safe way to do this is via the VNET_SYSINIT >>> and VNET_SYSUNINIT calls. >> >> That would mean you would have to convert most if not all of the >> existing things that hang off of protosw-s in netinet, netinet6 etc. >> to use VNET_SYSINT / VNET_SYSUNIT instead of protosw->pr_init(). So >> the short answer is no. > > > robert has done just that. > >> >> I cannot recall that we ever discussed or planned to be able to mix >> virtualized with non-virtualized protocols in the same kernel. That >> would be a horrible mess, and I cannot even imagine having say a >> multi-instance INET with a single-instance INET6 kernel, shared among >> all the vnets. To start with, how would you decide that you're not >> allowed to process an IPv6 packet received on the wire in a >> non-default vnet in such an environment? Do we have the >> infrastructure in place necessary for preventing doing say a ifconfig >> lo0 ::1 in a non-default vnet in such an hypotetical setup? The >> answer is no. >> > > > I agree that it is horrible and we have not said that it will all work > >> VNET_SYSINIT is nice, but proper special-casing changes required to >> support single-instance protocols to work only with vnet0 and not with >> the other protocols are simply not there, and I hope will never be, >> because I fear they would be highly intrusive, difficult to verify and >> maintain, and probably also have an impact on performance. >> >> A proper solution for the issue you are raising could be something >> that would prevent modules assuming our stack is compiled as >> single-instance to be kldloaded if the kernel was actually built with >> multi-instance stack support. I think Robert (cc-ed) had some ideas >> on how to accomplish this by having such modules depend on a magic >> global variable (say __no_vnet_support) to be available. >> >> All the current "base" protocols are already using pr_init() in >> multi-instance mode in options VIMAGE case. So I see no reason for >> ip_divert not being allowed to leverage on the same mechanism. >> >> Re. pr_destroy(), you're right, patch already submitted to p4... But pr_destroy is not called from pf_proto_unregister() (a bug I think.) so I notice that you call it yourself, but only on one vnet. with the code I had you could load and unload divert when there were jails present or not. it would do the right thing. robert's code was specifically set up to avoid calling the proto_init function on each as far as I could see. >> >> Marko From owner-p4-projects@FreeBSD.ORG Wed Aug 12 22:59:02 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 57608106568D; Wed, 12 Aug 2009 22:59:02 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 11846106568C; Wed, 12 Aug 2009 22:59:02 +0000 (UTC) (envelope-from zec@freebsd.org) Received: from labs3.cc.fer.hr (labs3.cc.fer.hr [161.53.72.21]) by mx1.freebsd.org (Postfix) with ESMTP id 69E028FC41; Wed, 12 Aug 2009 22:59:01 +0000 (UTC) Received: from sluga.fer.hr (sluga.cc.fer.hr [161.53.72.14]) by labs3.cc.fer.hr (8.13.8+Sun/8.12.10) with ESMTP id n7CMwxTD014295; Thu, 13 Aug 2009 00:58:59 +0200 (CEST) Received: from localhost ([161.53.19.8]) by sluga.fer.hr with Microsoft SMTPSVC(6.0.3790.3959); Thu, 13 Aug 2009 00:58:59 +0200 From: Marko Zec To: Julian Elischer Date: Thu, 13 Aug 2009 00:58:51 +0200 User-Agent: KMail/1.9.10 References: <200908122108.n7CL8uhJ058398@repoman.freebsd.org> <4A8345E1.1070301@elischer.org> <4A8347E5.8070409@elischer.org> In-Reply-To: <4A8347E5.8070409@elischer.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200908130058.51574.zec@freebsd.org> X-OriginalArrivalTime: 12 Aug 2009 22:58:59.0614 (UTC) FILETIME=[7A6CABE0:01CA1BA0] Cc: Perforce Change Reviews , Robert Watson Subject: Re: PERFORCE change 167260 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 22:59:03 -0000 On Thursday 13 August 2009 00:53:25 Julian Elischer wrote: > Julian Elischer wrote: > > Marko Zec wrote: > >> On Wednesday 12 August 2009 23:58:46 Julian Elischer wrote: > >>> Marko Zec wrote: > >> > >> ... > >> > >>>> @@ -710,22 +715,36 @@ > >>>> .pr_input = div_input, > >>>> .pr_ctlinput = div_ctlinput, > >>>> .pr_ctloutput = ip_ctloutput, > >>>> - .pr_init = NULL, > >>>> + .pr_init = div_init, > >>>> .pr_usrreqs = &div_usrreqs > >>> > >>> If you are going to make pr_init() called for every vnet then > >>> pr_destroy should be as well. But in fact that is not really safe. > >>> (either of them) > >>> > >>> The trouble is that we can not guarantee that other protocols can > >>> handle being called multiple times in their init and destroy methods. > >>> Especially 3rd party protocols. > >>> > >>> We need to ensure only protocols that have been converted to run > >>> with multiple vnets are ever called with multiple vnets. > >>> > >>> for this reason the only safe way to do this is via the VNET_SYSINIT > >>> and VNET_SYSUNINIT calls. > >> > >> That would mean you would have to convert most if not all of the > >> existing things that hang off of protosw-s in netinet, netinet6 etc. > >> to use VNET_SYSINT / VNET_SYSUNIT instead of protosw->pr_init(). So > >> the short answer is no. > > > > robert has done just that. > > > >> I cannot recall that we ever discussed or planned to be able to mix > >> virtualized with non-virtualized protocols in the same kernel. That > >> would be a horrible mess, and I cannot even imagine having say a > >> multi-instance INET with a single-instance INET6 kernel, shared among > >> all the vnets. To start with, how would you decide that you're not > >> allowed to process an IPv6 packet received on the wire in a > >> non-default vnet in such an environment? Do we have the > >> infrastructure in place necessary for preventing doing say a ifconfig > >> lo0 ::1 in a non-default vnet in such an hypotetical setup? The > >> answer is no. > > > > I agree that it is horrible and we have not said that it will all work > > > >> VNET_SYSINIT is nice, but proper special-casing changes required to > >> support single-instance protocols to work only with vnet0 and not with > >> the other protocols are simply not there, and I hope will never be, > >> because I fear they would be highly intrusive, difficult to verify and > >> maintain, and probably also have an impact on performance. > >> > >> A proper solution for the issue you are raising could be something > >> that would prevent modules assuming our stack is compiled as > >> single-instance to be kldloaded if the kernel was actually built with > >> multi-instance stack support. I think Robert (cc-ed) had some ideas > >> on how to accomplish this by having such modules depend on a magic > >> global variable (say __no_vnet_support) to be available. > >> > >> All the current "base" protocols are already using pr_init() in > >> multi-instance mode in options VIMAGE case. So I see no reason for > >> ip_divert not being allowed to leverage on the same mechanism. > >> > >> Re. pr_destroy(), you're right, patch already submitted to p4... > > But pr_destroy is not called from pf_proto_unregister() > (a bug I think.) so I notice that you call it yourself, > but only on one vnet. No, div_destro() is only called directly in nooptions VIMAGE case, while for VIMAGE builds kldunload -f will not be permitted. pf_proto_unregister() should call pr_destroy, yes, but in this particular situation it is non-trivial to decide whether / when it would be safe to proceed with pf_proto_unregister(). That's why I opted not to do it at this point in time, i.e. if we want to push this in 8.0 as a really smallish diff. > with the code I had you could load and unload divert when there were > jails present or not. > > it would do the right thing. > > robert's code was specifically set up to avoid calling the proto_init > function on each as far as I could see. > > >> Marko From owner-p4-projects@FreeBSD.ORG Wed Aug 12 23:02:26 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8B2591065675; Wed, 12 Aug 2009 23:02:26 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3E12D106564A for ; Wed, 12 Aug 2009 23:02:26 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outU.internet-mail-service.net (outu.internet-mail-service.net [216.240.47.244]) by mx1.freebsd.org (Postfix) with ESMTP id 233BA8FC44 for ; Wed, 12 Aug 2009 23:02:25 +0000 (UTC) Received: from idiom.com (mx0.idiom.com [216.240.32.160]) by out.internet-mail-service.net (Postfix) with ESMTP id D025AD392; Wed, 12 Aug 2009 16:02:25 -0700 (PDT) X-Client-Authorized: MaGic Cook1e X-Client-Authorized: MaGic Cook1e X-Client-Authorized: MaGic Cook1e Received: from julian-mac.elischer.org (home.elischer.org [216.240.48.38]) by idiom.com (Postfix) with ESMTP id 5427B2D600F; Wed, 12 Aug 2009 16:02:25 -0700 (PDT) Message-ID: <4A834A00.1000605@elischer.org> Date: Wed, 12 Aug 2009 16:02:24 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.22 (Macintosh/20090605) MIME-Version: 1.0 To: Marko Zec References: <200908122108.n7CL8uhJ058398@repoman.freebsd.org> <4A8345E1.1070301@elischer.org> <4A8347E5.8070409@elischer.org> <200908130058.51574.zec@freebsd.org> In-Reply-To: <200908130058.51574.zec@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews , Robert Watson Subject: Re: PERFORCE change 167260 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 23:02:27 -0000 Marko Zec wrote: > On Thursday 13 August 2009 00:53:25 Julian Elischer wrote: >> Julian Elischer wrote: >>> Marko Zec wrote: >>>> On Wednesday 12 August 2009 23:58:46 Julian Elischer wrote: >>>>> Marko Zec wrote: >>>> ... >>>> >>>>>> @@ -710,22 +715,36 @@ >>>>>> .pr_input = div_input, >>>>>> .pr_ctlinput = div_ctlinput, >>>>>> .pr_ctloutput = ip_ctloutput, >>>>>> - .pr_init = NULL, >>>>>> + .pr_init = div_init, >>>>>> .pr_usrreqs = &div_usrreqs >>>>> If you are going to make pr_init() called for every vnet then >>>>> pr_destroy should be as well. But in fact that is not really safe. >>>>> (either of them) >>>>> >>>>> The trouble is that we can not guarantee that other protocols can >>>>> handle being called multiple times in their init and destroy methods. >>>>> Especially 3rd party protocols. >>>>> >>>>> We need to ensure only protocols that have been converted to run >>>>> with multiple vnets are ever called with multiple vnets. >>>>> >>>>> for this reason the only safe way to do this is via the VNET_SYSINIT >>>>> and VNET_SYSUNINIT calls. >>>> That would mean you would have to convert most if not all of the >>>> existing things that hang off of protosw-s in netinet, netinet6 etc. >>>> to use VNET_SYSINT / VNET_SYSUNIT instead of protosw->pr_init(). So >>>> the short answer is no. >>> robert has done just that. >>> >>>> I cannot recall that we ever discussed or planned to be able to mix >>>> virtualized with non-virtualized protocols in the same kernel. That >>>> would be a horrible mess, and I cannot even imagine having say a >>>> multi-instance INET with a single-instance INET6 kernel, shared among >>>> all the vnets. To start with, how would you decide that you're not >>>> allowed to process an IPv6 packet received on the wire in a >>>> non-default vnet in such an environment? Do we have the >>>> infrastructure in place necessary for preventing doing say a ifconfig >>>> lo0 ::1 in a non-default vnet in such an hypotetical setup? The >>>> answer is no. >>> I agree that it is horrible and we have not said that it will all work >>> >>>> VNET_SYSINIT is nice, but proper special-casing changes required to >>>> support single-instance protocols to work only with vnet0 and not with >>>> the other protocols are simply not there, and I hope will never be, >>>> because I fear they would be highly intrusive, difficult to verify and >>>> maintain, and probably also have an impact on performance. >>>> >>>> A proper solution for the issue you are raising could be something >>>> that would prevent modules assuming our stack is compiled as >>>> single-instance to be kldloaded if the kernel was actually built with >>>> multi-instance stack support. I think Robert (cc-ed) had some ideas >>>> on how to accomplish this by having such modules depend on a magic >>>> global variable (say __no_vnet_support) to be available. >>>> >>>> All the current "base" protocols are already using pr_init() in >>>> multi-instance mode in options VIMAGE case. So I see no reason for >>>> ip_divert not being allowed to leverage on the same mechanism. >>>> >>>> Re. pr_destroy(), you're right, patch already submitted to p4... >> But pr_destroy is not called from pf_proto_unregister() >> (a bug I think.) so I notice that you call it yourself, >> but only on one vnet. > > No, div_destro() is only called directly in nooptions VIMAGE case, while for > VIMAGE builds kldunload -f will not be permitted. > > pf_proto_unregister() should call pr_destroy, yes, but in this particular > situation it is non-trivial to decide whether / when it would be safe to > proceed with pf_proto_unregister(). That's why I opted not to do it at this > point in time, i.e. if we want to push this in 8.0 as a really smallish diff. > >> with the code I had you could load and unload divert when there were >> jails present or not. >> >> it would do the right thing. >> >> robert's code was specifically set up to avoid calling the proto_init >> function on each as far as I could see. >> >>>> Marko > trouble is I think we now have the init routines being called per vnet TWICE.. follow these links... vmware-current# find . -name "*.[ch]" | xargs grep vnet_domain_init ./kern/uipc_domain.c:vnet_domain_init(void *arg) ./sys/domain.h:void vnet_domain_init(void *); ./sys/domain.h: VNET_SYSINIT(vnet_domain_init_ ## name, SI_SUB_PROTO_DOMAIN, \ ./sys/domain.h: SI_ORDER_SECOND, vnet_domain_init, & name ## domain); \ vmware-current# find . -name "*.[ch]" | xargs grep VNET_DOMAIN_SET ./netinet/in_proto.c:VNET_DOMAIN_SET(inet); ./netgraph/ng_socket.c:VNET_DOMAIN_SET(ng); ./net/rtsock.c:VNET_DOMAIN_SET(route); ./netinet6/in6_proto.c:VNET_DOMAIN_SET(inet6); ./netipsec/keysock.c:VNET_DOMAIN_SET(key); ./sys/domain.h:#define VNET_DOMAIN_SET(name) \ ./sys/domain.h:#define VNET_DOMAIN_SET(name) DOMAIN_SET(name) From owner-p4-projects@FreeBSD.ORG Wed Aug 12 23:17:39 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A16991065672; Wed, 12 Aug 2009 23:17:38 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 603F1106566B; Wed, 12 Aug 2009 23:17:38 +0000 (UTC) (envelope-from zec@freebsd.org) Received: from labs3.cc.fer.hr (labs3.cc.fer.hr [161.53.72.21]) by mx1.freebsd.org (Postfix) with ESMTP id E93178FC3D; Wed, 12 Aug 2009 23:17:37 +0000 (UTC) Received: from sluga.fer.hr (sluga.cc.fer.hr [161.53.72.14]) by labs3.cc.fer.hr (8.13.8+Sun/8.12.10) with ESMTP id n7CNHabj015023; Thu, 13 Aug 2009 01:17:36 +0200 (CEST) Received: from localhost ([161.53.19.8]) by sluga.fer.hr with Microsoft SMTPSVC(6.0.3790.3959); Thu, 13 Aug 2009 01:17:36 +0200 From: Marko Zec To: Julian Elischer Date: Thu, 13 Aug 2009 01:17:28 +0200 User-Agent: KMail/1.9.10 References: <200908122108.n7CL8uhJ058398@repoman.freebsd.org> <200908130058.51574.zec@freebsd.org> <4A834A00.1000605@elischer.org> In-Reply-To: <4A834A00.1000605@elischer.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200908130117.28913.zec@freebsd.org> X-OriginalArrivalTime: 12 Aug 2009 23:17:36.0834 (UTC) FILETIME=[1456EA20:01CA1BA3] Cc: Perforce Change Reviews , Robert Watson Subject: Re: PERFORCE change 167260 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Aug 2009 23:17:40 -0000 On Thursday 13 August 2009 01:02:24 Julian Elischer wrote: ... > trouble is I think we now have the init routines being called per vnet > TWICE.. No they are not - nothing in the last commits to p4/vc2 changed anything the mechanisms you point out below - only pf_proto_register() has changed, and pf_proto_register() is not being trampolined off of any of the VNET_SYSINIT things, it is simply being called from the modevent handler, and it is being called only once. Marko > follow these links... > > > > vmware-current# find . -name "*.[ch]" | xargs grep vnet_domain_init > ./kern/uipc_domain.c:vnet_domain_init(void *arg) > ./sys/domain.h:void vnet_domain_init(void *); > ./sys/domain.h: VNET_SYSINIT(vnet_domain_init_ ## name, > SI_SUB_PROTO_DOMAIN, \ > ./sys/domain.h: SI_ORDER_SECOND, vnet_domain_init, & name ## > domain); \ > > vmware-current# find . -name "*.[ch]" | xargs grep VNET_DOMAIN_SET > ./netinet/in_proto.c:VNET_DOMAIN_SET(inet); > ./netgraph/ng_socket.c:VNET_DOMAIN_SET(ng); > ./net/rtsock.c:VNET_DOMAIN_SET(route); > ./netinet6/in6_proto.c:VNET_DOMAIN_SET(inet6); > ./netipsec/keysock.c:VNET_DOMAIN_SET(key); > ./sys/domain.h:#define VNET_DOMAIN_SET(name) > \ > ./sys/domain.h:#define VNET_DOMAIN_SET(name) DOMAIN_SET(name) From owner-p4-projects@FreeBSD.ORG Thu Aug 13 00:22:24 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E8AD51065678; Thu, 13 Aug 2009 00:22:23 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A655B1065673 for ; Thu, 13 Aug 2009 00:22:23 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outZ.internet-mail-service.net (outz.internet-mail-service.net [216.240.47.249]) by mx1.freebsd.org (Postfix) with ESMTP id 89EC68FC4F for ; Thu, 13 Aug 2009 00:22:23 +0000 (UTC) Received: from idiom.com (mx0.idiom.com [216.240.32.160]) by out.internet-mail-service.net (Postfix) with ESMTP id 39D68961CA; Wed, 12 Aug 2009 17:22:23 -0700 (PDT) X-Client-Authorized: MaGic Cook1e X-Client-Authorized: MaGic Cook1e X-Client-Authorized: MaGic Cook1e Received: from julian-mac.elischer.org (home.elischer.org [216.240.48.38]) by idiom.com (Postfix) with ESMTP id 931352D601D; Wed, 12 Aug 2009 17:22:22 -0700 (PDT) Message-ID: <4A835CBE.4060903@elischer.org> Date: Wed, 12 Aug 2009 17:22:22 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.22 (Macintosh/20090605) MIME-Version: 1.0 To: Marko Zec References: <200908122108.n7CL8uhJ058398@repoman.freebsd.org> <200908130034.57133.zec@freebsd.org> <4A8345E1.1070301@elischer.org> <200908130052.11423.zec@freebsd.org> In-Reply-To: <200908130052.11423.zec@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews , Robert Watson Subject: Re: PERFORCE change 167260 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 00:22:25 -0000 Marko Zec wrote: > On Thursday 13 August 2009 00:44:49 Julian Elischer wrote: >> Marko Zec wrote: >>> On Wednesday 12 August 2009 23:58:46 Julian Elischer wrote: >>>> Marko Zec wrote: >>> ... >>> >>>>> @@ -710,22 +715,36 @@ >>>>> .pr_input = div_input, >>>>> .pr_ctlinput = div_ctlinput, >>>>> .pr_ctloutput = ip_ctloutput, >>>>> - .pr_init = NULL, >>>>> + .pr_init = div_init, >>>>> .pr_usrreqs = &div_usrreqs >>>> If you are going to make pr_init() called for every vnet then >>>> pr_destroy should be as well. But in fact that is not really safe. >>>> (either of them) >>>> >>>> The trouble is that we can not guarantee that other protocols can >>>> handle being called multiple times in their init and destroy methods. >>>> Especially 3rd party protocols. >>>> >>>> We need to ensure only protocols that have been converted to run >>>> with multiple vnets are ever called with multiple vnets. >>>> >>>> for this reason the only safe way to do this is via the VNET_SYSINIT >>>> and VNET_SYSUNINIT calls. >>> That would mean you would have to convert most if not all of the existing >>> things that hang off of protosw-s in netinet, netinet6 etc. to use >>> VNET_SYSINT / VNET_SYSUNIT instead of protosw->pr_init(). So the short >>> answer is no. >> robert has done just that. > > hmm: > > tpx32% pwd > /u/marko/svn/head/sys > > tpx32% fgrep -R .pr_init netinet netinet6 netipsec|fgrep -v .svn > netinet/ip_divert.c: .pr_init = div_init, > netinet/in_proto.c: .pr_init = ip_init, > netinet/in_proto.c: .pr_init = udp_init, > netinet/in_proto.c: .pr_init = tcp_init, > netinet/in_proto.c: .pr_init = sctp_init, > netinet/in_proto.c: .pr_init = icmp_init, > netinet/in_proto.c: .pr_init = encap_init, > netinet/in_proto.c: .pr_init = encap_init, > netinet/in_proto.c: .pr_init = encap_init, > netinet/in_proto.c: .pr_init = encap_init, > netinet/in_proto.c: .pr_init = encap_init, > netinet/in_proto.c: .pr_init = rip_init, > netinet6/in6_proto.c: .pr_init = ip6_init, > netinet6/in6_proto.c: .pr_init = tcp_init, > netinet6/in6_proto.c: .pr_init = icmp6_init, > netinet6/in6_proto.c: .pr_init = encap_init, > netinet6/in6_proto.c: .pr_init = encap_init, > netinet6/ip6_mroute.c: .pr_init = pim6_init, > netipsec/keysock.c: .pr_init = raw_init, AND for example: in ./netinet/in_proto.c VNET_DOMAIN_SET(inet); includes VNET_SYSINIT ##### --> called for every vnet as created #### calls vnet_domain_init() calls domain_init() calls protosw_init() which includes if (pr->pr_init) (*pr->pr_init)(); so, robert is calling the init routine from each protocol not the modevent. > >>> I cannot recall that we ever discussed or planned to be able to mix >>> virtualized with non-virtualized protocols in the same kernel. That >>> would be a horrible mess, and I cannot even imagine having say a >>> multi-instance INET with a single-instance INET6 kernel, shared among all >>> the vnets. To start with, how would you decide that you're not allowed >>> to process an IPv6 packet received on the wire in a non-default vnet in >>> such an environment? Do we have the infrastructure in place necessary >>> for preventing doing say a ifconfig lo0 ::1 in a non-default vnet in such >>> an hypotetical setup? The answer is no. >> I agree that it is horrible and we have not said that it will all work > > Then we shouldn't attempt to do it. > > Marko > > >>> VNET_SYSINIT is nice, but proper special-casing changes required to >>> support single-instance protocols to work only with vnet0 and not with >>> the other protocols are simply not there, and I hope will never be, >>> because I fear they would be highly intrusive, difficult to verify and >>> maintain, and probably also have an impact on performance. >>> >>> A proper solution for the issue you are raising could be something that >>> would prevent modules assuming our stack is compiled as single-instance >>> to be kldloaded if the kernel was actually built with multi-instance >>> stack support. I think Robert (cc-ed) had some ideas on how to accomplish >>> this by having such modules depend on a magic global variable (say >>> __no_vnet_support) to be available. >>> >>> All the current "base" protocols are already using pr_init() in >>> multi-instance mode in options VIMAGE case. So I see no reason for >>> ip_divert not being allowed to leverage on the same mechanism. >>> >>> Re. pr_destroy(), you're right, patch already submitted to p4... >>> >>> Marko > From owner-p4-projects@FreeBSD.ORG Thu Aug 13 00:36:16 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1ABF1106567B; Thu, 13 Aug 2009 00:36:16 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C899A106566B; Thu, 13 Aug 2009 00:36:15 +0000 (UTC) (envelope-from zec@freebsd.org) Received: from labs3.cc.fer.hr (labs3.cc.fer.hr [161.53.72.21]) by mx1.freebsd.org (Postfix) with ESMTP id 6DD858FC52; Thu, 13 Aug 2009 00:36:15 +0000 (UTC) Received: from sluga.fer.hr (sluga.cc.fer.hr [161.53.72.14]) by labs3.cc.fer.hr (8.13.8+Sun/8.12.10) with ESMTP id n7D0aEIj017871; Thu, 13 Aug 2009 02:36:14 +0200 (CEST) Received: from localhost ([161.53.19.8]) by sluga.fer.hr with Microsoft SMTPSVC(6.0.3790.3959); Thu, 13 Aug 2009 02:36:13 +0200 From: Marko Zec To: Julian Elischer Date: Thu, 13 Aug 2009 02:35:42 +0200 User-Agent: KMail/1.9.10 References: <200908122108.n7CL8uhJ058398@repoman.freebsd.org> <200908130052.11423.zec@freebsd.org> <4A835CBE.4060903@elischer.org> In-Reply-To: <4A835CBE.4060903@elischer.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200908130235.43161.zec@freebsd.org> X-OriginalArrivalTime: 13 Aug 2009 00:36:14.0141 (UTC) FILETIME=[1012D6D0:01CA1BAE] Cc: Perforce Change Reviews , Robert Watson Subject: Re: PERFORCE change 167260 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 00:36:17 -0000 On Thursday 13 August 2009 02:22:22 Julian Elischer wrote: > Marko Zec wrote: > > On Thursday 13 August 2009 00:44:49 Julian Elischer wrote: > >> Marko Zec wrote: > >>> On Wednesday 12 August 2009 23:58:46 Julian Elischer wrote: > >>>> Marko Zec wrote: > >>> > >>> ... > >>> > >>>>> @@ -710,22 +715,36 @@ > >>>>> .pr_input = div_input, > >>>>> .pr_ctlinput = div_ctlinput, > >>>>> .pr_ctloutput = ip_ctloutput, > >>>>> - .pr_init = NULL, > >>>>> + .pr_init = div_init, > >>>>> .pr_usrreqs = &div_usrreqs > >>>> > >>>> If you are going to make pr_init() called for every vnet then > >>>> pr_destroy should be as well. But in fact that is not really safe. > >>>> (either of them) > >>>> > >>>> The trouble is that we can not guarantee that other protocols can > >>>> handle being called multiple times in their init and destroy methods. > >>>> Especially 3rd party protocols. > >>>> > >>>> We need to ensure only protocols that have been converted to run > >>>> with multiple vnets are ever called with multiple vnets. > >>>> > >>>> for this reason the only safe way to do this is via the VNET_SYSINIT > >>>> and VNET_SYSUNINIT calls. > >>> > >>> That would mean you would have to convert most if not all of the > >>> existing things that hang off of protosw-s in netinet, netinet6 etc. to > >>> use VNET_SYSINT / VNET_SYSUNIT instead of protosw->pr_init(). So the > >>> short answer is no. > >> > >> robert has done just that. > > > > hmm: > > > > tpx32% pwd > > /u/marko/svn/head/sys > > > > tpx32% fgrep -R .pr_init netinet netinet6 netipsec|fgrep -v .svn > > netinet/ip_divert.c: .pr_init = div_init, > > netinet/in_proto.c: .pr_init = ip_init, > > netinet/in_proto.c: .pr_init = udp_init, > > netinet/in_proto.c: .pr_init = tcp_init, > > netinet/in_proto.c: .pr_init = sctp_init, > > netinet/in_proto.c: .pr_init = icmp_init, > > netinet/in_proto.c: .pr_init = encap_init, > > netinet/in_proto.c: .pr_init = encap_init, > > netinet/in_proto.c: .pr_init = encap_init, > > netinet/in_proto.c: .pr_init = encap_init, > > netinet/in_proto.c: .pr_init = encap_init, > > netinet/in_proto.c: .pr_init = rip_init, > > netinet6/in6_proto.c: .pr_init = ip6_init, > > netinet6/in6_proto.c: .pr_init = tcp_init, > > netinet6/in6_proto.c: .pr_init = icmp6_init, > > netinet6/in6_proto.c: .pr_init = encap_init, > > netinet6/in6_proto.c: .pr_init = encap_init, > > netinet6/ip6_mroute.c: .pr_init = pim6_init, > > netipsec/keysock.c: .pr_init = raw_init, > > AND for example: > in ./netinet/in_proto.c > VNET_DOMAIN_SET(inet); > includes > VNET_SYSINIT ##### --> called for every vnet as created #### > calls > vnet_domain_init() > calls > domain_init() > calls > protosw_init() > which includes > if (pr->pr_init) > (*pr->pr_init)(); > > so, robert is calling the init routine from each protocol > not the modevent. Right. But when we kldload ipdivert and register its protosw via pf_proto_register(), VNET_DOMAIN_SET() will not call ipdivert's pr_init() routine for each existing vnet, hence pf_proto_register() will have to do this. For subsequently created vnets, i.e. after ipdivert has been kldloaded, pr_init() will indeed be called via VNET_DOMAIN_SET() mechanism on each vnet instantiation. But at that point in time pf_proto_register() will not be called. So, in both cases pr_init() will be called exactly once per vnet, but via different mechanisms. Marko From owner-p4-projects@FreeBSD.ORG Thu Aug 13 00:57:37 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BCD701065678; Thu, 13 Aug 2009 00:57:36 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7C3BB1065675 for ; Thu, 13 Aug 2009 00:57:36 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outX.internet-mail-service.net (outx.internet-mail-service.net [216.240.47.247]) by mx1.freebsd.org (Postfix) with ESMTP id 6010D8FC4F for ; Thu, 13 Aug 2009 00:57:36 +0000 (UTC) Received: from idiom.com (mx0.idiom.com [216.240.32.160]) by out.internet-mail-service.net (Postfix) with ESMTP id 26278A1EA7; Wed, 12 Aug 2009 17:57:36 -0700 (PDT) X-Client-Authorized: MaGic Cook1e X-Client-Authorized: MaGic Cook1e X-Client-Authorized: MaGic Cook1e Received: from julian-mac.elischer.org (home.elischer.org [216.240.48.38]) by idiom.com (Postfix) with ESMTP id A0FB02D6011; Wed, 12 Aug 2009 17:57:35 -0700 (PDT) Message-ID: <4A8364FF.2010605@elischer.org> Date: Wed, 12 Aug 2009 17:57:35 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.22 (Macintosh/20090605) MIME-Version: 1.0 To: Marko Zec References: <200908122108.n7CL8uhJ058398@repoman.freebsd.org> <200908130034.57133.zec@freebsd.org> <4A8345E1.1070301@elischer.org> <200908130052.11423.zec@freebsd.org> <4A835CBE.4060903@elischer.org> In-Reply-To: <4A835CBE.4060903@elischer.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews , Robert Watson Subject: Re: PERFORCE change 167260 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 00:57:38 -0000 Julian Elischer wrote: ok I think I have worked it out. > > AND for example: > in ./netinet/in_proto.c > VNET_DOMAIN_SET(inet); > includes > VNET_SYSINIT ##### --> called for every vnet as created #### (dubious) ##### --> and existing vnets.....on load > calls > vnet_domain_init() > calls > domain_init() > calls > protosw_init() > which includes > if (pr->pr_init) > (*pr->pr_init)(); > > so, robert is calling the init routine from each protocol > not the modevent. but you now do: pf_proto_register(int family, struct protosw *npr) { + VNET_ITERATOR_DECL(vnet_iter); struct domain *dp; struct protosw *pr, *fpr; @@ -391,7 +392,13 @@ mtx_unlock(&dom_mtx); /* Initialize and activate the protocol. */ - protosw_init(fpr); + VNET_LIST_RLOCK(); + VNET_FOREACH(vnet_iter) { + CURVNET_SET_QUIET(vnet_iter); + protosw_init(fpr); + CURVNET_RESTORE(); + } + VNET_LIST_RUNLOCK(); but that only dets called for existing domains at load time. so, who calls protosw_init on new domains? Robert does, and you don't. so there is no duplication. by design or luck... if we load a new domain (like netgraph sockets) then we need to just call the domain stuff which will get called every time a new vnet is made via VNET_SYSINIT and the module code does nothing. however I'm not totally convinced about running the domain code N times... the following code has references to dom_init calls ./kern/uipc_usrreq.c: .dom_init = unp_init, ./netipsec/keysock.c: .dom_init = key_init0, ./netnatm/natm_proto.c: .dom_init = natm_init, Of these only natm looks like it will go wierd if called multiple times.. I'd like to add a protocol flag that we set on protocols that it was ok to call the inti routine for on non-default vnets. 3rd party domains wouldn't ever have it set. From owner-p4-projects@FreeBSD.ORG Thu Aug 13 01:02:57 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4B9CA1065678; Thu, 13 Aug 2009 01:02:57 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0B6D41065670 for ; Thu, 13 Aug 2009 01:02:57 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outR.internet-mail-service.net (outr.internet-mail-service.net [216.240.47.241]) by mx1.freebsd.org (Postfix) with ESMTP id E34078FC1F for ; Thu, 13 Aug 2009 01:02:56 +0000 (UTC) Received: from idiom.com (mx0.idiom.com [216.240.32.160]) by out.internet-mail-service.net (Postfix) with ESMTP id F061ACB05; Wed, 12 Aug 2009 18:02:56 -0700 (PDT) X-Client-Authorized: MaGic Cook1e X-Client-Authorized: MaGic Cook1e X-Client-Authorized: MaGic Cook1e Received: from julian-mac.elischer.org (home.elischer.org [216.240.48.38]) by idiom.com (Postfix) with ESMTP id 1B6F62D600F; Wed, 12 Aug 2009 18:02:56 -0700 (PDT) Message-ID: <4A83663F.2090304@elischer.org> Date: Wed, 12 Aug 2009 18:02:55 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.22 (Macintosh/20090605) MIME-Version: 1.0 To: Marko Zec References: <200908122108.n7CL8uhJ058398@repoman.freebsd.org> <200908130052.11423.zec@freebsd.org> <4A835CBE.4060903@elischer.org> <200908130235.43161.zec@freebsd.org> In-Reply-To: <200908130235.43161.zec@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews , Robert Watson Subject: Re: PERFORCE change 167260 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 01:02:58 -0000 Marko Zec wrote: > On Thursday 13 August 2009 02:22:22 Julian Elischer wrote: >> Marko Zec wrote: >>> On Thursday 13 August 2009 00:44:49 Julian Elischer wrote: >>>> Marko Zec wrote: >>>>> On Wednesday 12 August 2009 23:58:46 Julian Elischer wrote: >>>>>> Marko Zec wrote: >>>>> ... >>>>> >>>>>>> @@ -710,22 +715,36 @@ >>>>>>> .pr_input = div_input, >>>>>>> .pr_ctlinput = div_ctlinput, >>>>>>> .pr_ctloutput = ip_ctloutput, >>>>>>> - .pr_init = NULL, >>>>>>> + .pr_init = div_init, >>>>>>> .pr_usrreqs = &div_usrreqs >>>>>> If you are going to make pr_init() called for every vnet then >>>>>> pr_destroy should be as well. But in fact that is not really safe. >>>>>> (either of them) >>>>>> >>>>>> The trouble is that we can not guarantee that other protocols can >>>>>> handle being called multiple times in their init and destroy methods. >>>>>> Especially 3rd party protocols. >>>>>> >>>>>> We need to ensure only protocols that have been converted to run >>>>>> with multiple vnets are ever called with multiple vnets. >>>>>> >>>>>> for this reason the only safe way to do this is via the VNET_SYSINIT >>>>>> and VNET_SYSUNINIT calls. >>>>> That would mean you would have to convert most if not all of the >>>>> existing things that hang off of protosw-s in netinet, netinet6 etc. to >>>>> use VNET_SYSINT / VNET_SYSUNIT instead of protosw->pr_init(). So the >>>>> short answer is no. >>>> robert has done just that. >>> hmm: >>> >>> tpx32% pwd >>> /u/marko/svn/head/sys >>> >>> tpx32% fgrep -R .pr_init netinet netinet6 netipsec|fgrep -v .svn >>> netinet/ip_divert.c: .pr_init = div_init, >>> netinet/in_proto.c: .pr_init = ip_init, >>> netinet/in_proto.c: .pr_init = udp_init, >>> netinet/in_proto.c: .pr_init = tcp_init, >>> netinet/in_proto.c: .pr_init = sctp_init, >>> netinet/in_proto.c: .pr_init = icmp_init, >>> netinet/in_proto.c: .pr_init = encap_init, >>> netinet/in_proto.c: .pr_init = encap_init, >>> netinet/in_proto.c: .pr_init = encap_init, >>> netinet/in_proto.c: .pr_init = encap_init, >>> netinet/in_proto.c: .pr_init = encap_init, >>> netinet/in_proto.c: .pr_init = rip_init, >>> netinet6/in6_proto.c: .pr_init = ip6_init, >>> netinet6/in6_proto.c: .pr_init = tcp_init, >>> netinet6/in6_proto.c: .pr_init = icmp6_init, >>> netinet6/in6_proto.c: .pr_init = encap_init, >>> netinet6/in6_proto.c: .pr_init = encap_init, >>> netinet6/ip6_mroute.c: .pr_init = pim6_init, >>> netipsec/keysock.c: .pr_init = raw_init, >> AND for example: >> in ./netinet/in_proto.c >> VNET_DOMAIN_SET(inet); >> includes >> VNET_SYSINIT ##### --> called for every vnet as created #### >> calls >> vnet_domain_init() >> calls >> domain_init() >> calls >> protosw_init() >> which includes >> if (pr->pr_init) >> (*pr->pr_init)(); >> >> so, robert is calling the init routine from each protocol >> not the modevent. > > Right. > > But when we kldload ipdivert and register its protosw via pf_proto_register(), > VNET_DOMAIN_SET() will not call ipdivert's pr_init() routine for each > existing vnet, hence pf_proto_register() will have to do this. yes I figured out that the distinguishing feature is whether you are loading a domain or a protocol. > > For subsequently created vnets, i.e. after ipdivert has been kldloaded, > pr_init() will indeed be called via VNET_DOMAIN_SET() mechanism on each vnet > instantiation. But at that point in time pf_proto_register() will not be > called. So, in both cases pr_init() will be called exactly once per vnet, > but via different mechanisms. well it's right, but I'm glad we went over it.. and I still think what I did in divert was better :-) > > Marko From owner-p4-projects@FreeBSD.ORG Thu Aug 13 04:50:22 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 480CB106566C; Thu, 13 Aug 2009 04:50:22 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F06D4106564A for ; Thu, 13 Aug 2009 04:50:21 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C59A38FC3E for ; Thu, 13 Aug 2009 04:50:21 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7D4oL4p019678 for ; Thu, 13 Aug 2009 04:50:21 GMT (envelope-from julian@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7D4oLFE019676 for perforce@freebsd.org; Thu, 13 Aug 2009 04:50:21 GMT (envelope-from julian@freebsd.org) Date: Thu, 13 Aug 2009 04:50:21 GMT Message-Id: <200908130450.n7D4oLFE019676@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to julian@freebsd.org using -f From: Julian Elischer To: Perforce Change Reviews Cc: Subject: PERFORCE change 167266 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 04:50:23 -0000 http://perforce.freebsd.org/chv.cgi?CH=167266 Change 167266 by julian@julian-mac on 2009/08/13 04:49:23 Add a bit about initializing protocols and protocol domains using VNET_PROTO_SET() and friends. Affected files ... .. //depot/projects/vimage/porting_to_vimage.txt#15 edit Differences ... ==== //depot/projects/vimage/porting_to_vimage.txt#15 (text+ko) ==== @@ -62,7 +62,7 @@ socket->vnet binding gets established, it cannot be changed for the entire socket lifetime. -The mapping of a from a thread to a vnet is should always be doen via the +The mapping of a from a thread to a vnet should always be done via the TD_TO_VNET macro as the path may change in the future as we get more experience with using the system. @@ -254,7 +254,8 @@ When a new loadable module is virtualised the module definitions and intializers need to be examined. The following example illustrates -what is needed: +what is needed in the case that you are not loading a new protocol, or domain. +(for that see later) ============= sample skeleton code ========== @@ -412,6 +413,29 @@ Sometimes there is a need to iterate through the vnets. See the modevent shutdown handler (above) for an example of how to do this. +In the case where you are loading a new protocol, or domain (protocol family) +there are some "shortcuts" that are in place to allow you to maintain a bit +more source compatibility with older revisions of FreeBSD. It must be +added that the sample code above works just fine for protocols, however +protcols also have an aditional initialization vector which is via the +prtocol structure, which has a pr_init() entry. +When a protocol is registered using pf_proto_register(), the pr_init() +for the protocol is called once for every existing vnet. in addition, +it will be called for each new vnet. The pr_destroy() method will be called +as well on vnet teardown. The pf_proto_register() funcion can be called +either from a modevent handler of from the SYSINIT() if you have one, and +the pf_proto_unregister() called from the SYSUNINIT or the unload +modevent handler. + +If you are adding a whole new protocol domain, (protocol family) then +you should add the VNET_DOMAIN_SET(domainname) (e,g, inet, inet6) +macro. These use VNET_SYSINIT internally to indirectly call the +dom_init() and pr_init() functions for each vnet, (and the equivalent for +teardown.) In this case one needs to be absolutely sure that both your +domain and protocol initializers can be called multiple times, once for +each vnet. One can still add SYSINITs for once only initialization, +or use the modevent handler + finally: The command to make a new jail with a new vnet: jail -c host.hostname=test path=/ vnet command=/bin/tcsh From owner-p4-projects@FreeBSD.ORG Thu Aug 13 08:02:53 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B93B11065672; Thu, 13 Aug 2009 08:02:52 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 609BC106566C for ; Thu, 13 Aug 2009 08:02:52 +0000 (UTC) (envelope-from dforsyth@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4E4838FC41 for ; Thu, 13 Aug 2009 08:02:52 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7D82qxm036935 for ; Thu, 13 Aug 2009 08:02:52 GMT (envelope-from dforsyth@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7D82qdu036933 for perforce@freebsd.org; Thu, 13 Aug 2009 08:02:52 GMT (envelope-from dforsyth@FreeBSD.org) Date: Thu, 13 Aug 2009 08:02:52 GMT Message-Id: <200908130802.n7D82qdu036933@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to dforsyth@FreeBSD.org using -f From: David Forsythe To: Perforce Change Reviews Cc: Subject: PERFORCE change 167271 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 08:02:53 -0000 http://perforce.freebsd.org/chv.cgi?CH=167271 Change 167271 by dforsyth@squirrel on 2009/08/13 08:01:53 Clean up build. Affected files ... .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#44 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#39 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_conflict.c#7 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db.c#11 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb.c#9 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb_read.c#5 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb_write.c#2 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb_write.h#2 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_depend.c#6 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest.c#5 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest.h#5 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest_plist.c#6 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_util.c#17 edit .. //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_util.h#14 edit .. //depot/projects/soc2009/dforsyth_libpkg/pkg_info/main.c#30 edit Differences ... ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.c#44 (text+ko) ==== @@ -14,9 +14,13 @@ #include "pkg_private.h" #include "pkg.h" +/* TODO: Access functions are pretty, but they're a waste. Start eliminating them. */ + void pkg_check_magic(struct pkg *p, const char *where); static int pkg_read_pkg_element_from_db(struct pkg *p, int element); +#if 0 static int pkg_write_pkg_element_to_db(struct pkg *p, int element); +#endif static int pkg_parse_manifest(struct pkg *p); void @@ -284,15 +288,6 @@ return (pkg_util_strdup(mtree_dirs, &p->mtree_dirs)); } -/* Set the required_by text for this file. */ - -int -pkg_set_required_by(struct pkg *p, const char *required_by) -{ - pkg_check_magic(p, __func__); - return (pkg_util_strdup(required_by, &p->required_by)); -} - int pkg_clone(struct pkg *src, struct pkg *dest) { @@ -407,7 +402,8 @@ pkg_check_magic(p, __func__); if ((pf = pkg_manifest_select_file(p->pm, path)) == NULL) return (-1); - return (pkg_file_ignored(pf)); + pkg_manifest_remove_file(p->pm, path); + return(0); } int @@ -416,8 +412,8 @@ struct pkg_file *pf; pkg_check_magic(p, __func__); if ((pf = pkg_manifest_select_file(p->pm, path)) == NULL) - return (NULL); - return ((const char *)pkg_file_ignored(pf)); + return (-1); + return (pkg_file_ignored(pf)); } const char * @@ -476,14 +472,16 @@ { pkg_check_magic(p, __func__); pkg_parse_manifest(p); - return (pkg_manifest_add_depend(name, origin, version)); + return (pkg_manifest_add_depend(p->pm, name, origin, version)); } +#if 0 int pkg_remove_pkg_depend(struct pkg *p, const char *name) { return (0); } +#endif const char * pkg_pkg_depend_origin(struct pkg *p, const char *name) @@ -530,6 +528,7 @@ return (pkg_manifest_complete(p->pm)); } +#if 0 /* Wrap _write_pkg_element. */ static int @@ -537,6 +536,7 @@ { return (pkg_db_write_pkg_element(p->in_db, p, element)); } +#endif /* Wrap _read_pkg_element. */ ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg.h#39 (text+ko) ==== @@ -46,7 +46,6 @@ /* tmp */ int pkg_set_mtree_dirs(struct pkg *p, const char *mtree_dirs); -int pkg_set_required_by(struct pkg *p, const char *required_by); int pkg_clone(struct pkg *src, struct pkg *dest); int pkg_force_parse_manifest(struct pkg *p); @@ -59,6 +58,7 @@ const char *const *pkg_execs(struct pkg *p); const char *const *pkg_unexecs(struct pkg *p); + int pkg_add_pkg_file(struct pkg *p, const char *path, const char *cwd, const char *group, const char *md5, const char *mode, const char *owner); @@ -87,6 +87,7 @@ int pkg_preserve(struct pkg *p); int pkg_complete(struct pkg *p); +int pkg_add_required_by(struct pkg *p, const char *required_by); const char *const *pkg_required_by(struct pkg *p); /* pkg_db */ ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_conflict.c#7 (text+ko) ==== @@ -6,7 +6,7 @@ #include "pkg_util.h" #include "pkg_conflict.h" -#define PKG_CONFLICT_MAGIC 0x98760000 +#define PKG_CONFLICT_MAGIC 0x08760000 static void pkg_conflict_check_magic(struct pkg_conflict *pc, const char *where); ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db.c#11 (text+ko) ==== @@ -50,8 +50,6 @@ int pkg_db_open(struct pkg_db *db, const char *db_root, int db_type) { - int status; - if (db->open) return (PKG_OK); @@ -124,15 +122,7 @@ return (p); } -int -pkg_db_insert_pkg(struct pkg_db *db, struct pkg *p) -{ - pkg_db_check_magic(db, __func__); - /* do work. */ - return (PKG_OK); -} - /* Copy a package into a database. */ int @@ -141,6 +131,7 @@ int status; char **list; struct pkg *entries; + if (db->pkg_count % 10 == 0) { entries = db->pkg_entries; list = db->pkg_list; @@ -154,7 +145,9 @@ __pkg_init(&db->pkg_entries[db->pkg_count]); status = pkg_clone(p, &db->pkg_entries[db->pkg_count]); - db->pkg_list[db->pkg_count] = pkg_ident(&db->pkg_entries[db->pkg_count]); + /* reuse entries. */ + entries = &db->pkg_entries[db->pkg_count]; + db->pkg_list[db->pkg_count] = entries->ident; __pkg_set_in_db_ptr(&db->pkg_entries[db->pkg_count], db); db->pkg_count++; db->pkg_list[db->pkg_count] = NULL; @@ -185,8 +178,10 @@ return (db->db_root); } +#if 0 int pkg_db_write_pkg_element(struct pkg_db *db, struct pkg *p, int element) { return (0); } +#endif ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb.c#9 (text+ko) ==== @@ -79,7 +79,6 @@ pkg_db_hierdb_file_exists(struct pkg_db *db, struct pkg *p, const char *filename) { int status; - struct stat sb; char *dir; char *path; ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb_read.c#5 (text+ko) ==== @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -214,6 +215,8 @@ return (PKG_OK); } +/* XXX: For the love of all things organic rewrite this and macro the goddamn list + * append. */ static int pkg_db_hierdb_read_required_by_to_pkg(struct pkg_db *db, struct pkg *p) { ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb_write.c#2 (text+ko) ==== @@ -1,8 +1,10 @@ #include #include +#if 0 int pkg_db_hierdb_write_pkg_element(struct pkg_db *db, struct pkg *p, int element) { return (0); } +#endif ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_db_hierdb_write.h#2 (text+ko) ==== @@ -1,6 +1,8 @@ #ifndef __PKG_DB_HIERDB_WRITE_H__ #define __PKG_DB_HIERDB_WRITE_H__ +#include "pkg.h" + int pkg_db_hierdb_write_pkg_element(struct pkg_db *db, struct pkg *p, int element); #endif ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_depend.c#6 (text+ko) ==== @@ -70,6 +70,13 @@ return (pkg_util_strdup(origin, &pd->origin)); } +int +pkg_depend_set_version(struct pkg_depend *pd, const char *version) +{ + pkg_depend_check_magic(pd, __func__); + return (pkg_util_strdup(version, &pd->version)); +} + const char * pkg_depend_name(struct pkg_depend *pd) { ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest.c#5 (text+ko) ==== @@ -255,15 +255,15 @@ status |= pkg_conflict_set_name(pc, name); status |= pkg_conflict_set_version(pc, version); - pm->conflict_list[pm->conflict_count++] = pkg_conflict_name(pc); + pm->conflict_list[pm->conflict_count++] = pc->name; pm->conflict_list[pm->conflict_count] = NULL; return (status); } int -pkg_manifest_add_depend(struct pkg_manifest *pm, const char *name, - const char *origin) +pkg_manifest_add_depend(struct pkg_manifest *pm, const char *name, + const char *version, const char *origin) { int status; char **list; @@ -293,8 +293,9 @@ pkg_depend_init(pd); status |= pkg_depend_set_name(pd, name); status |= pkg_depend_set_origin(pd, origin); + status |= pkg_depend_set_version(pd, version); - pm->depend_list[pm->depend_count++] = pkg_depend_name(pd); + pm->depend_list[pm->depend_count++] = pd->name; pm->depend_list[pm->depend_count] = NULL; return (status); @@ -340,7 +341,7 @@ status |= pkg_file_set_owner(pf, owner); status |= pkg_file_set_group(pf, group); - pm->file_list[pm->file_count++] = pkg_file_path(pf); + pm->file_list[pm->file_count++] = pf->path; pm->file_list[pm->file_count] = NULL; return (status); @@ -431,6 +432,8 @@ pkg_manifest_remove_conflict(struct pkg_manifest *pm, const char *name) { pkg_manifest_check_magic(pm, __func__); + if (name == NULL) + return; return; } @@ -438,6 +441,8 @@ pkg_manifest_remove_depend(struct pkg_manifest *pm, const char *name) { pkg_manifest_check_magic(pm, __func__); + if (name == NULL) + return; return; } @@ -445,6 +450,8 @@ pkg_manifest_remove_file(struct pkg_manifest *pm, const char *path) { pkg_manifest_check_magic(pm, __func__); + if (path == NULL) + return; return; } @@ -452,6 +459,8 @@ pkg_manifest_remove_exec_cmd(struct pkg_manifest *pm, int cmdidx) { pkg_manifest_check_magic(pm, __func__); + if (cmdidx < 0) + return; return; } @@ -459,6 +468,8 @@ pkg_manifest_remove_unexec_cmd(struct pkg_manifest *pm, int cmdidx) { pkg_manifest_check_magic(pm, __func__); + if (cmdidx < 0) + return; return; } ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest.h#5 (text+ko) ==== @@ -129,7 +129,7 @@ const char *version); int pkg_manifest_add_depend(struct pkg_manifest *pm, const char *name, - const char *origin); + const char *version, const char *origin); int pkg_manifest_add_file(struct pkg_manifest *pm, const char *path, const char *md5, const char *cwd, const char *mode, const char *owner, const char *group); ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_manifest_plist.c#6 (text+ko) ==== @@ -343,7 +343,7 @@ status = PKG_NOT_OK; break; } - status = pkg_manifest_add_depend(pm, isolate, NULL); + status = pkg_manifest_add_depend(pm, isolate, NULL, NULL); status |= pkg_util_strdup(isolate, &st->last_rel_depend); break; case (PM_CONFLICTS): ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_util.c#17 (text+ko) ==== @@ -47,7 +47,7 @@ } int -strsort(const void *a, const void *b) +strsort(void *a, void *b) { return (strcmp(*(char **)a, *(char **)b)); } @@ -112,6 +112,7 @@ const char *const *depends; const char *const *install_list; const char *const *deinstall_list; + const char *const *reqdby_list; const char *ident; const char *comment; @@ -139,7 +140,7 @@ name = pkg_name(p); origin = pkg_origin(p); mtree_file = pkg_mtree_file(p); - reqdby = pkg_required_by(p); + reqdby_list = pkg_required_by(p); display = pkg_display(p); desc = pkg_description(p); @@ -206,8 +207,10 @@ } fprintf(stream, "\nrequired by:\n"); - fprintf(stream, "%s\n", - (reqdby != NULL ? reqdby : "None.")); + reqdby_list = pkg_required_by(p); + if (reqdby_list != NULL) + while((reqdby = *reqdby_list++) != NULL) + fprintf(stream, "%s\n", reqdby); fprintf(stream, "\ndisplay:\n"); fprintf(stream, "%s\n", ==== //depot/projects/soc2009/dforsyth_libpkg/libpkg/pkg_util.h#14 (text+ko) ==== @@ -7,7 +7,7 @@ int pkg_util_strdup(const char *src, char **dest); -int strsort(const void *a, const void *b); +int strsort(void *a, void *b); char *path_strdup(const char *name); ==== //depot/projects/soc2009/dforsyth_libpkg/pkg_info/main.c#30 (text+ko) ==== @@ -260,11 +260,15 @@ /* Why do I even return from this function? */ int status; const char *block_text; + const char *buff; const char *const *klist; + + block_text = NULL; + buff = NULL; status = OK; if (info_prefix == NULL) - info_prefix = ""; + info_prefix = strdup(""); if (flags & OPT_DEBUG_DUMP) { pkg_dump(p, stdout); @@ -299,10 +303,12 @@ if (flags & OPT_SHOW_REQUIRED_BY) { /* Macro these scuzzy loops. */ - for (klist = pkg_required_by(p), - (klist != NULL) ? fprintf(out, "Required by:\n") : NULL; - klist != NULL && *klist != NULL; *klist++) - printf("%s\n", *klist); + klist = pkg_required_by(p); + if (klist != NULL) { + fprintf(out, "Required by:\n"); + for (; *klist != NULL; buff = *klist++) + printf("%s\n", buff); + } printf("\n"); } @@ -324,33 +330,33 @@ printf("\tPackage name: %s\n", pkg_name(p)); printf("\tPackage origin: %s\n", pkg_origin(p)); - for (klist = pkg_depends(p); klist != NULL && *klist != NULL; *klist++) + for (klist = pkg_depends(p); klist != NULL && *klist != NULL; block_text = *klist++) printf("Dependency: %s\n\tdependency origin: %s\n", - *klist, pkg_pkg_depend_origin(p, *klist)); + block_text, pkg_pkg_depend_origin(p, block_text)); block_text = NULL; - for (klist = pkg_files(p); klist != NULL && *klist != NULL; *klist++) { - if (block_text == NULL || strcmp(block_text, pkg_pkg_file_cwd(p, *klist)) != 0) - printf("\tCWD to %s\n", block_text = pkg_pkg_file_cwd(p, *klist)); + for (klist = pkg_files(p); klist != NULL && *klist != NULL; buff = *klist++) { + if (block_text == NULL || strcmp(block_text, pkg_pkg_file_cwd(p, buff)) != 0) + printf("\tCWD to %s\n", block_text = pkg_pkg_file_cwd(p, buff)); printf("File: %s\n\tComment: MD5: %s\n", - *klist, pkg_pkg_file_md5(p, *klist)); + buff, pkg_pkg_file_md5(p, buff)); } - for (klist = pkg_execs(p); klist != NULL && *klist != NULL; *klist++) - printf("\tEXEC '%s'\n", *klist); - for (klist = pkg_unexecs(p); klist != NULL && *klist != NULL; *klist++) - printf("\tUNEXEC '%s'\n", *klist); + for (klist = pkg_execs(p); klist != NULL && *klist != NULL; buff = *klist++) + printf("\tEXEC '%s'\n", buff); + for (klist = pkg_unexecs(p); klist != NULL && *klist != NULL; buff = *klist++) + printf("\tUNEXEC '%s'\n", buff); } if (flags & OPT_SHOW_REQUIRE) - /* LOLWAT */;; + printf("LOLWAT\n"); if (flags & OPT_SHOW_INSTALL) - /* LOLWAT */;; + printf("LOLWAT\n"); if (flags & OPT_SHOW_DEINSTALL) - /* LOLWAT */;; + printf("LOLWAT\n"); if (flags & OPT_SHOW_MTREE) { block_text = pkg_mtree_dirs(p); @@ -363,9 +369,9 @@ if (flags & OPT_SHOW_FILES) { printf("Files:\n"); - for (klist = pkg_files(p); klist != NULL && *klist != NULL; *klist++) - if (!pkg_pkg_file_ignored(p, *klist)) - printf("%s/%s\n", pkg_pkg_file_cwd(p, *klist), *klist); + for (klist = pkg_files(p); klist != NULL && *klist != NULL; buff = *klist++) + if (!pkg_pkg_file_ignored(p, buff)) + printf("%s/%s\n", pkg_pkg_file_cwd(p, buff), buff); printf("\n"); } @@ -374,8 +380,8 @@ } if (flags & OPT_SHOW_CHECKSUM) { - for (klist = pkg_files(p); klist != NULL && *klist != NULL; *klist++) - /* Make a util function to handle this. */;; + for (klist = pkg_files(p); klist != NULL && *klist != NULL; buff = *klist++) + fprintf(out, "checking checksum for %s\n", buff); } if (flags & OPT_SHOW_ORIGIN) From owner-p4-projects@FreeBSD.ORG Thu Aug 13 08:12:03 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D87021065672; Thu, 13 Aug 2009 08:12:02 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 984A0106566C for ; Thu, 13 Aug 2009 08:12:02 +0000 (UTC) (envelope-from dforsyth@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 877368FC41 for ; Thu, 13 Aug 2009 08:12:02 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7D8C2X3038917 for ; Thu, 13 Aug 2009 08:12:02 GMT (envelope-from dforsyth@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7D8C2V2038915 for perforce@freebsd.org; Thu, 13 Aug 2009 08:12:02 GMT (envelope-from dforsyth@FreeBSD.org) Date: Thu, 13 Aug 2009 08:12:02 GMT Message-Id: <200908130812.n7D8C2V2038915@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to dforsyth@FreeBSD.org using -f From: David Forsythe To: Perforce Change Reviews Cc: Subject: PERFORCE change 167273 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 08:12:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=167273 Change 167273 by dforsyth@squirrel on 2009/08/13 08:11:31 Whoops. Fix element checks on NULL. Affected files ... .. //depot/projects/soc2009/dforsyth_libpkg/pkg_info/main.c#31 edit Differences ... ==== //depot/projects/soc2009/dforsyth_libpkg/pkg_info/main.c#31 (text+ko) ==== @@ -329,17 +329,23 @@ printf("\tComment: PKG_FORMAT_REVISION:%s\n", pkg_format_revision(p)); printf("\tPackage name: %s\n", pkg_name(p)); printf("\tPackage origin: %s\n", pkg_origin(p)); - - for (klist = pkg_depends(p); klist != NULL && *klist != NULL; block_text = *klist++) - printf("Dependency: %s\n\tdependency origin: %s\n", - block_text, pkg_pkg_depend_origin(p, block_text)); + + klist = pkg_depends(p); + if (klist != NULL) { + for (buff = *klist++; *klist != NULL; buff = *klist++) + printf("Dependency: %s\n\tdependency origin: %s\n", + buff, pkg_pkg_depend_origin(p, buff)); + } block_text = NULL; - for (klist = pkg_files(p); klist != NULL && *klist != NULL; buff = *klist++) { - if (block_text == NULL || strcmp(block_text, pkg_pkg_file_cwd(p, buff)) != 0) - printf("\tCWD to %s\n", block_text = pkg_pkg_file_cwd(p, buff)); - printf("File: %s\n\tComment: MD5: %s\n", - buff, pkg_pkg_file_md5(p, buff)); + klist = pkg_files(p); + if (klist != NULL) { + for (buff = *klist++; *klist != NULL; buff = *klist++) { + if (block_text == NULL || strcmp(block_text, pkg_pkg_file_cwd(p, buff)) != 0) + printf("\tCWD to %s\n", block_text = pkg_pkg_file_cwd(p, buff)); + printf("File: %s\n\tComment: MD5: %s\n", + buff, pkg_pkg_file_md5(p, buff)); + } } for (klist = pkg_execs(p); klist != NULL && *klist != NULL; buff = *klist++) From owner-p4-projects@FreeBSD.ORG Thu Aug 13 09:36:35 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A4D7D1065672; Thu, 13 Aug 2009 09:36:35 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6095F106566B for ; Thu, 13 Aug 2009 09:36:35 +0000 (UTC) (envelope-from marta@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4DC8D8FC16 for ; Thu, 13 Aug 2009 09:36:35 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7D9aZeG056279 for ; Thu, 13 Aug 2009 09:36:35 GMT (envelope-from marta@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7D9aZQP056277 for perforce@freebsd.org; Thu, 13 Aug 2009 09:36:35 GMT (envelope-from marta@FreeBSD.org) Date: Thu, 13 Aug 2009 09:36:35 GMT Message-Id: <200908130936.n7D9aZQP056277@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marta@FreeBSD.org using -f From: Marta Carbone To: Perforce Change Reviews Cc: Subject: PERFORCE change 167277 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 09:36:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=167277 Change 167277 by marta@marta_onelab1 on 2009/08/13 09:36:28 This commit: - add the libipfw build; - modify the ipfw Makefile in order to build the ipfw userspace tool using the libipfw library; - use a storage buffer (sbuf) to store rules decompiled output; (this involves an additional output parameter to be passed to all functions involved with user output); - use a reentrant version for a sorting function in dummynet.c; - add additional variables to the cmd options structure (used to filter output rules, show packet counter or implements strict check on rules); - add a command line option to implement a strict check on rules syntax. Affected files ... .. //depot/projects/soc2009/marta_ipfw/src/lib/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/bind9/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/config.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/config.mk#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/dns/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/dns/code.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/dns/dns/enumclass.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/dns/dns/enumtype.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/dns/dns/rdatastruct.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/isc/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/isc/isc/platform.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/isccc/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/isccfg/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/lwres/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/lwres/lwres/netdb.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/bind/lwres/lwres/platform.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/amd64/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/amd64/crt1.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/amd64/crti.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/amd64/crtn.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/arm/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/arm/crt1.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/arm/crti.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/arm/crtn.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/common/crtbrand.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/i386-elf/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/i386-elf/crt1.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/i386-elf/crti.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/i386-elf/crtn.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/ia64/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/ia64/crt1.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/ia64/crti.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/ia64/crtn.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/mips/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/mips/crt1.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/mips/crti.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/mips/crtn.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/powerpc/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/powerpc/crt1.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/powerpc/crti.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/powerpc/crtn.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/sparc64/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/sparc64/crt1.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/sparc64/crti.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/csu/sparc64/crtn.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libalias/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libalias/libalias/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libalias/modules/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libalias/modules/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libalias/modules/cuseeme/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libalias/modules/dummy/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libalias/modules/ftp/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libalias/modules/irc/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libalias/modules/nbt/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libalias/modules/pptp/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libalias/modules/skinny/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libalias/modules/smedia/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/COPYING#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/README#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_check_magic.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_endian.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_entry.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_entry.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_entry.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_entry_copy_stat.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_entry_link_resolver.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_entry_private.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_entry_stat.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_entry_strmode.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_platform.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_private.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_data_into_fd.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_disk.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_disk.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_disk_entry_from_file.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_disk_private.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_disk_set_standard_lookup.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_extract.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_open_fd.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_open_file.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_open_filename.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_open_memory.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_private.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_compression_all.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_compression_bzip2.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_compression_compress.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_compression_gzip.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_compression_none.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_compression_program.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_compression_xz.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_format_all.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_format_ar.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_format_cpio.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_format_empty.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_format_iso9660.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_format_mtree.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_format_raw.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_format_tar.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_read_support_format_zip.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_string.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_string.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_string_sprintf.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_util.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_util.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_virtual.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_disk.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_disk.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_disk_private.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_disk_set_standard_lookup.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_open_fd.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_open_file.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_open_filename.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_open_memory.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_private.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_set_compression_bzip2.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_set_compression_compress.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_set_compression_gzip.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_set_compression_none.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_set_compression_program.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_set_compression_xz.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_set_format.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_set_format_ar.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_set_format_by_name.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_set_format_cpio.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_set_format_cpio_newc.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_set_format_mtree.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_set_format_pax.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_set_format_shar.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/archive_write_set_format_ustar.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/config_freebsd.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/cpio.5#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/filter_fork.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/filter_fork.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/libarchive-formats.5#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/libarchive.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/libarchive_internals.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/tar.5#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/.cvsignore#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/README#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/main.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/read_open_memory.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_acl_basic.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_acl_freebsd.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_acl_pax.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_archive_api_feature.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_bad_fd.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_bzip2.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_bzip2_1.tbz.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_bzip2_2.tbz.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_gtar.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_gtar_1.tar.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_gzip.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_gzip_1.tgz.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_gzip_2.tgz.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_solaris_tar_acl.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_solaris_tar_acl.tar.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_tar_hardlink.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_tar_hardlink_1.tar.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_xz.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_xz_1.txz.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_zip.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_compat_zip_1.zip.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_empty_write.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_entry.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_entry_strmode.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_extattr_freebsd.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_fuzz.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_fuzz_1.iso.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_link_resolver.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_open_fd.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_open_file.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_open_filename.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_pax_filename_encoding.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_pax_filename_encoding.tar.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_compress_program.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_data_large.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_disk.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_disk_entry_from_file.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_extract.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_file_nonexistent.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_ar.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_cpio_bin.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_cpio_bin_Z.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_cpio_bin_be.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_cpio_bin_be.cpio.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_cpio_bin_bz2.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_cpio_bin_gz.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_cpio_bin_xz.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_cpio_odc.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_cpio_svr4_gzip.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_cpio_svr4c_Z.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_empty.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_gtar_gz.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_gtar_lzma.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_gtar_sparse.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_gtar_sparse_1_13.tar.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_gtar_sparse_1_17.tar.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_gtar_sparse_1_17_posix00.tar.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_gtar_sparse_1_17_posix01.tar.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_gtar_sparse_1_17_posix10.tar.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_gtar_sparse_1_17_posix10_modified.tar.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_iso_gz.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_iso_gz.iso.gz.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_isojoliet_bz2.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_isojoliet_bz2.iso.bz2.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_isojolietrr_bz2.iso.bz2.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_isorr_bz2.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_isorr_bz2.iso.bz2.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_mtree.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_pax_bz2.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_raw.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_raw.data.Z.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_raw.data.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_tar.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_tar_empty_filename.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_tar_empty_filename.tar.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_tbz.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_tgz.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_txz.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_tz.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_zip.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_format_zip.zip.uu#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_large.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_pax_truncated.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_position.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_read_truncated.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_tar_filenames.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_tar_large.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_ustar_filenames.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_compress.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_compress_bzip2.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_compress_gzip.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_compress_lzma.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_compress_program.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_compress_xz.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_disk.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_disk_failures.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_disk_hardlink.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_disk_perms.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_disk_secure.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_disk_sparse.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_disk_times.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_format_ar.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_format_cpio.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_format_cpio_empty.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_format_cpio_newc.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_format_cpio_odc.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_format_mtree.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_format_pax.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_format_shar_empty.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_format_tar.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_format_tar_empty.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_format_tar_ustar.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libarchive/test/test_write_open_memory.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libauditd/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libautofs/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libautofs/libautofs.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libautofs/libautofs.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libautofs/libautofs.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libbegemot/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libbluetooth/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libbluetooth/bluetooth.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libbluetooth/bluetooth.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libbluetooth/bluetooth.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libbluetooth/dev.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libbluetooth/hci.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libbsm/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libbsnmp/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libbsnmp/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libbsnmp/libbsnmp/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libbz2/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/Versions.def#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/SYS.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/Symbol.map#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/_fpmath.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/arith.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gd_qnan.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/_set_tp.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/_setjmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/fabs.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/flt_rounds.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/fpgetmask.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/fpgetprec.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/fpgetround.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/fpgetsticky.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/fpsetmask.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/fpsetprec.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/fpsetround.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/infinity.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/ldexp.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/makecontext.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/modf.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/rfork_thread.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/setjmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/signalcontext.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/gen/sigsetjmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/stdlib/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/stdlib/div.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/stdlib/ldiv.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/stdlib/lldiv.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/string/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/string/bcmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/string/bcopy.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/string/bzero.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/string/memcmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/string/memcpy.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/string/memmove.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/string/memset.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/string/strcat.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/string/strcmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/string/strcpy.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/amd64_get_fsbase.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/amd64_get_gsbase.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/amd64_set_fsbase.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/amd64_set_gsbase.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/brk.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/cerror.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/exect.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/getcontext.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/pipe.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/ptrace.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/reboot.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/sbrk.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/setlogin.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/sigreturn.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/amd64/sys/vfork.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/SYS.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/Symbol.map#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/_fpmath.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/arith.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/gd_qnan.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/gen/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/gen/_ctx_start.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/gen/_set_tp.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/gen/_setjmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/gen/alloca.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/gen/divsi3.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/gen/fabs.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/gen/infinity.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/gen/makecontext.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/gen/modf.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/gen/setjmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/gen/signalcontext.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/gen/sigsetjmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/softfloat/arm-gcc.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/softfloat/milieu.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/softfloat/softfloat.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/string/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/string/bcopy.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/string/bzero.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/string/ffs.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/string/memcmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/string/memcpy.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/string/memcpy_arm.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/string/memcpy_xscale.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/string/memmove.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/string/memset.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/string/strcmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/string/strlen.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/string/strncmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/sys/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/sys/Ovfork.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/sys/brk.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/sys/cerror.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/sys/fork.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/sys/pipe.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/sys/ptrace.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/sys/sbrk.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/sys/shmat.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/sys/sigreturn.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/arm/sys/syscall.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/Symbol.map#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/creat.2#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/creat.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/gethostid.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/gethostid.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/getwd.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/killpg.2#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/killpg.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/sethostid.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/setpgrp.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/setrgid.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/setruid.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/setruid.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/sigcompat.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/sigpause.2#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/sigsetmask.2#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/compat-43/sigvec.2#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/README#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/Symbol.map#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/bt_close.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/bt_conv.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/bt_debug.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/bt_delete.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/bt_get.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/bt_open.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/bt_overflow.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/bt_page.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/bt_put.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/bt_search.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/bt_seq.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/bt_split.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/bt_utils.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/btree.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/btree/extern.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/changelog#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/db/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/db/db.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/docs/hash.usenix.ps#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/docs/libtp.usenix.ps#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/hash/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/hash/README#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/hash/extern.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/hash/hash.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/hash/hash.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/hash/hash_bigkey.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/hash/hash_buf.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/hash/hash_func.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/hash/hash_log2.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/hash/hash_page.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/hash/ndbm.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/hash/page.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/man/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/man/btree.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/man/dbm.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/man/dbopen.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/man/hash.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/man/mpool.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/man/recno.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/mpool/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/mpool/README#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/mpool/mpool-compat.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/mpool/mpool.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/mpool/mpool.libtp#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/recno/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/recno/extern.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/recno/rec_close.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/recno/rec_delete.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/recno/rec_get.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/recno/rec_open.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/recno/rec_put.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/recno/rec_search.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/recno/rec_seq.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/recno/rec_utils.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/recno/recno.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/test/Makefile#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/test/README#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/test/btree.tests/main.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/test/dbtest.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/test/hash.tests/driver2.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/test/hash.tests/makedb.sh#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/test/hash.tests/tcreat3.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/test/hash.tests/tdel.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/test/hash.tests/testit#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/test/hash.tests/thash4.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/test/hash.tests/tread2.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/test/hash.tests/tseq.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/test/hash.tests/tverify.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/db/test/run.test#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gdtoa/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gdtoa/Symbol.map#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gdtoa/_hdtoa.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gdtoa/_hldtoa.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gdtoa/_ldtoa.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gdtoa/glue.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gdtoa/machdep_ldisQ.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gdtoa/machdep_ldisd.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gdtoa/machdep_ldisx.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/Symbol.map#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/__getosreldate.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/__xuname.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/_pthread_stubs.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/_rand48.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/_spinlock_stub.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/_thread_init.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/alarm.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/alarm.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/arc4random.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/arc4random.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/assert.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/basename.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/basename.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/check_utility_compat.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/check_utility_compat.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/clock.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/clock.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/closedir.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/confstr.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/confstr.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/crypt.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ctermid.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ctermid.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/daemon.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/daemon.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/devname.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/devname.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/directory.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/dirname.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/dirname.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/disklabel.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/dladdr.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/dlfcn.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/dlinfo.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/dllockinit.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/dlopen.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/drand48.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/erand48.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/err.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/err.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/errlst.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/errno.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/exec.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/exec.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/fdevname.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/feature_present.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/feature_present.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/fmtcheck.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/fmtcheck.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/fmtmsg.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/fmtmsg.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/fnmatch.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/fnmatch.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/fpclassify.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/fpclassify.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/frexp.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/frexp.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/fstab.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ftok.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ftok.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/fts-compat.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/fts-compat.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/fts.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/fts.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ftw.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ftw.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getbootfile.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getbootfile.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getbsize.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getbsize.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getcap.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getcap.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getcontext.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getcwd.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getcwd.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getdiskbyname.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getdomainname.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getdomainname.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getfsent.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getgrent.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getgrent.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getgrouplist.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getgrouplist.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/gethostname.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/gethostname.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getloadavg.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getloadavg.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getlogin.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getmntinfo.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getmntinfo.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getnetgrent.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getnetgrent.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getosreldate.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getosreldate.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getpagesize.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getpagesize.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getpass.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getpeereid.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getpeereid.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getprogname.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getprogname.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getpwent.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getpwent.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getttyent.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getttyent.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getusershell.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getusershell.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getvfsbyname.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/getvfsbyname.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/glob.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/glob.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/initgroups.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/initgroups.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/isatty.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/isgreater.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/isinf.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/isnan.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/jrand48.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/lcong48.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ldexp.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ldexp.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/lockf.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/lockf.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/lrand48.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/makecontext.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/modf.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/mrand48.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/nftw.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/nice.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/nice.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/nlist.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/nlist.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/nrand48.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/opendir.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/pause.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/pause.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/pmadvise.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/popen.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/popen.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/posix_spawn.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/posix_spawn.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/posix_spawn_file_actions_addopen.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/posix_spawn_file_actions_init.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/posix_spawnattr_getflags.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/posix_spawnattr_getpgroup.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/posix_spawnattr_getschedparam.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/posix_spawnattr_getschedpolicy.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/posix_spawnattr_getsigdefault.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/posix_spawnattr_getsigmask.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/posix_spawnattr_init.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/pselect.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/pselect.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/psignal.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/psignal.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/pw_scan.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/pw_scan.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/pwcache.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/pwcache.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/raise.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/raise.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/rand48.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/rand48.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/readdir.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/readpassphrase.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/readpassphrase.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/rewinddir.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/rfork_thread.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/scandir.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/scandir.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/seed48.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/seekdir.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sem.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sem_destroy.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sem_getvalue.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sem_init.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sem_open.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sem_post.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sem_timedwait.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sem_wait.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/semctl.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/setdomainname.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sethostname.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/setjmp.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/setjmperr.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/setmode.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/setmode.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/setproctitle.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/setproctitle.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/setprogname.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/siginterrupt.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/siginterrupt.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/siglist.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/signal.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/signal.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sigsetops.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sigsetops.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sleep.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sleep.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/srand48.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/statvfs.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/statvfs.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/stringlist.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/stringlist.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/strtofflags.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/strtofflags.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/swapcontext.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sysconf.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sysconf.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sysctl.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sysctl.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sysctlbyname.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/sysctlnametomib.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/syslog.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/syslog.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/tcgetpgrp.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/tcgetsid.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/tcsendbreak.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/tcsetattr.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/tcsetpgrp.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/tcsetsid.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/telldir.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/telldir.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/termios.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/time.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/time.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/times.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/times.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/timezone.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/timezone.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/tls.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ttyname.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ttyname.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ttyslot.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/tzset.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ualarm.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ualarm.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ucontext.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ulimit.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/ulimit.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/uname.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/uname.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/unvis.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/unvis.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/usleep.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/usleep.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/utime.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/utime.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/valloc.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/valloc.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/vis.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/vis.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/wait.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/wait3.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/waitpid.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/wordexp.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gen/wordexp.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gmon/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gmon/Symbol.map#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gmon/gmon.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gmon/mcount.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/gmon/moncontrol.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/SYS.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/Symbol.map#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/_fpmath.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/arith.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/gd_qnan.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/gen/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/gen/_ctx_start.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/gen/_set_tp.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/gen/_setjmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/gen/fabs.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/gen/flt_rounds.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/gen/infinity.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/gen/ldexp.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/gen/makecontext.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/gen/modf.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/gen/rfork_thread.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/gen/setjmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/gen/signalcontext.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/gen/sigsetjmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/stdlib/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/stdlib/div.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/stdlib/ldiv.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/bcmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/bcopy.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/bzero.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/ffs.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/index.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/memchr.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/memcmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/memcpy.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/memmove.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/memset.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/rindex.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/strcat.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/strchr.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/strcmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/strcpy.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/strlen.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/strncmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/strrchr.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/swab.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/wcschr.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/wcscmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/wcslen.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/string/wmemchr.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/Ovfork.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/brk.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/cerror.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/exect.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/getcontext.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/i386_clr_watch.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/i386_get_fsbase.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/i386_get_gsbase.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/i386_get_ioperm.2#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/i386_get_ioperm.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/i386_get_ldt.2#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/i386_get_ldt.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/i386_set_fsbase.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/i386_set_gsbase.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/i386_set_ioperm.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/i386_set_ldt.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/i386_set_watch.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/i386_set_watch.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/i386_vm86.2#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/i386_vm86.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/pipe.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/ptrace.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/reboot.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/sbrk.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/setlogin.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/sigreturn.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/i386/sys/syscall.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/SYS.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/Symbol.map#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/_fpmath.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/arith.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gd_qnan.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/__divdf3.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/__divdi3.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/__divsf3.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/__divsi3.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/__moddi3.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/__modsi3.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/__udivdi3.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/__udivsi3.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/__umoddi3.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/__umodsi3.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/_mcount.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/_set_tp.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/_setjmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/fabs.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/flt_rounds.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/fpgetmask.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/fpgetround.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/fpsetmask.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/fpsetround.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/infinity.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/makecontext.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/modf.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/setjmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/signalcontext.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/sigsetjmp.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/gen/unwind.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/string/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/string/bcopy.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/string/bzero.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/string/ffs.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/string/memcpy.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/string/memmove.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/sys/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/sys/Ovfork.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/sys/brk.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/sys/cerror.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/sys/exect.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/sys/fork.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/sys/getcontext.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/sys/pipe.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/sys/ptrace.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/sys/sbrk.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/sys/setlogin.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/sys/sigreturn.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/ia64/sys/swapcontext.S#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/compat.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/fpmath.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/isc/eventlib.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/isc/list.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/isc/platform.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/libc_private.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/namespace.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/nscache.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/nscachedcli.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/nss_tls.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/port_after.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/port_before.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/reentrant.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/resolv_mt.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/spinlock.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/include/un-namespace.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/Symbol.map#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/inet_addr.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/inet_cidr_ntop.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/inet_cidr_pton.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/inet_lnaof.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/inet_makeaddr.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/inet_net_ntop.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/inet_net_pton.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/inet_neta.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/inet_netof.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/inet_network.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/inet_ntoa.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/inet_ntop.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/inet_pton.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/inet/nsap_addr.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/isc/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/isc/ev_streams.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/isc/ev_timers.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/isc/eventlib_p.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/Makefile.inc#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/Symbol.map#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/ascii.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/big5.5#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/big5.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/btowc.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/btowc.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/collate.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/collate.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/collcmp.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/ctype.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/digittoint.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/euc.5#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/euc.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/fix_grouping.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/gb18030.5#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/gb18030.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/gb2312.5#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/gb2312.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/gbk.5#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/gbk.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/isalnum.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/isalpha.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/isascii.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/isblank.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/iscntrl.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/isctype.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/isdigit.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/isgraph.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/isideogram.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/islower.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/isphonogram.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/isprint.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/ispunct.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/isrune.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/isspace.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/isspecial.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/isupper.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/iswalnum.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/iswctype.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/isxdigit.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/ldpart.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/ldpart.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/lmessages.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/lmessages.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/lmonetary.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/lmonetary.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/lnumeric.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/lnumeric.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/localeconv.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/localeconv.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mblen.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mblen.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mblocal.h#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mbrlen.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mbrlen.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mbrtowc.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mbrtowc.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mbsinit.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mbsinit.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mbsnrtowcs.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mbsrtowcs.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mbsrtowcs.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mbstowcs.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mbstowcs.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mbtowc.3#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mbtowc.c#1 branch .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/locale/mskanji.5#1 branch >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Thu Aug 13 09:37:10 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id ADDBD1065674; Thu, 13 Aug 2009 09:37:10 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6D919106566C; Thu, 13 Aug 2009 09:37:10 +0000 (UTC) (envelope-from hselasky@c2i.net) Received: from swip.net (mailfe01.swip.net [212.247.154.1]) by mx1.freebsd.org (Postfix) with ESMTP id D0CBD8FC3F; Thu, 13 Aug 2009 09:37:09 +0000 (UTC) X-Cloudmark-Score: 0.000000 [] X-Cloudmark-Analysis: v=1.0 c=1 a=lhnSkr7iC74A:10 a=MnI1ikcADjEx7bvsp0jZvQ==:17 a=7KFJx-MvmLwmaQojHcsA:9 a=4UFAlyqvYdmDNp1_4H1UP79-LlkA:4 Received: from [188.126.201.140] (account mc467741@c2i.net HELO laptop.adsl.tele2.no) by mailfe01.swip.net (CommuniGate Pro SMTP 5.2.13) with ESMTPA id 239288280; Thu, 13 Aug 2009 11:37:07 +0200 From: Hans Petter Selasky To: Sylvestre Gallon Date: Thu, 13 Aug 2009 11:37:12 +0200 User-Agent: KMail/1.11.4 (FreeBSD/8.0-BETA2; KDE/4.2.4; i386; ; ) References: <200908121834.n7CIY6J1033878@repoman.freebsd.org> In-Reply-To: <200908121834.n7CIY6J1033878@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200908131137.13574.hselasky@c2i.net> Cc: Perforce Change Reviews Subject: Re: PERFORCE change 167253 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 09:37:11 -0000 On Wednesday 12 August 2009 20:34:06 Sylvestre Gallon wrote: > + bzero(&fops, sizeof(struct usb_roothub_fops)); > + fops.handle_get_port_status = &at91dci_get_port_status; > + fops.handle_clocks_on = (usb_clocks_fops_t)&at91dci_clocks_on; > + fops.handle_clocks_off = (usb_clocks_fops_t)&at91dci_clocks_off; > + fops.handle_pull_up = (usb_clocks_fops_t)&at91dci_pull_up; > + fops.handle_pull_down = (usb_clocks_fops_t)&at91dci_pull_down; > + fops.handle_wakeup_peer = (usb_clocks_fops_t)&at91dci_wakeup_peer; Can you make the fops static const? --HPS From owner-p4-projects@FreeBSD.ORG Thu Aug 13 09:48:49 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 539491065677; Thu, 13 Aug 2009 09:48:49 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 13B6F106566C for ; Thu, 13 Aug 2009 09:48:49 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id DD28B8FC48 for ; Thu, 13 Aug 2009 09:48:48 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7D9mmrn057207 for ; Thu, 13 Aug 2009 09:48:48 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7D9mmac057205 for perforce@freebsd.org; Thu, 13 Aug 2009 09:48:48 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Thu, 13 Aug 2009 09:48:48 GMT Message-Id: <200908130948.n7D9mmac057205@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Cc: Subject: PERFORCE change 167279 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 09:48:50 -0000 http://perforce.freebsd.org/chv.cgi?CH=167279 Change 167279 by rwatson@rwatson_freebsd_capabilities on 2009/08/13 09:48:14 Add missing library dependency from libcapability to libsbuf. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/lib/libcapability/Makefile#16 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/lib/libcapability/Makefile#16 (text+ko) ==== @@ -1,6 +1,8 @@ # $FreeBSD$ LIB= capability +DPADD= ${LIBSBUF} +LDADD= -lsbuf SRCS= \ libcapability.c \ From owner-p4-projects@FreeBSD.ORG Thu Aug 13 09:48:50 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id AD21B1065729; Thu, 13 Aug 2009 09:48:49 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 254A31065672 for ; Thu, 13 Aug 2009 09:48:49 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 13D938FC4A for ; Thu, 13 Aug 2009 09:48:49 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7D9mmNe057212 for ; Thu, 13 Aug 2009 09:48:48 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7D9mmOF057210 for perforce@freebsd.org; Thu, 13 Aug 2009 09:48:48 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Thu, 13 Aug 2009 09:48:48 GMT Message-Id: <200908130948.n7D9mmOF057210@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Cc: Subject: PERFORCE change 167280 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 09:48:51 -0000 http://perforce.freebsd.org/chv.cgi?CH=167280 Change 167280 by rwatson@rwatson_freebsd_capabilities on 2009/08/13 09:48:43 libsbuf dependency in gzip no longer required as libcapability now properly depends on it. Affected files ... .. //depot/projects/trustedbsd/capabilities/src/usr.bin/gzip/Makefile#6 edit Differences ... ==== //depot/projects/trustedbsd/capabilities/src/usr.bin/gzip/Makefile#6 (text+ko) ==== @@ -7,8 +7,8 @@ MAN= gzip.1 gzexe.1 zdiff.1 zforce.1 zmore.1 znew.1 SRCS= gzip.c gzsandbox.c -DPADD= ${LIBZ} ${LIBCAPABILITY} ${LIBSBUF} -LDADD= -lz -lcapability -lsbuf +DPADD= ${LIBZ} ${LIBCAPABILITY} +LDADD= -lz -lcapability WARNS?= 6 CFLAGS+= -rdynamic # For sandbox cap_main From owner-p4-projects@FreeBSD.ORG Thu Aug 13 12:11:25 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 171971065673; Thu, 13 Aug 2009 12:11:25 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CA3F5106564A for ; Thu, 13 Aug 2009 12:11:24 +0000 (UTC) (envelope-from marinosi@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B92138FC3D for ; Thu, 13 Aug 2009 12:11:24 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7DCBOJD070719 for ; Thu, 13 Aug 2009 12:11:24 GMT (envelope-from marinosi@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7DCBOaA070717 for perforce@freebsd.org; Thu, 13 Aug 2009 12:11:24 GMT (envelope-from marinosi@FreeBSD.org) Date: Thu, 13 Aug 2009 12:11:24 GMT Message-Id: <200908131211.n7DCBOaA070717@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marinosi@FreeBSD.org using -f From: Ilias Marinos To: Perforce Change Reviews Cc: Subject: PERFORCE change 167283 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 12:11:25 -0000 http://perforce.freebsd.org/chv.cgi?CH=167283 Change 167283 by marinosi@marinosi_redrum on 2009/08/13 12:10:38 Implemented a new command A_LISTSLICES for the auditing syscalls. Affected files ... .. //depot/projects/soc2009/marinosi_appaudit/src/sys/bsm/audit.h#6 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#21 edit Differences ... ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/bsm/audit.h#6 (text) ==== @@ -130,6 +130,7 @@ #define A_UPDATESLICE 40 #define A_GETSLICE 41 #define A_REMOVESLICE 42 +#define A_LISTSLICES 43 /* * Audit policy controls. ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#21 (text) ==== @@ -988,6 +988,7 @@ { struct audit_slice *as = NULL; + struct audit_slice *cur = NULL; struct ucred *cred, *newcred, *oldcred; int error; union auditon_udata udata; @@ -1000,9 +1001,9 @@ /* * The only way for 'as' to be NULL is when we want to create a new - * slice. + * slice or when we want to list all available slices. */ - if ((as == NULL) && (cmd != A_CREATESLICE)) + if ((as == NULL) && (cmd != A_CREATESLICE) && (cmd != A_LISTSLICES)) return (EINVAL); memset((void *)&udata, 0, sizeof(udata)); @@ -1402,6 +1403,19 @@ audit_slice_destroy(as); break; + case A_LISTSLICES: + /* + * Use lock to prevent slice creation/removal while iterating through + * the queue, listing the slices. + */ + uprintf("Slices List:\n"); + AUDIT_SLICES_LOCK(); + TAILQ_FOREACH(cur, &audit_slice_q, as_q) { + uprintf("%s\n", cur->as_name); + } + AUDIT_SLICES_UNLOCK(); + break; + default: return (EINVAL); } From owner-p4-projects@FreeBSD.ORG Thu Aug 13 12:45:03 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0B8631065702; Thu, 13 Aug 2009 12:45:03 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B49A310656FD for ; Thu, 13 Aug 2009 12:45:02 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id D1E298FC45 for ; Thu, 13 Aug 2009 12:45:01 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7DCj1T1073199 for ; Thu, 13 Aug 2009 12:45:01 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7DCj17O073197 for perforce@freebsd.org; Thu, 13 Aug 2009 12:45:01 GMT (envelope-from hselasky@FreeBSD.org) Date: Thu, 13 Aug 2009 12:45:01 GMT Message-Id: <200908131245.n7DCj17O073197@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 167286 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 12:45:04 -0000 http://perforce.freebsd.org/chv.cgi?CH=167286 Change 167286 by hselasky@hselasky_laptop001 on 2009/08/13 12:44:04 USB CORE: - fix memory use after free race for USB character devices. - reported by Lucius Windschuh Affected files ... .. //depot/projects/usb/src/sys/dev/usb/usb_device.c#49 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/usb_device.c#49 (text+ko) ==== @@ -1901,15 +1901,18 @@ usb_cdev_free(struct usb_device *udev) { struct usb_fs_privdata* pd; + struct cdev* pcdev; DPRINTFN(2, "Freeing device nodes\n"); while ((pd = LIST_FIRST(&udev->pd_list)) != NULL) { KASSERT(pd->cdev->si_drv1 == pd, ("privdata corrupt")); - destroy_dev_sched_cb(pd->cdev, usb_cdev_cleanup, pd); + pcdev = pd->cdev; pd->cdev = NULL; LIST_REMOVE(pd, pd_next); + if (pcdev != NULL) + destroy_dev_sched_cb(pcdev, usb_cdev_cleanup, pd); } } From owner-p4-projects@FreeBSD.ORG Thu Aug 13 15:14:46 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3A474106570F; Thu, 13 Aug 2009 15:14:46 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E682B106570B for ; Thu, 13 Aug 2009 15:14:45 +0000 (UTC) (envelope-from tsel@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id D3DB38FC16 for ; Thu, 13 Aug 2009 15:14:45 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7DFEj36097872 for ; Thu, 13 Aug 2009 15:14:45 GMT (envelope-from tsel@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7DFEjYn097868 for perforce@freebsd.org; Thu, 13 Aug 2009 15:14:45 GMT (envelope-from tsel@FreeBSD.org) Date: Thu, 13 Aug 2009 15:14:45 GMT Message-Id: <200908131514.n7DFEjYn097868@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to tsel@FreeBSD.org using -f From: Tatsiana Elavaya To: Perforce Change Reviews Cc: Subject: PERFORCE change 167291 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 15:14:47 -0000 http://perforce.freebsd.org/chv.cgi?CH=167291 Change 167291 by tsel@tsel_mz on 2009/08/13 15:13:51 Add support for anonymous conditions Add command line options. -g -- add line numbers to comments, -n rule number to start with, -i rule number increment Affected files ... .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/Makefile#4 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/ipfw.hll.c#4 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/ipfw.hll.h#4 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/parse.y#4 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/subr.c#3 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/Makefile#3 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test4#3 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test4.output#2 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test5#2 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test7#2 edit .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test8#1 add .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test8.output#1 add .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test9#1 add .. //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test9.output#1 add Differences ... ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/Makefile#4 (text+ko) ==== @@ -11,7 +11,7 @@ DPADD= ${LIBL} LDADD= -ll -DEBUG_FLAGS+= -g -O0 +DEBUG_FLAGS+= -g -O0 -DIPFW_HLL_DEBUG .PHONY: test test: ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/ipfw.hll.c#4 (text+ko) ==== @@ -27,14 +27,27 @@ #include #include #include +#include #include +#include #include "ipfw.hll.h" +struct opts { + int rulenum; + int rulenum_inc; + int debug; +}; + struct ruleset *toplevel_ruleset; +struct opts opts = { + .rulenum = 0, + .rulenum_inc = 100, +}; extern int yyparse(); -extern const char * yyfile; +extern const char *yyfile; +static const char *yyfile_stdin = ""; static void expand_rule(struct rule *rule, struct ruleset *ruleset); static void expand_cond(struct cond *cond, struct condset *condset); @@ -55,6 +68,7 @@ struct rule *ri; if (rule->action_ruleset) { + DPRINTF("action ruleset @%d\n", rule->lineno); expand_ruleset(rule->action_ruleset); while (!TAILQ_EMPTY(&rule->action_ruleset->rules)) { ri = TAILQ_FIRST(&rule->action_ruleset->rules); @@ -139,6 +153,10 @@ char *cmdval; TAILQ_FOREACH(r, &toplevel_ruleset->rules, rule_entries) { + if (opts.rulenum != 0) { + printf("%d ", opts.rulenum); + opts.rulenum += opts.rulenum_inc; + } printf("add "); TAILQ_FOREACH(c, &r->actions, cmd_entries) { if (c->cmd_condset) { @@ -157,14 +175,20 @@ free(cmdval); } } - printf("\n", r->lineno); + if (opts.debug) { + if (yyfile == yyfile_stdin) + printf("// line %d", TAILQ_LAST(&r->actions, cmd_head)->lineno); + else + printf("// %s:%d", yyfile, TAILQ_LAST(&r->actions, cmd_head)->lineno); + } + printf("\n"); } } static void usage(void) { - fprintf(stderr, "usage: ipfw.hll file\n"); + fprintf(stderr, "usage: ipfw.hll [-gh] [-n rulenum] [-i increment] file\n"); exit(EX_USAGE); } @@ -173,16 +197,39 @@ main(int argc, char **argv) { struct rule *r, *rtmp; - int error; + int ch, error; - if (argc > 2) { + while ((ch = getopt(argc, argv, "i:ghn:")) != -1) { + error = 1; + switch (ch) { + case 'n': + opts.rulenum = error = atoi(optarg); + break; + case 'i': + opts.rulenum_inc = error = atoi(optarg); + break; + case 'g': + opts.debug = 1; + break; + case 'h': + default: + usage(); + } + if (error <= 0) + errx(EX_USAGE, "invalid arguments: -%c %s", ch, optarg); + } + argc -= optind; + argv += optind; + + if (argc > 1) { usage(); - } else if (argc == 2) { - yyfile = argv[1]; + } else if (argc == 1) { + yyfile = argv[0]; if (freopen(yyfile, "r", stdin) == NULL) err(EX_OSERR, "%s", yyfile); + yyfile = strdup(basename(yyfile)); } else { - yyfile = ""; + yyfile = yyfile_stdin; } error = yyparse(); ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/ipfw.hll.h#4 (text+ko) ==== @@ -26,7 +26,11 @@ #include #include +#ifdef IPFW_HLL_DEBUG #define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ## __VA_ARGS__) +#else +#define DPRINTF(fmt, ...) do { } while (0) +#endif TAILQ_HEAD(rule_head, rule); TAILQ_HEAD(cond_head, cond); ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/parse.y#4 (text+ko) ==== @@ -188,21 +188,20 @@ { $$ = NULL; } | rule_action { $$ = $1; } - | cond rule_tail + | cond THEN rule_tail { - $$ = $2; + $$ = $3; $$->cond = $1; } ; rule_tail - : THEN rule_action - { $$ = $2; } + : rule_action + { $$ = $1; } | rule_body { $$ = rule_alloc(); $$->action_ruleset = $1; - DPRINTF("rule action_ruleset=%p\n", $$->action_ruleset); } ; @@ -277,6 +276,12 @@ if ($$->cmd_condset == NULL) errx(EX_DATAERR, "%s:%d: condition set not found: %s", yyfile, $$->lineno, $2.s); } + | cond_body + { + $$ = cmd_alloc(); + $$->lineno = $1->lineno; + $$->cmd_condset = $1; + } | str { $$ = cmd_alloc(); ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/subr.c#3 (text+ko) ==== @@ -155,17 +155,22 @@ void cmds_copy(struct cmd_head *dst, int insert_tail, struct cmd *begin, struct cmd *end) { - struct cmd *i, *n; + struct cmd *i, *n, *prev; - for (i = begin; i != end && i != NULL; i = TAILQ_NEXT(i, cmd_entries)) { + for (i = begin, prev = NULL; i != end && i != NULL; i = TAILQ_NEXT(i, cmd_entries)) { n = safe_calloc(sizeof(struct cmd)); n->cmd = i->cmd; n->cmd_condset = i->cmd_condset; n->lineno = i->lineno; - if (insert_tail) + if (insert_tail) { TAILQ_INSERT_TAIL(dst, n, cmd_entries); - else - TAILQ_INSERT_HEAD(dst, n, cmd_entries); + } else { + if (prev == NULL) + TAILQ_INSERT_HEAD(dst, n, cmd_entries); + else + TAILQ_INSERT_AFTER(dst, prev, n, cmd_entries); + prev = n; + } } } ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/Makefile#3 (text+ko) ==== @@ -1,4 +1,4 @@ -TESTS+= test0 test1 test2 test3 test4 test5 test6 test7 +TESTS+= test0 test1 test2 test3 test4 test5 test6 test7 test8 test9 TESTS+= t_dup_name1 t_dup_name2 all: test ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test4#3 (text+ko) ==== @@ -10,6 +10,6 @@ cond c1 c2 @q => allow cond c3 @q c4 => allow -cond c1 c2 @w => allow +cond c1 c2 c3 c4 @w => allow cond c3 @w @q c4 => allow cond @w c5 c6 @q => allow ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test4.output#2 (text+ko) ==== @@ -2,8 +2,8 @@ add allow c1 c2 q21 q22 add allow c3 q11 q12 c4 add allow c3 q21 q22 c4 -add allow c1 c2 w11 w12 -add allow c1 c2 w21 w22 +add allow c1 c2 c3 c4 w11 w12 +add allow c1 c2 c3 c4 w21 w22 add allow c3 w11 w12 q11 q12 c4 add allow c3 w21 w22 q11 q12 c4 add allow c3 w11 w12 q21 q22 c4 ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test5#2 (text+ko) ==== @@ -10,7 +10,7 @@ } ruleset r0 { - if c1 { + if c1 => { if c1-1 c1-2 then allow deny } ==== //depot/projects/soc2009/tsel_ipfw/libexec/ipfw.hll/test/test7#2 (text+ko) ==== @@ -22,12 +22,11 @@ # ruleset = set of ipfw rules # rule is just like generic ipfw rule but can contain predicates ruleset ruleset_1 { - if @predicate_1 { + if @predicate_1 => { if proto tcp then allow deny } if proto udp then deny -# ^^^^ support anonymous rules/predicates } # unnamed = default ruleset From owner-p4-projects@FreeBSD.ORG Thu Aug 13 17:17:00 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 778DD1065673; Thu, 13 Aug 2009 17:17:00 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 35B0F106564A for ; Thu, 13 Aug 2009 17:17:00 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 233198FC4A for ; Thu, 13 Aug 2009 17:17:00 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7DHH0Qi019977 for ; Thu, 13 Aug 2009 17:17:00 GMT (envelope-from anchie@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7DHGxkU019975 for perforce@freebsd.org; Thu, 13 Aug 2009 17:16:59 GMT (envelope-from anchie@FreeBSD.org) Date: Thu, 13 Aug 2009 17:16:59 GMT Message-Id: <200908131716.n7DHGxkU019975@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anchie@FreeBSD.org using -f From: Ana Kukec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167298 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 17:17:01 -0000 http://perforce.freebsd.org/chv.cgi?CH=167298 Change 167298 by anchie@anchie_desnimis on 2009/08/13 17:16:30 Integrate. Affected files ... .. //depot/projects/soc2009/anchie_send/src/sys/arm/arm/pmap.c#5 integrate .. //depot/projects/soc2009/anchie_send/src/sys/cddl/compat/opensolaris/kern/opensolaris.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/drm_pciids.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/r600_cp.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/drm/radeon_drv.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/isp_freebsd.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_jail.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_sysctl.c#5 integrate .. //depot/projects/soc2009/anchie_send/src/sys/kern/subr_pcpu.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/bpf.c#5 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/bpf_buffer.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/bpf_zerocopy.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/bpfdesc.h#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/rtsock.c#14 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/vnet.c#2 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net/vnet.h#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netatalk/at_control.c#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/netinet6/in6.c#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/security/audit/audit.h#3 integrate .. //depot/projects/soc2009/anchie_send/src/sys/sys/jail.h#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/sys/pcpu.h#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/sys/sysctl.h#4 integrate .. //depot/projects/soc2009/anchie_send/src/sys/xdr/xdr_mbuf.c#2 integrate Differences ... ==== //depot/projects/soc2009/anchie_send/src/sys/arm/arm/pmap.c#5 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.113 2009/07/24 13:50:29 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.114 2009/08/13 15:56:09 raj Exp $"); #include #include #include @@ -1212,7 +1212,7 @@ CTR4(KTR_PMAP, "pmap_l2cache_wbinv_range: pmap %p is_kernel %d " "va 0x%08x len 0x%x ", pm, pm == pmap_kernel(), va, rest); if (pmap_get_pde_pte(pm, va, &pde, &ptep) && l2pte_valid(*ptep)) - cpu_l2cache_wb_range(va, rest); + cpu_l2cache_wbinv_range(va, rest); len -= rest; va += rest; ==== //depot/projects/soc2009/anchie_send/src/sys/cddl/compat/opensolaris/kern/opensolaris.c#3 (text+ko) ==== @@ -22,7 +22,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/cddl/compat/opensolaris/kern/opensolaris.c,v 1.4 2009/06/13 15:39:12 jamie Exp $ + * $FreeBSD: src/sys/cddl/compat/opensolaris/kern/opensolaris.c,v 1.5 2009/08/13 12:28:30 trasz Exp $ * */ @@ -49,10 +49,6 @@ { int i; - printf("This module (opensolaris) contains code covered by the\n"); - printf("Common Development and Distribution License (CDDL)\n"); - printf("see http://opensolaris.org/os/licensing/opensolaris_license/\n"); - /* * "Enable" all CPUs even though they may not exist just so * that the asserts work. On FreeBSD, if a CPU exists, it is ==== //depot/projects/soc2009/anchie_send/src/sys/dev/drm/drm_pciids.h#3 (text+ko) ==== @@ -1,5 +1,5 @@ /* - * $FreeBSD: src/sys/dev/drm/drm_pciids.h,v 1.16 2009/07/09 16:39:28 rnoland Exp $ + * $FreeBSD: src/sys/dev/drm/drm_pciids.h,v 1.18 2009/08/12 12:57:02 rnoland Exp $ */ /* This file is auto-generated from the drm_pciids.txt in the DRM CVS @@ -259,9 +259,12 @@ {0x1002, 0x940F, CHIP_R600|RADEON_NEW_MEMMAP, "ATI FireGL V7600"}, \ {0x1002, 0x94A0, CHIP_RV740|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI Mobility Radeon HD 4830"}, \ {0x1002, 0x94A1, CHIP_RV740|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI Mobility Radeon HD 4850"}, \ + {0x1002, 0x94A3, CHIP_RV740|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI FirePro M7740"}, \ {0x1002, 0x94B1, CHIP_RV740|RADEON_NEW_MEMMAP, "ATI RV740"}, \ {0x1002, 0x94B3, CHIP_RV740|RADEON_NEW_MEMMAP, "ATI Radeon HD 4770"}, \ + {0x1002, 0x94B4, CHIP_RV740|RADEON_NEW_MEMMAP, "ATI Radeon HD 4700 Series"}, \ {0x1002, 0x94B5, CHIP_RV740|RADEON_NEW_MEMMAP, "ATI Radeon HD 4770"}, \ + {0x1002, 0x94B9, CHIP_RV740|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI FirePro M5750"}, \ {0x1002, 0x94C0, CHIP_RV610|RADEON_NEW_MEMMAP, "RV610"}, \ {0x1002, 0x94C1, CHIP_RV610|RADEON_NEW_MEMMAP, "Radeon HD 2400 XT"}, \ {0x1002, 0x94C3, CHIP_RV610|RADEON_NEW_MEMMAP, "Radeon HD 2400 Pro"}, \ @@ -327,6 +330,11 @@ {0x1002, 0x9614, CHIP_RS780|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI Radeon 3300 Graphics"}, \ {0x1002, 0x9615, CHIP_RS780|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI Radeon 3200 Graphics"}, \ {0x1002, 0x9616, CHIP_RS780|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI Radeon 3000 Graphics"}, \ + {0x1002, 0x9710, CHIP_RS880|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI Radeon HD 4200"}, \ + {0x1002, 0x9711, CHIP_RS880|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI Radeon 4100"}, \ + {0x1002, 0x9712, CHIP_RS880|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI Mobility Radeon HD 4200"}, \ + {0x1002, 0x9713, CHIP_RS880|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI Mobility Radeon 4100"}, \ + {0x1002, 0x9714, CHIP_RS880|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI RS880"}, \ {0x1002, 0x9440, CHIP_RV770|RADEON_NEW_MEMMAP, "ATI Radeon 4800 Series"}, \ {0x1002, 0x9441, CHIP_RV770|RADEON_NEW_MEMMAP, "ATI Radeon 4870 X2"}, \ {0x1002, 0x9442, CHIP_RV770|RADEON_NEW_MEMMAP, "ATI Radeon 4800 Series"}, \ @@ -350,6 +358,7 @@ {0x1002, 0x9487, CHIP_RV730|RADEON_NEW_MEMMAP, "ATI Radeon RV730 (AGP)"}, \ {0x1002, 0x948F, CHIP_RV730|RADEON_NEW_MEMMAP, "ATI Radeon RV730 (AGP)"}, \ {0x1002, 0x9490, CHIP_RV730|RADEON_NEW_MEMMAP, "ATI Radeon HD 4670"}, \ + {0x1002, 0x9495, CHIP_RV730|RADEON_NEW_MEMMAP, "ATI Radeon HD 4600 Series"}, \ {0x1002, 0x9498, CHIP_RV730|RADEON_NEW_MEMMAP, "ATI Radeon HD 4650"}, \ {0x1002, 0x9480, CHIP_RV730|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI Mobility Radeon HD 4650"}, \ {0x1002, 0x9488, CHIP_RV730|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI Mobility Radeon HD 4670"}, \ @@ -366,6 +375,7 @@ {0x1002, 0x9552, CHIP_RV710|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI Mobility Radeon 4300 Series"}, \ {0x1002, 0x9553, CHIP_RV710|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI Mobility Radeon 4500 Series"}, \ {0x1002, 0x9555, CHIP_RV710|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI Mobility Radeon 4500 Series"}, \ + {0x1002, 0x9557, CHIP_RV710|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI FirePro RG220"}, \ {0, 0, 0, NULL} #define r128_PCI_IDS \ ==== //depot/projects/soc2009/anchie_send/src/sys/dev/drm/r600_cp.c#3 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/drm/r600_cp.c,v 1.8 2009/07/09 16:39:28 rnoland Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/drm/r600_cp.c,v 1.9 2009/08/12 12:57:02 rnoland Exp $"); #include "dev/drm/drmP.h" #include "dev/drm/drm.h" @@ -318,7 +318,8 @@ pfp = RV670_pfp_microcode; break; case CHIP_RS780: - DRM_INFO("Loading RS780 Microcode\n"); + case CHIP_RS880: + DRM_INFO("Loading RS780/RS880 Microcode\n"); cp = RS780_cp_microcode; pfp = RS780_pfp_microcode; break; @@ -722,6 +723,7 @@ break; case CHIP_RV610: case CHIP_RS780: + case CHIP_RS880: case CHIP_RV620: dev_priv->r600_max_pipes = 1; dev_priv->r600_max_tile_pipes = 1; @@ -856,7 +858,8 @@ ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV630) || ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV610) || ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV620) || - ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780)) + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780) || + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS880)) RADEON_WRITE(R600_DB_DEBUG, R600_PREZ_MUST_WAIT_FOR_POSTZ_DONE); else RADEON_WRITE(R600_DB_DEBUG, 0); @@ -874,7 +877,8 @@ sq_ms_fifo_sizes = RADEON_READ(R600_SQ_MS_FIFO_SIZES); if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV610) || ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV620) || - ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780)) { + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780) || + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS880)) { sq_ms_fifo_sizes = (R600_CACHE_FIFO_SIZE(0xa) | R600_FETCH_FIFO_HIWATER(0xa) | R600_DONE_FIFO_HIWATER(0xe0) | @@ -917,7 +921,8 @@ R600_NUM_ES_STACK_ENTRIES(0)); } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV610) || ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV620) || - ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780)) { + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780) || + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS880)) { /* no vertex cache */ sq_config &= ~R600_VC_ENABLE; @@ -974,7 +979,8 @@ if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV610) || ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV620) || - ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780)) + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780) || + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS880)) RADEON_WRITE(R600_VGT_CACHE_INVALIDATION, R600_CACHE_INVALIDATION(R600_TC_ONLY)); else RADEON_WRITE(R600_VGT_CACHE_INVALIDATION, R600_CACHE_INVALIDATION(R600_VC_AND_TC)); @@ -1017,6 +1023,7 @@ break; case CHIP_RV610: case CHIP_RS780: + case CHIP_RS880: case CHIP_RV620: gs_prim_buffer_depth = 32; break; @@ -1062,6 +1069,7 @@ switch (dev_priv->flags & RADEON_FAMILY_MASK) { case CHIP_RV610: case CHIP_RS780: + case CHIP_RS880: case CHIP_RV620: tc_cntl = R600_TC_L2_SIZE(8); break; ==== //depot/projects/soc2009/anchie_send/src/sys/dev/drm/radeon_drv.h#3 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_drv.h,v 1.23 2009/07/09 16:39:28 rnoland Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_drv.h,v 1.24 2009/08/12 12:57:02 rnoland Exp $"); #ifndef __RADEON_DRV_H__ #define __RADEON_DRV_H__ @@ -145,6 +145,7 @@ CHIP_RV635, CHIP_RV670, CHIP_RS780, + CHIP_RS880, CHIP_RV770, CHIP_RV740, CHIP_RV730, ==== //depot/projects/soc2009/anchie_send/src/sys/dev/isp/isp_freebsd.c#3 (text+ko) ==== @@ -28,7 +28,7 @@ * Platform (FreeBSD) dependent common attachment code for Qlogic adapters. */ #include -__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.150 2009/08/01 01:04:26 mjacob Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.151 2009/08/13 01:17:26 mjacob Exp $"); #include #include #include @@ -5280,6 +5280,10 @@ return (seed); } seed = iswwnn ? FCPARAM(isp, chan)->isp_wwnn_nvram : FCPARAM(isp, chan)->isp_wwpn_nvram; + if (seed) { + return (seed); + } + return (0x400000007F000009ull); } else { seed = iswwnn ? fc->def_wwnn : fc->def_wwpn; } ==== //depot/projects/soc2009/anchie_send/src/sys/kern/kern_jail.c#4 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_jail.c,v 1.118 2009/08/01 19:26:27 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_jail.c,v 1.120 2009/08/13 10:26:34 bz Exp $"); #include "opt_compat.h" #include "opt_ddb.h" @@ -88,7 +88,11 @@ .pr_childmax = JAIL_MAX, .pr_hostuuid = DEFAULT_HOSTUUID, .pr_children = LIST_HEAD_INITIALIZER(&prison0.pr_children), +#ifdef VIMAGE + .pr_flags = PR_HOST|PR_VNET, +#else .pr_flags = PR_HOST, +#endif .pr_allow = PR_ALLOW_ALL, }; MTX_SYSINIT(prison0, &prison0.pr_mtx, "jail mutex", MTX_DEF); @@ -472,10 +476,11 @@ #endif struct vfsopt *opt; struct vfsoptlist *opts; - struct prison *pr, *deadpr, *mypr, *ppr, *tpr, *tppr; + struct prison *pr, *deadpr, *mypr, *ppr, *tpr; struct vnode *root; char *domain, *errmsg, *host, *name, *p, *path, *uuid; #if defined(INET) || defined(INET6) + struct prison *tppr; void *op; #endif unsigned long hid; @@ -3307,6 +3312,25 @@ mtx_unlock(&cred->cr_prison->pr_mtx); } +#ifdef VIMAGE +/* + * Determine whether the prison represented by cred owns + * its vnet rather than having it inherited. + * + * Returns 1 in case the prison owns the vnet, 0 otherwise. + */ +int +prison_owns_vnet(struct ucred *cred) +{ + + /* + * vnets cannot be added/removed after jail creation, + * so no need to lock here. + */ + return (cred->cr_prison->pr_flags & PR_VNET ? 1 : 0); +} +#endif + /* * Determine whether the subject represented by cred can "see" * status of a mount point. ==== //depot/projects/soc2009/anchie_send/src/sys/kern/kern_sysctl.c#5 (text+ko) ==== @@ -36,7 +36,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_sysctl.c,v 1.201 2009/08/01 19:26:27 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_sysctl.c,v 1.202 2009/08/13 10:26:34 bz Exp $"); #include "opt_compat.h" #include "opt_ktrace.h" @@ -1381,10 +1381,18 @@ /* Is this sysctl writable by only privileged users? */ if (req->newptr && !(oid->oid_kind & CTLFLAG_ANYBODY)) { + int priv; + if (oid->oid_kind & CTLFLAG_PRISON) - error = priv_check(req->td, PRIV_SYSCTL_WRITEJAIL); + priv = PRIV_SYSCTL_WRITEJAIL; +#ifdef VIMAGE + else if ((oid->oid_kind & CTLFLAG_VNET) && + prison_owns_vnet(req->td->td_ucred)) + priv = PRIV_SYSCTL_WRITEJAIL; +#endif else - error = priv_check(req->td, PRIV_SYSCTL_WRITE); + priv = PRIV_SYSCTL_WRITE; + error = priv_check(req->td, priv); if (error) return (error); } ==== //depot/projects/soc2009/anchie_send/src/sys/kern/subr_pcpu.c#3 (text+ko) ==== @@ -46,7 +46,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/subr_pcpu.c,v 1.15 2009/06/25 01:31:59 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/subr_pcpu.c,v 1.16 2009/08/12 12:06:16 bz Exp $"); #include "opt_ddb.h" @@ -313,6 +313,18 @@ } #ifdef DDB +DB_SHOW_COMMAND(dpcpu_off, db_show_dpcpu_off) +{ + int id; + + for (id = 0; id <= mp_maxid; id++) { + if (CPU_ABSENT(id)) + continue; + db_printf("dpcpu_off[%2d] = 0x%jx (+ DPCPU_START = %p)\n", + id, (uintmax_t)dpcpu_off[id], + (void *)(uintptr_t)(dpcpu_off[id] + DPCPU_START)); + } +} static void show_pcpu(struct pcpu *pc) ==== //depot/projects/soc2009/anchie_send/src/sys/net/bpf.c#5 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/net/bpf.c,v 1.215 2009/08/01 19:26:27 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/net/bpf.c,v 1.216 2009/08/12 17:28:53 jkim Exp $"); #include "opt_bpf.h" #include "opt_netgraph.h" @@ -1585,6 +1585,9 @@ bpf_tap(struct bpf_if *bp, u_char *pkt, u_int pktlen) { struct bpf_d *d; +#ifdef BPF_JITTER + bpf_jit_filter *bf; +#endif u_int slen; int gottime; struct timeval tv; @@ -1601,8 +1604,9 @@ * the interface pointers on the mbuf to figure it out. */ #ifdef BPF_JITTER - if (bpf_jitter_enable != 0 && d->bd_bfilter != NULL) - slen = (*(d->bd_bfilter->func))(pkt, pktlen, pktlen); + bf = bpf_jitter_enable != 0 ? d->bd_bfilter : NULL; + if (bf != NULL) + slen = (*(bf->func))(pkt, pktlen, pktlen); else #endif slen = bpf_filter(d->bd_rfilter, pkt, pktlen, pktlen); @@ -1634,6 +1638,9 @@ bpf_mtap(struct bpf_if *bp, struct mbuf *m) { struct bpf_d *d; +#ifdef BPF_JITTER + bpf_jit_filter *bf; +#endif u_int pktlen, slen; int gottime; struct timeval tv; @@ -1655,11 +1662,10 @@ BPFD_LOCK(d); ++d->bd_rcount; #ifdef BPF_JITTER + bf = bpf_jitter_enable != 0 ? d->bd_bfilter : NULL; /* XXX We cannot handle multiple mbufs. */ - if (bpf_jitter_enable != 0 && d->bd_bfilter != NULL && - m->m_next == NULL) - slen = (*(d->bd_bfilter->func))(mtod(m, u_char *), - pktlen, pktlen); + if (bf != NULL && m->m_next == NULL) + slen = (*(bf->func))(mtod(m, u_char *), pktlen, pktlen); else #endif slen = bpf_filter(d->bd_rfilter, (u_char *)m, pktlen, 0); ==== //depot/projects/soc2009/anchie_send/src/sys/net/bpf_buffer.c#2 (text+ko) ==== @@ -62,7 +62,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/net/bpf_buffer.c,v 1.3 2008/07/25 23:58:09 trhodes Exp $"); +__FBSDID("$FreeBSD: src/sys/net/bpf_buffer.c,v 1.4 2009/08/12 17:28:53 jkim Exp $"); #include "opt_bpf.h" @@ -77,7 +77,6 @@ #include #include #include -#include #include /* ==== //depot/projects/soc2009/anchie_send/src/sys/net/bpf_zerocopy.c#2 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/net/bpf_zerocopy.c,v 1.6 2009/03/07 10:21:37 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/net/bpf_zerocopy.c,v 1.7 2009/08/12 17:28:53 jkim Exp $"); #include "opt_bpf.h" @@ -46,7 +46,6 @@ #include #include -#include #include #include ==== //depot/projects/soc2009/anchie_send/src/sys/net/bpfdesc.h#2 (text+ko) ==== @@ -33,7 +33,7 @@ * * @(#)bpfdesc.h 8.1 (Berkeley) 6/10/93 * - * $FreeBSD: src/sys/net/bpfdesc.h,v 1.40 2008/08/01 22:08:14 antoine Exp $ + * $FreeBSD: src/sys/net/bpfdesc.h,v 1.41 2009/08/12 17:28:53 jkim Exp $ */ #ifndef _NET_BPFDESC_H_ @@ -72,9 +72,7 @@ u_long bd_rtout; /* Read timeout in 'ticks' */ struct bpf_insn *bd_rfilter; /* read filter code */ struct bpf_insn *bd_wfilter; /* write filter code */ -#ifdef BPF_JITTER - bpf_jit_filter *bd_bfilter; /* binary filter code */ -#endif + void *bd_bfilter; /* binary filter code */ u_int64_t bd_rcount; /* number of packets received */ u_int64_t bd_dcount; /* number of packets dropped */ ==== //depot/projects/soc2009/anchie_send/src/sys/net/rtsock.c#14 (text+ko) ==== @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * @(#)rtsock.c 8.7 (Berkeley) 10/12/95 - * $FreeBSD: src/sys/net/rtsock.c,v 1.181 2009/08/01 19:26:27 rwatson Exp $ + * $FreeBSD: src/sys/net/rtsock.c,v 1.182 2009/08/13 09:29:52 bz Exp $ */ #include "opt_sctp.h" #include "opt_mpath.h" @@ -1280,11 +1280,12 @@ bcopy(data, mtod(n, void *), data_len); printf("rtsock.c: rt_msg3(), nakon bcopy!\n"); n->m_len = data_len; - printf("Nakon n->m_len = data_len;\n"); + printf("Nakon n->m_len = data_len = %d;\n", data_len); m->m_next = n; printf("Nakon m->m_next = n;\n"); } else if (data_len > 0) { printf("rtsock.c: rt_msg3(), prije bcopy 2!\n"); + printf("data_len = %d\n", data_len); bcopy(data, mtod(m, u_int8_t *) + m->m_len, data_len); printf("rtsock.c: rt_msg3(), nakon bcopy 2!\n"); m->m_len += data_len; @@ -1597,7 +1598,7 @@ /* * take care of routing entries */ - for (error = 0; error == 0 && i <= lim; i++) + for (error = 0; error == 0 && i <= lim; i++) { rnh = rt_tables_get_rnh(req->td->td_proc->p_fibnum, i); if (rnh != NULL) { RADIX_NODE_HEAD_LOCK(rnh); @@ -1606,6 +1607,7 @@ RADIX_NODE_HEAD_UNLOCK(rnh); } else if (af != 0) error = EAFNOSUPPORT; + } break; case NET_RT_IFLIST: ==== //depot/projects/soc2009/anchie_send/src/sys/net/vnet.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/net/vnet.c,v 1.8 2009/08/01 22:22:45 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/net/vnet.c,v 1.9 2009/08/12 12:00:21 bz Exp $"); #include "opt_ddb.h" @@ -615,14 +615,20 @@ { VNET_ITERATOR_DECL(vnet_iter); -#if SIZE_MAX == UINT32_MAX /* 32-bit arch */ - db_printf(" vnet ifs socks\n"); -#else /* 64-bit arch, most probaly... */ - db_printf(" vnet ifs socks\n"); -#endif VNET_FOREACH(vnet_iter) { - db_printf("%p %3d %5d\n", vnet_iter, vnet_iter->vnet_ifcnt, - vnet_iter->vnet_sockcnt); + db_printf("vnet = %p\n", vnet_iter); + db_printf(" vnet_magic_n = 0x%x (%s, orig 0x%x)\n", + vnet_iter->vnet_magic_n, + (vnet_iter->vnet_magic_n == VNET_MAGIC_N) ? + "ok" : "mismatch", VNET_MAGIC_N); + db_printf(" vnet_ifcnt = %u\n", vnet_iter->vnet_ifcnt); + db_printf(" vnet_sockcnt = %u\n", vnet_iter->vnet_sockcnt); + db_printf(" vnet_data_mem = %p\n", vnet_iter->vnet_data_mem); + db_printf(" vnet_data_base = 0x%jx\n", + (uintmax_t)vnet_iter->vnet_data_base); + db_printf("\n"); + if (db_pager_quit) + break; } } #endif ==== //depot/projects/soc2009/anchie_send/src/sys/net/vnet.h#4 (text+ko) ==== @@ -32,7 +32,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/net/vnet.h,v 1.25 2009/08/01 21:54:15 rwatson Exp $ + * $FreeBSD: src/sys/net/vnet.h,v 1.27 2009/08/13 10:26:34 bz Exp $ */ /*- @@ -185,12 +185,14 @@ * Virtual network stack memory allocator, which allows global variables to * be automatically instantiated for each network stack instance. */ +__asm__( #if defined(__arm__) -__asm__(".section " VNET_SETNAME ", \"aw\", %progbits"); + ".section " VNET_SETNAME ", \"aw\", %progbits\n" #else -__asm__(".section " VNET_SETNAME ", \"aw\", @progbits"); + ".section " VNET_SETNAME ", \"aw\", @progbits\n" #endif -__asm__(".previous"); + "\t.p2align " __XSTRING(CACHE_LINE_SHIFT) "\n" + "\t.previous"); #define VNET_NAME(n) vnet_entry_##n #define VNET_DECLARE(t, n) extern t VNET_NAME(n) @@ -230,21 +232,25 @@ int vnet_sysctl_handle_uint(SYSCTL_HANDLER_ARGS); #define SYSCTL_VNET_INT(parent, nbr, name, access, ptr, val, descr) \ - SYSCTL_OID(parent, nbr, name, CTLTYPE_INT|CTLFLAG_MPSAFE|(access), \ + SYSCTL_OID(parent, nbr, name, \ + CTLTYPE_INT|CTLFLAG_MPSAFE|CTLFLAG_VNET|(access), \ ptr, val, vnet_sysctl_handle_int, "I", descr) #define SYSCTL_VNET_PROC(parent, nbr, name, access, ptr, arg, handler, \ fmt, descr) \ - SYSCTL_OID(parent, nbr, name, access, ptr, arg, handler, fmt, \ - descr) + SYSCTL_OID(parent, nbr, name, CTLFLAG_VNET|(access), ptr, arg, \ + handler, fmt, descr) #define SYSCTL_VNET_STRING(parent, nbr, name, access, arg, len, descr) \ - SYSCTL_OID(parent, nbr, name, CTLTYPE_STRING|(access), arg, \ - len, vnet_sysctl_handle_string, "A", descr) + SYSCTL_OID(parent, nbr, name, \ + CTLTYPE_STRING|CTLFLAG_VNET|(access), \ + arg, len, vnet_sysctl_handle_string, "A", descr) #define SYSCTL_VNET_STRUCT(parent, nbr, name, access, ptr, type, descr) \ - SYSCTL_OID(parent, nbr, name, CTLTYPE_OPAQUE|(access), ptr, \ + SYSCTL_OID(parent, nbr, name, \ + CTLTYPE_OPAQUE|CTLFLAG_VNET|(access), ptr, \ sizeof(struct type), vnet_sysctl_handle_opaque, "S," #type, \ descr) #define SYSCTL_VNET_UINT(parent, nbr, name, access, ptr, val, descr) \ - SYSCTL_OID(parent, nbr, name, CTLTYPE_UINT|CTLFLAG_MPSAFE|(access), \ + SYSCTL_OID(parent, nbr, name, \ + CTLTYPE_UINT|CTLFLAG_MPSAFE|CTLFLAG_VNET|(access), \ ptr, val, vnet_sysctl_handle_uint, "IU", descr) #define VNET_SYSCTL_ARG(req, arg1) do { \ if (arg1 != NULL) \ ==== //depot/projects/soc2009/anchie_send/src/sys/net80211/ieee80211.c#4 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/net80211/ieee80211.c,v 1.85 2009/07/31 19:12:19 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/net80211/ieee80211.c,v 1.86 2009/08/12 21:19:19 sam Exp $"); /* * IEEE 802.11 generic handler @@ -573,11 +573,13 @@ /* * Flush any deferred vap tasks. - * NB: must be before ether_ifdetach() and removal from ic_vaps list */ ieee80211_draintask(ic, &vap->iv_nstate_task); ieee80211_draintask(ic, &vap->iv_swbmiss_task); + /* XXX band-aid until ifnet handles this for us */ + taskqueue_drain(taskqueue_swi, &ifp->if_linktask); + IEEE80211_LOCK(ic); KASSERT(vap->iv_state == IEEE80211_S_INIT , ("vap still running")); TAILQ_REMOVE(&ic->ic_vaps, vap, iv_next); ==== //depot/projects/soc2009/anchie_send/src/sys/netatalk/at_control.c#3 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netatalk/at_control.c,v 1.52 2009/06/24 21:36:09 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netatalk/at_control.c,v 1.53 2009/08/12 10:44:13 rwatson Exp $"); #include #include @@ -276,7 +276,7 @@ * If the request is specifying phase 1, then * only look at a phase one address */ - AT_IFADDR_RUNLOCK(); + AT_IFADDR_RLOCK(); for (oaa = aa; aa; aa = TAILQ_NEXT(aa, aa_link)) { if (aa->aa_ifp == ifp && (aa->aa_flags & AFA_PHASE2) == 0) @@ -286,7 +286,7 @@ ifa_free(&oaa->aa_ifa); if (aa != NULL && oaa != aa) ifa_ref(&aa->aa_ifa); - AT_IFADDR_RLOCK(); + AT_IFADDR_RUNLOCK(); } else { struct at_ifaddr *oaa; ==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/in6.c#4 (text+ko) ==== @@ -61,7 +61,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet6/in6.c,v 1.121 2009/08/01 19:26:27 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet6/in6.c,v 1.122 2009/08/12 19:15:26 qingli Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -1750,21 +1750,12 @@ * interface that share the same destination. */ plen = in6_mask2len(&ia->ia_prefixmask.sin6_addr, NULL); /* XXX */ - if (!(ia->ia_flags & IFA_ROUTE) && plen == 128) { - struct sockaddr *dstaddr; + if (!(ia->ia_flags & IFA_ROUTE) && plen == 128 && + ia->ia_dstaddr.sin6_family == AF_INET6) { int rtflags = RTF_UP | RTF_HOST; - /* - * use the interface address if configuring an - * interface address with a /128 prefix len - */ - if (ia->ia_dstaddr.sin6_family == AF_INET6) - dstaddr = (struct sockaddr *)&ia->ia_dstaddr; - else - dstaddr = (struct sockaddr *)&ia->ia_addr; - error = rtrequest(RTM_ADD, - (struct sockaddr *)dstaddr, + (struct sockaddr *)&ia->ia_dstaddr, (struct sockaddr *)&ia->ia_addr, (struct sockaddr *)&ia->ia_prefixmask, ia->ia_flags | rtflags, NULL); ==== //depot/projects/soc2009/anchie_send/src/sys/security/audit/audit.h#3 (text) ==== @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/security/audit/audit.h,v 1.29 2009/07/29 07:44:43 rwatson Exp $ + * $FreeBSD: src/sys/security/audit/audit.h,v 1.30 2009/08/12 10:45:45 rwatson Exp $ */ /* @@ -232,7 +232,7 @@ #define AUDIT_ARG_RGID(rgid) do { \ if (AUDITING_TD(curthread)) \ - audit_arg_gid((rgid)); \ + audit_arg_rgid((rgid)); \ } while (0) #define AUDIT_ARG_RUID(ruid) do { \ ==== //depot/projects/soc2009/anchie_send/src/sys/sys/jail.h#4 (text+ko) ==== @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/sys/jail.h,v 1.50 2009/07/25 14:48:57 jamie Exp $ + * $FreeBSD: src/sys/sys/jail.h,v 1.51 2009/08/13 10:26:34 bz Exp $ */ #ifndef _SYS_JAIL_H_ @@ -341,6 +341,7 @@ void getcredhostid(struct ucred *, unsigned long *); int prison_allow(struct ucred *, unsigned); int prison_check(struct ucred *cred1, struct ucred *cred2); +int prison_owns_vnet(struct ucred *); int prison_canseemount(struct ucred *cred, struct mount *mp); void prison_enforce_statfs(struct ucred *cred, struct mount *mp, struct statfs *sp); ==== //depot/projects/soc2009/anchie_send/src/sys/sys/pcpu.h#4 (text+ko) ==== @@ -27,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/sys/pcpu.h,v 1.33 2009/07/14 22:48:30 rwatson Exp $ + * $FreeBSD: src/sys/sys/pcpu.h,v 1.34 2009/08/12 10:26:03 bz Exp $ */ #ifndef _SYS_PCPU_H_ @@ -56,12 +56,14 @@ extern uintptr_t *__start_set_pcpu; extern uintptr_t *__stop_set_pcpu; +__asm__( #if defined(__arm__) -__asm__(".section set_pcpu, \"aw\", %progbits"); + ".section set_pcpu, \"aw\", %progbits\n" #else -__asm__(".section set_pcpu, \"aw\", @progbits"); + ".section set_pcpu, \"aw\", @progbits\n" #endif -__asm__(".previous"); + "\t.p2align " __XSTRING(CACHE_LINE_SHIFT) "\n" + "\t.previous"); /* * Array of dynamic pcpu base offsets. Indexed by id. ==== //depot/projects/soc2009/anchie_send/src/sys/sys/sysctl.h#4 (text+ko) ==== @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * @(#)sysctl.h 8.1 (Berkeley) 6/2/93 - * $FreeBSD: src/sys/sys/sysctl.h,v 1.176 2009/07/24 19:12:19 brooks Exp $ + * $FreeBSD: src/sys/sys/sysctl.h,v 1.177 2009/08/13 10:26:34 bz Exp $ */ #ifndef _SYS_SYSCTL_H_ @@ -85,6 +85,7 @@ #define CTLMASK_SECURE 0x00F00000 /* Secure level */ #define CTLFLAG_TUN 0x00080000 /* Tunable variable */ #define CTLFLAG_MPSAFE 0x00040000 /* Handler is MP safe */ +#define CTLFLAG_VNET 0x00020000 /* Prisons with vnet can fiddle */ #define CTLFLAG_RDTUN (CTLFLAG_RD|CTLFLAG_TUN) /* ==== //depot/projects/soc2009/anchie_send/src/sys/xdr/xdr_mbuf.c#2 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/xdr/xdr_mbuf.c,v 1.4 2008/11/13 14:36:52 dfr Exp $"); +__FBSDID("$FreeBSD: src/sys/xdr/xdr_mbuf.c,v 1.5 2009/08/12 16:27:51 rmacklem Exp $"); #include #include @@ -282,6 +282,8 @@ size_t available; char *p; + if (!m) + return (0); if (xdrs->x_op == XDR_ENCODE) { available = M_TRAILINGSPACE(m) + (m->m_len - xdrs->x_handy); } else { From owner-p4-projects@FreeBSD.ORG Thu Aug 13 19:10:04 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 85919106566C; Thu, 13 Aug 2009 19:10:04 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4539F106564A for ; Thu, 13 Aug 2009 19:10:04 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 32D868FC52 for ; Thu, 13 Aug 2009 19:10:04 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7DJA3J0030629 for ; Thu, 13 Aug 2009 19:10:03 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7DJA3qm030627 for perforce@freebsd.org; Thu, 13 Aug 2009 19:10:03 GMT (envelope-from syl@FreeBSD.org) Date: Thu, 13 Aug 2009 19:10:03 GMT Message-Id: <200908131910.n7DJA3qm030627@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 167302 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 19:10:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=167302 Change 167302 by syl@syl_atuin on 2009/08/13 19:09:17 On Hans Petter advices : - Add static const to usb_roothub_fops. - Use multiple field initialisation. - Update at91dci to use this mechanisms. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/at91dci.c#13 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_controller.h#11 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_roothub_exec.c#8 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/at91dci.c#13 (text+ko) ==== @@ -1582,7 +1582,7 @@ static usb_error_t at91dci_get_port_status(struct usb_generic_softc *gensc, - struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { struct at91dci_softc *sc = (struct at91dci_softc *)gensc; @@ -1640,16 +1640,17 @@ struct usb_device_request *req, const void **pptr, uint16_t *plength) { struct at91dci_softc *sc = AT9100_DCI_BUS2SC(udev->bus); - struct usb_roothub_fops fops; + static const struct usb_roothub_fops fops = { + DEFAULT_ROOTHUB, + .handle_get_port_status = &at91dci_get_port_status, + .handle_clocks_on = (usb_clocks_fops_t)&at91dci_clocks_on, + .handle_clocks_off = (usb_clocks_fops_t)&at91dci_clocks_off, + .handle_pull_up = (usb_clocks_fops_t)&at91dci_pull_up, + .handle_pull_down = (usb_clocks_fops_t)&at91dci_pull_down, + .handle_wakeup_peer = (usb_clocks_fops_t)&at91dci_wakeup_peer, + }; - bzero(&fops, sizeof(struct usb_roothub_fops)); - fops.handle_get_port_status = &at91dci_get_port_status; - fops.handle_clocks_on = (usb_clocks_fops_t)&at91dci_clocks_on; - fops.handle_clocks_off = (usb_clocks_fops_t)&at91dci_clocks_off; - fops.handle_pull_up = (usb_clocks_fops_t)&at91dci_pull_up; - fops.handle_pull_down = (usb_clocks_fops_t)&at91dci_pull_down; - fops.handle_wakeup_peer = (usb_clocks_fops_t)&at91dci_wakeup_peer; - return generic_roothub_exec((struct usb_generic_softc *)sc, &fops, req, + return generic_roothub_exec((struct usb_generic_softc *)sc, &fops, req, pptr, plength); } ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_controller.h#11 (text+ko) ==== @@ -209,7 +209,7 @@ struct usb_port_status ps; }; -typedef usb_error_t (*usb_roothub_fops_t)(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +typedef usb_error_t (*usb_roothub_fops_t)(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); typedef usb_error_t (*usb_clocks_fops_t)(struct usb_generic_softc *sc); struct usb_roothub_fops { @@ -247,6 +247,50 @@ uint16_t usb_isoc_time_expand(struct usb_bus *bus, uint16_t isoc_time_curr); uint16_t usbd_fs_isoc_schedule_isoc_time_expand(struct usb_device *udev, struct usb_fs_isoc_schedule **pp_start, struct usb_fs_isoc_schedule **pp_end, uint16_t isoc_time); uint8_t usbd_fs_isoc_schedule_alloc(struct usb_fs_isoc_schedule *fss, uint8_t *pstart, uint16_t len); -usb_error_t generic_roothub_exec(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, struct usb_device_request *req, const void **pptr, uint16_t *plength); +usb_error_t generic_roothub_exec(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, struct usb_device_request *req, const void **pptr, uint16_t *plength); + +/* prototypes needed by generic_roothub_exec */ + + +usb_error_t generic_get_descriptor(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_get_config(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_get_status(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_set_address(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_set_config(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_clear_halt(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_clear_wakeup(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_set_halt(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_set_wakeup(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_get_ep_status(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_set_interface(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_get_interface(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_get_iface_status(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_clear_port_feature(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_set_port_feature(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_get_tt_state(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_get_port_status(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_get_class_descriptor(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); +usb_error_t generic_get_class_status(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); + +#define DEFAULT_ROOTHUB \ +.handle_get_descriptor = &generic_get_descriptor, \ +.handle_get_config = &generic_get_config, \ +.handle_get_status = &generic_get_status, \ +.handle_set_address = &generic_set_address, \ +.handle_set_config = &generic_set_config, \ +.handle_clear_halt = &generic_clear_halt, \ +.handle_clear_wakeup = &generic_clear_wakeup, \ +.handle_set_halt = &generic_set_halt, \ +.handle_set_wakeup = &generic_set_wakeup, \ +.handle_get_ep_status = &generic_get_ep_status, \ +.handle_set_interface = &generic_set_interface, \ +.handle_get_interface = &generic_get_interface, \ +.handle_get_iface_status = &generic_get_iface_status, \ +.handle_clear_port_feature = &generic_clear_port_feature, \ +.handle_set_port_feature = &generic_set_port_feature, \ +.handle_get_tt_state = &generic_get_tt_state, \ +.handle_get_port_status = &generic_get_port_status, \ +.handle_get_class_descriptor = &generic_get_class_descriptor, \ +.handle_get_class_status = &generic_get_class_status #endif /* _USB_CONTROLLER_H_ */ ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_roothub_exec.c#8 (text+ko) ==== @@ -70,17 +70,9 @@ struct usb_generic_flags sc_flags; }; -#define SAFE_OPS(fops, field, err) \ - if (fops->field == NULL) \ - err = generic_roothub_fops.field(sc, fops, &len, &value, &index); \ - else \ - err = fops->field(sc, fops, &len, &value, &index) - -static struct usb_roothub_fops generic_roothub_fops; - -static usb_error_t +usb_error_t generic_get_descriptor(struct usb_generic_softc *sc, - struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { switch ((*value) >> 8) { @@ -116,9 +108,9 @@ return (0); } -static usb_error_t +usb_error_t generic_get_config(struct usb_generic_softc *sc, - struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { *len = 1; @@ -126,18 +118,19 @@ return (0); } -static usb_error_t -generic_get_status(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, - uint16_t *len, uint16_t *value, uint16_t *index) +usb_error_t +generic_get_status(struct usb_generic_softc *sc, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { *len = 2; USETW(sc->sc_hub_temp.wValue, UDS_SELF_POWERED); return (0); } -static usb_error_t +usb_error_t generic_set_address(struct usb_generic_softc *sc, - struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { if ((*value) & 0xff00) { @@ -147,9 +140,10 @@ return (0); } -static usb_error_t -generic_set_config(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, - uint16_t *len, uint16_t *value, uint16_t *index) +usb_error_t +generic_set_config(struct usb_generic_softc *sc, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { if ((*value) >= 2) { return (USB_ERR_STALLED); @@ -158,38 +152,41 @@ return (0); } -static usb_error_t -generic_clear_halt(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, - uint16_t *len, uint16_t *value, uint16_t *index) +usb_error_t +generic_clear_halt(struct usb_generic_softc *sc, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { return (0); } -static usb_error_t +usb_error_t generic_clear_wakeup(struct usb_generic_softc *sc, - struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { return (0); } -static usb_error_t -generic_set_halt(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, - uint16_t *len, uint16_t *value, uint16_t *index) +usb_error_t +generic_set_halt(struct usb_generic_softc *sc, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { return (0); } -static usb_error_t -generic_set_wakeup(struct usb_generic_softc *sc, struct usb_roothub_fops *fops, - uint16_t *len, uint16_t *value, uint16_t *index) +usb_error_t +generic_set_wakeup(struct usb_generic_softc *sc, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { return (0); } -static usb_error_t +usb_error_t generic_get_ep_status(struct usb_generic_softc *sc, - struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { *len = 2; @@ -197,17 +194,17 @@ return (0); } -static usb_error_t +usb_error_t generic_set_interface(struct usb_generic_softc *sc, - struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { return (0); } -static usb_error_t +usb_error_t generic_get_interface(struct usb_generic_softc *sc, - struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { *len = 1; @@ -215,9 +212,9 @@ return (0); } -static usb_error_t +usb_error_t generic_get_iface_status(struct usb_generic_softc *sc, - struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { *len = 2; @@ -226,9 +223,9 @@ } /* XXX Atmega need another function here */ -static usb_error_t +usb_error_t generic_clear_port_feature(struct usb_generic_softc *sc, - struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { if ((*index) != 1) { @@ -272,9 +269,9 @@ return (0); } -static usb_error_t +usb_error_t generic_set_port_feature(struct usb_generic_softc *sc, - struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { if ((*index) != 1) { @@ -301,9 +298,9 @@ return (0); } -static usb_error_t +usb_error_t generic_get_tt_state(struct usb_generic_softc *sc, - struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { *len = 2; @@ -311,9 +308,10 @@ return (0); } -static usb_error_t +/* XXX Need to recheck with atmega */ +usb_error_t generic_get_port_status(struct usb_generic_softc *sc, - struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { DPRINTFN(9, "UR_GET_PORT_STATUS"); @@ -366,9 +364,9 @@ return (0); } -static usb_error_t +usb_error_t generic_get_class_descriptor(struct usb_generic_softc *sc, - struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { if ((*value) & 0xff) { @@ -378,9 +376,9 @@ return (0); } -static usb_error_t +usb_error_t generic_get_class_status(struct usb_generic_softc *sc, - struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index) { *len = 2; @@ -390,7 +388,7 @@ usb_error_t generic_roothub_exec(struct usb_generic_softc *sc, - struct usb_roothub_fops *fops, struct usb_device_request *req, + const struct usb_roothub_fops *fops, struct usb_device_request *req, const void **pptr, uint16_t *plength) { const void *ptr; @@ -406,9 +404,6 @@ len = 0; err = 0; - if (fops == NULL) - fops = &generic_roothub_fops; - value = UGETW(req->wValue); index = UGETW(req->wIndex); @@ -417,13 +412,13 @@ case UT_READ_DEVICE: switch (req->bRequest) { case UR_GET_DESCRIPTOR: - SAFE_OPS(fops, handle_get_descriptor, err); + err = fops->handle_get_descriptor(sc, fops, &len, &value, &index); break; case UR_GET_CONFIG: - SAFE_OPS(fops, handle_get_config, err); + err = fops->handle_get_config(sc, fops, &len, &value, &index); break; case UR_GET_STATUS: - SAFE_OPS(fops, handle_get_status, err); + err = fops->handle_get_status(sc, fops, &len, &value, &index); break; default: err = USB_ERR_STALLED; @@ -434,10 +429,10 @@ case UT_WRITE_DEVICE: switch (req->bRequest) { case UR_SET_ADDRESS: - SAFE_OPS(fops, handle_set_address, err); + err = fops->handle_set_address(sc, fops, &len, &value, &index); break; case UR_SET_CONFIG: - SAFE_OPS(fops, handle_set_config, err); + err = fops->handle_set_config(sc, fops, &len, &value, &index); break; case UR_CLEAR_FEATURE: break; @@ -455,10 +450,10 @@ case UR_CLEAR_FEATURE: switch (UGETW(req->wValue)) { case UF_ENDPOINT_HALT: - SAFE_OPS(fops, handle_clear_halt, err); + err = fops->handle_clear_halt(sc, fops, &len, &value, &index); break; case UF_DEVICE_REMOTE_WAKEUP: - SAFE_OPS(fops, handle_clear_wakeup, err); + err = fops->handle_clear_wakeup(sc, fops, &len, &value, &index); break; default: err = USB_ERR_STALLED; @@ -468,10 +463,10 @@ case UR_SET_FEATURE: switch (UGETW(req->wValue)) { case UF_ENDPOINT_HALT: - SAFE_OPS(fops, handle_set_halt, err); + err = fops->handle_set_halt(sc, fops, &len, &value, &index); break; case UF_DEVICE_REMOTE_WAKEUP: - SAFE_OPS(fops, handle_set_wakeup, err); + err = fops->handle_set_wakeup(sc, fops, &len, &value, &index); break; default: err = USB_ERR_STALLED; @@ -489,7 +484,7 @@ case UT_READ_ENDPOINT: switch (req->bRequest) { case UR_GET_STATUS: - SAFE_OPS(fops, handle_get_ep_status, err); + err = fops->handle_get_ep_status(sc, fops, &len, &value, &index); break; default: err = USB_ERR_STALLED; @@ -500,7 +495,7 @@ case UT_WRITE_INTERFACE: switch (req->bRequest) { case UR_SET_INTERFACE: - SAFE_OPS(fops, handle_set_interface, err); + err = fops->handle_set_interface(sc, fops, &len, &value, &index); break; case UR_CLEAR_FEATURE: break; @@ -514,10 +509,10 @@ case UT_READ_INTERFACE: switch (req->bRequest) { case UR_GET_INTERFACE: - SAFE_OPS(fops, handle_get_interface, err); + err = fops->handle_get_interface(sc, fops, &len, &value, &index); break; case UR_GET_STATUS: - SAFE_OPS(fops, handle_get_iface_status, err); + err = fops->handle_get_iface_status(sc, fops, &len, &value, &index); break; default: err = USB_ERR_STALLED; @@ -551,10 +546,10 @@ case UT_WRITE_CLASS_OTHER: switch (req->bRequest) { case UR_CLEAR_FEATURE: - SAFE_OPS(fops, handle_clear_port_feature, err); + err = fops->handle_clear_port_feature(sc, fops, &len, &value, &index); break; case UR_SET_FEATURE: - SAFE_OPS(fops, handle_set_port_feature, err); + err = fops->handle_set_port_feature(sc, fops, &len, &value, &index); break; case UR_CLEAR_TT_BUFFER: case UR_RESET_TT: @@ -569,10 +564,10 @@ case UT_READ_CLASS_OTHER: switch (req->bRequest) { case UR_GET_TT_STATE: - SAFE_OPS(fops, handle_get_tt_state, err); + err = fops->handle_get_tt_state(sc, fops, &len, &value, &index); break; case UR_GET_STATUS: - SAFE_OPS(fops, handle_get_port_status, err); + err = fops->handle_get_port_status(sc, fops, &len, &value, &index); break; default: err = USB_ERR_STALLED; @@ -583,10 +578,10 @@ case UT_READ_CLASS_DEVICE: switch (req->bRequest) { case UR_GET_DESCRIPTOR: - SAFE_OPS(fops, handle_get_class_descriptor, err); + err = fops->handle_get_class_descriptor(sc, fops, &len, &value, &index); break; case UR_GET_STATUS: - SAFE_OPS(fops, handle_get_class_status, err); + err = fops->handle_get_class_status(sc, fops, &len, &value, &index); break; default: err = USB_ERR_STALLED; @@ -603,31 +598,3 @@ *pptr = ptr; return (err); } - -static struct usb_roothub_fops generic_roothub_fops = { - &generic_get_descriptor, - &generic_get_config, - &generic_get_status, - &generic_set_address, - &generic_set_config, - &generic_clear_halt, - &generic_clear_wakeup, - &generic_set_halt, - &generic_set_wakeup, - &generic_get_ep_status, - &generic_set_interface, - &generic_get_interface, - &generic_get_iface_status, - &generic_clear_port_feature, - &generic_set_port_feature, - &generic_get_tt_state, - &generic_get_port_status, - &generic_get_class_descriptor, - &generic_get_class_status, - NULL, - NULL, - NULL, - NULL, - NULL, -}; - From owner-p4-projects@FreeBSD.ORG Thu Aug 13 19:17:13 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4E1C11065675; Thu, 13 Aug 2009 19:17:12 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0DEE7106564A for ; Thu, 13 Aug 2009 19:17:12 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id F0B1D8FC16 for ; Thu, 13 Aug 2009 19:17:11 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7DJHBDE031189 for ; Thu, 13 Aug 2009 19:17:11 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7DJHBbv031187 for perforce@freebsd.org; Thu, 13 Aug 2009 19:17:11 GMT (envelope-from syl@FreeBSD.org) Date: Thu, 13 Aug 2009 19:17:11 GMT Message-Id: <200908131917.n7DJHBbv031187@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 167303 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 19:17:14 -0000 http://perforce.freebsd.org/chv.cgi?CH=167303 Change 167303 by syl@syl_atuin on 2009/08/13 19:16:28 Implement avr32dci dependant get_port_status. Change the code to use generic_roothub_exec. Remove old usb descriptor code. Remove old roothub_exec code. I cannot try to compile it, because this driver does not compile before my changes... Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/avr32dci.c#10 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/avr32dci.c#10 (text+ko) ==== @@ -1410,366 +1410,20 @@ .start = avr32dci_device_isoc_fs_start, }; -/*------------------------------------------------------------------------* - * at91dci root control support - *------------------------------------------------------------------------* - * Simulate a hardware HUB by handling all the necessary requests. - *------------------------------------------------------------------------*/ - -static const struct usb_device_descriptor avr32dci_devd = { - .bLength = sizeof(struct usb_device_descriptor), - .bDescriptorType = UDESC_DEVICE, - .bcdUSB = {0x00, 0x02}, - .bDeviceClass = UDCLASS_HUB, - .bDeviceSubClass = UDSUBCLASS_HUB, - .bDeviceProtocol = UDPROTO_HSHUBSTT, - .bMaxPacketSize = 64, - .bcdDevice = {0x00, 0x01}, - .iManufacturer = 1, - .iProduct = 2, - .bNumConfigurations = 1, -}; - -static const struct usb_device_qualifier avr32dci_odevd = { - .bLength = sizeof(struct usb_device_qualifier), - .bDescriptorType = UDESC_DEVICE_QUALIFIER, - .bcdUSB = {0x00, 0x02}, - .bDeviceClass = UDCLASS_HUB, - .bDeviceSubClass = UDSUBCLASS_HUB, - .bDeviceProtocol = UDPROTO_FSHUB, - .bMaxPacketSize0 = 0, - .bNumConfigurations = 0, -}; - -static const struct avr32dci_config_desc avr32dci_confd = { - .confd = { - .bLength = sizeof(struct usb_config_descriptor), - .bDescriptorType = UDESC_CONFIG, - .wTotalLength[0] = sizeof(avr32dci_confd), - .bNumInterface = 1, - .bConfigurationValue = 1, - .iConfiguration = 0, - .bmAttributes = UC_SELF_POWERED, - .bMaxPower = 0, - }, - .ifcd = { - .bLength = sizeof(struct usb_interface_descriptor), - .bDescriptorType = UDESC_INTERFACE, - .bNumEndpoints = 1, - .bInterfaceClass = UICLASS_HUB, - .bInterfaceSubClass = UISUBCLASS_HUB, - .bInterfaceProtocol = UIPROTO_HSHUBSTT, - }, - .endpd = { - .bLength = sizeof(struct usb_endpoint_descriptor), - .bDescriptorType = UDESC_ENDPOINT, - .bEndpointAddress = (UE_DIR_IN | AVR32_INTR_ENDPT), - .bmAttributes = UE_INTERRUPT, - .wMaxPacketSize[0] = 8, - .bInterval = 255, - }, -}; - -static const struct usb_hub_descriptor_min avr32dci_hubd = { - .bDescLength = sizeof(avr32dci_hubd), - .bDescriptorType = UDESC_HUB, - .bNbrPorts = 1, - .wHubCharacteristics[0] = - (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) & 0xFF, - .wHubCharacteristics[1] = - (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) >> 8, - .bPwrOn2PwrGood = 50, - .bHubContrCurrent = 0, - .DeviceRemovable = {0}, /* port is removable */ -}; - -#define STRING_LANG \ - 0x09, 0x04, /* American English */ - -#define STRING_VENDOR \ - 'A', 0, 'V', 0, 'R', 0, '3', 0, '2', 0 - -#define STRING_PRODUCT \ - 'D', 0, 'C', 0, 'I', 0, ' ', 0, 'R', 0, \ - 'o', 0, 'o', 0, 't', 0, ' ', 0, 'H', 0, \ - 'U', 0, 'B', 0, - -USB_MAKE_STRING_DESC(STRING_LANG, avr32dci_langtab); -USB_MAKE_STRING_DESC(STRING_VENDOR, avr32dci_vendor); -USB_MAKE_STRING_DESC(STRING_PRODUCT, avr32dci_product); - static usb_error_t -avr32dci_roothub_exec(struct usb_device *udev, - struct usb_device_request *req, const void **pptr, uint16_t *plength) +avr32dci_clear_port_feature(struct usb_generic_softc *scav, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { - struct avr32dci_softc *sc = AVR32_BUS2SC(udev->bus); - const void *ptr; - uint16_t len; - uint16_t value; - uint16_t index; + struct avr32dci_softc *sc = (struct avr32dci_softc *)scav; uint32_t temp; - usb_error_t err; - USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); - - /* buffer reset */ - ptr = (const void *)&sc->sc_hub_temp; - len = 0; - err = 0; - - value = UGETW(req->wValue); - index = UGETW(req->wIndex); - - /* demultiplex the control request */ - - switch (req->bmRequestType) { - case UT_READ_DEVICE: - switch (req->bRequest) { - case UR_GET_DESCRIPTOR: - goto tr_handle_get_descriptor; - case UR_GET_CONFIG: - goto tr_handle_get_config; - case UR_GET_STATUS: - goto tr_handle_get_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_DEVICE: - switch (req->bRequest) { - case UR_SET_ADDRESS: - goto tr_handle_set_address; - case UR_SET_CONFIG: - goto tr_handle_set_config; - case UR_CLEAR_FEATURE: - goto tr_valid; /* nop */ - case UR_SET_DESCRIPTOR: - goto tr_valid; /* nop */ - case UR_SET_FEATURE: - default: - goto tr_stalled; - } - break; - - case UT_WRITE_ENDPOINT: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - switch (UGETW(req->wValue)) { - case UF_ENDPOINT_HALT: - goto tr_handle_clear_halt; - case UF_DEVICE_REMOTE_WAKEUP: - goto tr_handle_clear_wakeup; - default: - goto tr_stalled; - } - break; - case UR_SET_FEATURE: - switch (UGETW(req->wValue)) { - case UF_ENDPOINT_HALT: - goto tr_handle_set_halt; - case UF_DEVICE_REMOTE_WAKEUP: - goto tr_handle_set_wakeup; - default: - goto tr_stalled; - } - break; - case UR_SYNCH_FRAME: - goto tr_valid; /* nop */ - default: - goto tr_stalled; - } - break; - - case UT_READ_ENDPOINT: - switch (req->bRequest) { - case UR_GET_STATUS: - goto tr_handle_get_ep_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_INTERFACE: - switch (req->bRequest) { - case UR_SET_INTERFACE: - goto tr_handle_set_interface; - case UR_CLEAR_FEATURE: - goto tr_valid; /* nop */ - case UR_SET_FEATURE: - default: - goto tr_stalled; - } - break; - - case UT_READ_INTERFACE: - switch (req->bRequest) { - case UR_GET_INTERFACE: - goto tr_handle_get_interface; - case UR_GET_STATUS: - goto tr_handle_get_iface_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_CLASS_INTERFACE: - case UT_WRITE_VENDOR_INTERFACE: - /* XXX forward */ - break; - - case UT_READ_CLASS_INTERFACE: - case UT_READ_VENDOR_INTERFACE: - /* XXX forward */ - break; - - case UT_WRITE_CLASS_DEVICE: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - goto tr_valid; - case UR_SET_DESCRIPTOR: - case UR_SET_FEATURE: - break; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_CLASS_OTHER: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - goto tr_handle_clear_port_feature; - case UR_SET_FEATURE: - goto tr_handle_set_port_feature; - case UR_CLEAR_TT_BUFFER: - case UR_RESET_TT: - case UR_STOP_TT: - goto tr_valid; - - default: - goto tr_stalled; - } - break; - - case UT_READ_CLASS_OTHER: - switch (req->bRequest) { - case UR_GET_TT_STATE: - goto tr_handle_get_tt_state; - case UR_GET_STATUS: - goto tr_handle_get_port_status; - default: - goto tr_stalled; - } - break; - - case UT_READ_CLASS_DEVICE: - switch (req->bRequest) { - case UR_GET_DESCRIPTOR: - goto tr_handle_get_class_descriptor; - case UR_GET_STATUS: - goto tr_handle_get_class_status; - - default: - goto tr_stalled; - } - break; - default: - goto tr_stalled; + if (*index != 1) { + return (USB_ERR_STALLED); } - goto tr_valid; + DPRINTFN(9, "UR_CLEAR_PORT_FEATURE on port %d\n", *index); -tr_handle_get_descriptor: - switch (value >> 8) { - case UDESC_DEVICE: - if (value & 0xff) { - goto tr_stalled; - } - len = sizeof(avr32dci_devd); - ptr = (const void *)&avr32dci_devd; - goto tr_valid; - case UDESC_CONFIG: - if (value & 0xff) { - goto tr_stalled; - } - len = sizeof(avr32dci_confd); - ptr = (const void *)&avr32dci_confd; - goto tr_valid; - case UDESC_STRING: - switch (value & 0xff) { - case 0: /* Language table */ - len = sizeof(avr32dci_langtab); - ptr = (const void *)&avr32dci_langtab; - goto tr_valid; - - case 1: /* Vendor */ - len = sizeof(avr32dci_vendor); - ptr = (const void *)&avr32dci_vendor; - goto tr_valid; - - case 2: /* Product */ - len = sizeof(avr32dci_product); - ptr = (const void *)&avr32dci_product; - goto tr_valid; - default: - break; - } - break; - default: - goto tr_stalled; - } - goto tr_stalled; - -tr_handle_get_config: - len = 1; - sc->sc_hub_temp.wValue[0] = sc->sc_conf; - goto tr_valid; - -tr_handle_get_status: - len = 2; - USETW(sc->sc_hub_temp.wValue, UDS_SELF_POWERED); - goto tr_valid; - -tr_handle_set_address: - if (value & 0xFF00) { - goto tr_stalled; - } - sc->sc_rt_addr = value; - goto tr_valid; - -tr_handle_set_config: - if (value >= 2) { - goto tr_stalled; - } - sc->sc_conf = value; - goto tr_valid; - -tr_handle_get_interface: - len = 1; - sc->sc_hub_temp.wValue[0] = 0; - goto tr_valid; - -tr_handle_get_tt_state: -tr_handle_get_class_status: -tr_handle_get_iface_status: -tr_handle_get_ep_status: - len = 2; - USETW(sc->sc_hub_temp.wValue, 0); - goto tr_valid; - -tr_handle_set_halt: -tr_handle_set_interface: -tr_handle_set_wakeup: -tr_handle_clear_wakeup: -tr_handle_clear_halt: - goto tr_valid; - -tr_handle_clear_port_feature: - if (index != 1) { - goto tr_stalled; - } - DPRINTFN(9, "UR_CLEAR_PORT_FEATURE on port %d\n", index); - - switch (value) { + switch (*value) { case UHF_PORT_SUSPEND: avr32dci_wakeup_peer(sc); break; @@ -1828,42 +1482,22 @@ sc->sc_flags.change_suspend = 0; break; default: - err = USB_ERR_IOERROR; - goto done; + return (USB_ERR_IOERROR); } - goto tr_valid; + return (0); +} -tr_handle_set_port_feature: - if (index != 1) { - goto tr_stalled; - } - DPRINTFN(9, "UR_SET_PORT_FEATURE\n"); +static usb_error_t +avr32dci_get_port_status(struct usb_generic_softc *scav, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) +{ + struct avr32dci_softc *sc = (struct avr32dci_softc *)scav; - switch (value) { - case UHF_PORT_ENABLE: - sc->sc_flags.port_enabled = 1; - break; - case UHF_PORT_SUSPEND: - case UHF_PORT_RESET: - case UHF_PORT_TEST: - case UHF_PORT_INDICATOR: - /* nops */ - break; - case UHF_PORT_POWER: - sc->sc_flags.port_powered = 1; - break; - default: - err = USB_ERR_IOERROR; - goto done; - } - goto tr_valid; - -tr_handle_get_port_status: - DPRINTFN(9, "UR_GET_PORT_STATUS\n"); - if (index != 1) { - goto tr_stalled; + if (*index != 1) { + return (USB_ERR_STALLED); } if (sc->sc_flags.status_vbus) { avr32dci_clocks_on(sc); @@ -1875,54 +1509,57 @@ /* Select Device Side Mode */ - value = UPS_PORT_MODE_DEVICE; + *value = UPS_PORT_MODE_DEVICE; /* Check for High Speed */ if (AVR32_READ_4(sc, AVR32_INTSTA) & AVR32_INT_SPEED) - value |= UPS_HIGH_SPEED; + *value |= UPS_HIGH_SPEED; if (sc->sc_flags.port_powered) { - value |= UPS_PORT_POWER; + *value |= UPS_PORT_POWER; } if (sc->sc_flags.port_enabled) { - value |= UPS_PORT_ENABLED; + *value |= UPS_PORT_ENABLED; } if (sc->sc_flags.status_vbus && sc->sc_flags.status_bus_reset) { - value |= UPS_CURRENT_CONNECT_STATUS; + *value |= UPS_CURRENT_CONNECT_STATUS; } if (sc->sc_flags.status_suspend) { - value |= UPS_SUSPEND; + *value |= UPS_SUSPEND; } - USETW(sc->sc_hub_temp.ps.wPortStatus, value); + USETW(sc->sc_hub_temp.ps.wPortStatus, *value); - value = 0; + *value = 0; if (sc->sc_flags.change_connect) { - value |= UPS_C_CONNECT_STATUS; + *value |= UPS_C_CONNECT_STATUS; } if (sc->sc_flags.change_suspend) { - value |= UPS_C_SUSPEND; + *value |= UPS_C_SUSPEND; } - USETW(sc->sc_hub_temp.ps.wPortChange, value); - len = sizeof(sc->sc_hub_temp.ps); - goto tr_valid; + USETW(sc->sc_hub_temp.ps.wPortChange, *value); + *len = sizeof(sc->sc_hub_temp.ps); + return (0); +} -tr_handle_get_class_descriptor: - if (value & 0xFF) { - goto tr_stalled; - } - ptr = (const void *)&avr32dci_hubd; - len = sizeof(avr32dci_hubd); - goto tr_valid; - -tr_stalled: - err = USB_ERR_STALLED; -tr_valid: -done: - *plength = len; - *pptr = ptr; - return (err); +static usb_error_t +avr32dci_roothub_exec(struct usb_device *udev, + struct usb_device_request *req, const void **pptr, uint16_t *plength) +{ + struct avr32dci_softc *sc = AVR32_BUS2SC(udev->bus); + static const struct usb_roothub_fops fops = { + DEFAULT_ROOTHUB, + .handle_clear_port_feature = &avr32dci_clear_port_feature, + .handle_get_port_status = &avr32dci_get_port_status, + .handle_clocks_on = (usb_clocks_fops_t)&avr32dci_clocks_on, + .handle_clocks_off = (usb_clocks_fops_t)&avr32dci_clocks_off, + .handle_pull_up = (usb_clocks_fops_t)&avr32dci_pull_up, + .handle_pull_down = (usb_clocks_fops_t)&avr32dci_pull_down, + .handle_wakeup_peer = (usb_clocks_fops_t)&avr32dci_wakeup_peer, + }; + return generic_roothub_exec((struct usb_generic_softc *) sc, &fops, req, + pptr, plength); } static void From owner-p4-projects@FreeBSD.ORG Thu Aug 13 19:18:14 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B93881065688; Thu, 13 Aug 2009 19:18:13 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 757ED106568E for ; Thu, 13 Aug 2009 19:18:13 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 63DD48FC5D for ; Thu, 13 Aug 2009 19:18:13 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7DJIDjC031251 for ; Thu, 13 Aug 2009 19:18:13 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7DJIDVt031249 for perforce@freebsd.org; Thu, 13 Aug 2009 19:18:13 GMT (envelope-from syl@FreeBSD.org) Date: Thu, 13 Aug 2009 19:18:13 GMT Message-Id: <200908131918.n7DJIDVt031249@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 167304 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 19:18:15 -0000 http://perforce.freebsd.org/chv.cgi?CH=167304 Change 167304 by syl@syl_atuin on 2009/08/13 19:17:16 Change the code to use generic_roothub_exec. Remove old usb descriptor code. Remove old roothub_exec code. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/musb_otg.c#12 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/musb_otg.c#12 (text+ko) ==== @@ -1986,429 +1986,17 @@ .start = musbotg_device_isoc_start, }; -/*------------------------------------------------------------------------* - * musbotg root control support - *------------------------------------------------------------------------* - * Simulate a hardware HUB by handling all the necessary requests. - *------------------------------------------------------------------------*/ - -static const struct usb_device_descriptor musbotg_devd = { - .bLength = sizeof(struct usb_device_descriptor), - .bDescriptorType = UDESC_DEVICE, - .bcdUSB = {0x00, 0x02}, - .bDeviceClass = UDCLASS_HUB, - .bDeviceSubClass = UDSUBCLASS_HUB, - .bDeviceProtocol = UDPROTO_HSHUBSTT, - .bMaxPacketSize = 64, - .bcdDevice = {0x00, 0x01}, - .iManufacturer = 1, - .iProduct = 2, - .bNumConfigurations = 1, -}; - -static const struct usb_device_qualifier musbotg_odevd = { - .bLength = sizeof(struct usb_device_qualifier), - .bDescriptorType = UDESC_DEVICE_QUALIFIER, - .bcdUSB = {0x00, 0x02}, - .bDeviceClass = UDCLASS_HUB, - .bDeviceSubClass = UDSUBCLASS_HUB, - .bDeviceProtocol = UDPROTO_FSHUB, - .bMaxPacketSize0 = 0, - .bNumConfigurations = 0, -}; - -static const struct musbotg_config_desc musbotg_confd = { - .confd = { - .bLength = sizeof(struct usb_config_descriptor), - .bDescriptorType = UDESC_CONFIG, - .wTotalLength[0] = sizeof(musbotg_confd), - .bNumInterface = 1, - .bConfigurationValue = 1, - .iConfiguration = 0, - .bmAttributes = UC_SELF_POWERED, - .bMaxPower = 0, - }, - .ifcd = { - .bLength = sizeof(struct usb_interface_descriptor), - .bDescriptorType = UDESC_INTERFACE, - .bNumEndpoints = 1, - .bInterfaceClass = UICLASS_HUB, - .bInterfaceSubClass = UISUBCLASS_HUB, - .bInterfaceProtocol = UIPROTO_HSHUBSTT, - }, - .endpd = { - .bLength = sizeof(struct usb_endpoint_descriptor), - .bDescriptorType = UDESC_ENDPOINT, - .bEndpointAddress = (UE_DIR_IN | MUSBOTG_INTR_ENDPT), - .bmAttributes = UE_INTERRUPT, - .wMaxPacketSize[0] = 8, - .bInterval = 255, - }, -}; - -static const struct usb_hub_descriptor_min musbotg_hubd = { - .bDescLength = sizeof(musbotg_hubd), - .bDescriptorType = UDESC_HUB, - .bNbrPorts = 1, - .wHubCharacteristics[0] = - (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) & 0xFF, - .wHubCharacteristics[1] = - (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) >> 16, - .bPwrOn2PwrGood = 50, - .bHubContrCurrent = 0, - .DeviceRemovable = {0}, /* port is removable */ -}; - -#define STRING_LANG \ - 0x09, 0x04, /* American English */ - -#define STRING_VENDOR \ - 'M', 0, 'e', 0, 'n', 0, 't', 0, 'o', 0, 'r', 0, ' ', 0, \ - 'G', 0, 'r', 0, 'a', 0, 'p', 0, 'h', 0, 'i', 0, 'c', 0, 's', 0 - -#define STRING_PRODUCT \ - 'O', 0, 'T', 0, 'G', 0, ' ', 0, 'R', 0, \ - 'o', 0, 'o', 0, 't', 0, ' ', 0, 'H', 0, \ - 'U', 0, 'B', 0, - -USB_MAKE_STRING_DESC(STRING_LANG, musbotg_langtab); -USB_MAKE_STRING_DESC(STRING_VENDOR, musbotg_vendor); -USB_MAKE_STRING_DESC(STRING_PRODUCT, musbotg_product); - static usb_error_t -musbotg_roothub_exec(struct usb_device *udev, - struct usb_device_request *req, const void **pptr, uint16_t *plength) +musbotg_get_port_status(struct usb_generic_softc *scmu, + const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, + uint16_t *index) { - struct musbotg_softc *sc = MUSBOTG_BUS2SC(udev->bus); - const void *ptr; - uint16_t len; - uint16_t value; - uint16_t index; - usb_error_t err; - - USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); - - /* buffer reset */ - ptr = (const void *)&sc->sc_hub_temp; - len = 0; - err = 0; - - value = UGETW(req->wValue); - index = UGETW(req->wIndex); - - /* demultiplex the control request */ - - switch (req->bmRequestType) { - case UT_READ_DEVICE: - switch (req->bRequest) { - case UR_GET_DESCRIPTOR: - goto tr_handle_get_descriptor; - case UR_GET_CONFIG: - goto tr_handle_get_config; - case UR_GET_STATUS: - goto tr_handle_get_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_DEVICE: - switch (req->bRequest) { - case UR_SET_ADDRESS: - goto tr_handle_set_address; - case UR_SET_CONFIG: - goto tr_handle_set_config; - case UR_CLEAR_FEATURE: - goto tr_valid; /* nop */ - case UR_SET_DESCRIPTOR: - goto tr_valid; /* nop */ - case UR_SET_FEATURE: - default: - goto tr_stalled; - } - break; - - case UT_WRITE_ENDPOINT: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - switch (UGETW(req->wValue)) { - case UF_ENDPOINT_HALT: - goto tr_handle_clear_halt; - case UF_DEVICE_REMOTE_WAKEUP: - goto tr_handle_clear_wakeup; - default: - goto tr_stalled; - } - break; - case UR_SET_FEATURE: - switch (UGETW(req->wValue)) { - case UF_ENDPOINT_HALT: - goto tr_handle_set_halt; - case UF_DEVICE_REMOTE_WAKEUP: - goto tr_handle_set_wakeup; - default: - goto tr_stalled; - } - break; - case UR_SYNCH_FRAME: - goto tr_valid; /* nop */ - default: - goto tr_stalled; - } - break; - - case UT_READ_ENDPOINT: - switch (req->bRequest) { - case UR_GET_STATUS: - goto tr_handle_get_ep_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_INTERFACE: - switch (req->bRequest) { - case UR_SET_INTERFACE: - goto tr_handle_set_interface; - case UR_CLEAR_FEATURE: - goto tr_valid; /* nop */ - case UR_SET_FEATURE: - default: - goto tr_stalled; - } - break; - - case UT_READ_INTERFACE: - switch (req->bRequest) { - case UR_GET_INTERFACE: - goto tr_handle_get_interface; - case UR_GET_STATUS: - goto tr_handle_get_iface_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_CLASS_INTERFACE: - case UT_WRITE_VENDOR_INTERFACE: - /* XXX forward */ - break; - - case UT_READ_CLASS_INTERFACE: - case UT_READ_VENDOR_INTERFACE: - /* XXX forward */ - break; - - case UT_WRITE_CLASS_DEVICE: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - goto tr_valid; - case UR_SET_DESCRIPTOR: - case UR_SET_FEATURE: - break; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_CLASS_OTHER: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - goto tr_handle_clear_port_feature; - case UR_SET_FEATURE: - goto tr_handle_set_port_feature; - case UR_CLEAR_TT_BUFFER: - case UR_RESET_TT: - case UR_STOP_TT: - goto tr_valid; - - default: - goto tr_stalled; - } - break; - - case UT_READ_CLASS_OTHER: - switch (req->bRequest) { - case UR_GET_TT_STATE: - goto tr_handle_get_tt_state; - case UR_GET_STATUS: - goto tr_handle_get_port_status; - default: - goto tr_stalled; - } - break; + struct musbotg_softc *sc = (struct musbotg_softc *) scmu; - case UT_READ_CLASS_DEVICE: - switch (req->bRequest) { - case UR_GET_DESCRIPTOR: - goto tr_handle_get_class_descriptor; - case UR_GET_STATUS: - goto tr_handle_get_class_status; - - default: - goto tr_stalled; - } - break; - default: - goto tr_stalled; - } - goto tr_valid; - -tr_handle_get_descriptor: - switch (value >> 8) { - case UDESC_DEVICE: - if (value & 0xff) { - goto tr_stalled; - } - len = sizeof(musbotg_devd); - ptr = (const void *)&musbotg_devd; - goto tr_valid; - case UDESC_CONFIG: - if (value & 0xff) { - goto tr_stalled; - } - len = sizeof(musbotg_confd); - ptr = (const void *)&musbotg_confd; - goto tr_valid; - case UDESC_STRING: - switch (value & 0xff) { - case 0: /* Language table */ - len = sizeof(musbotg_langtab); - ptr = (const void *)&musbotg_langtab; - goto tr_valid; - - case 1: /* Vendor */ - len = sizeof(musbotg_vendor); - ptr = (const void *)&musbotg_vendor; - goto tr_valid; - - case 2: /* Product */ - len = sizeof(musbotg_product); - ptr = (const void *)&musbotg_product; - goto tr_valid; - default: - break; - } - break; - default: - goto tr_stalled; - } - goto tr_stalled; - -tr_handle_get_config: - len = 1; - sc->sc_hub_temp.wValue[0] = sc->sc_conf; - goto tr_valid; - -tr_handle_get_status: - len = 2; - USETW(sc->sc_hub_temp.wValue, UDS_SELF_POWERED); - goto tr_valid; - -tr_handle_set_address: - if (value & 0xFF00) { - goto tr_stalled; - } - sc->sc_rt_addr = value; - goto tr_valid; - -tr_handle_set_config: - if (value >= 2) { - goto tr_stalled; - } - sc->sc_conf = value; - goto tr_valid; - -tr_handle_get_interface: - len = 1; - sc->sc_hub_temp.wValue[0] = 0; - goto tr_valid; - -tr_handle_get_tt_state: -tr_handle_get_class_status: -tr_handle_get_iface_status: -tr_handle_get_ep_status: - len = 2; - USETW(sc->sc_hub_temp.wValue, 0); - goto tr_valid; - -tr_handle_set_halt: -tr_handle_set_interface: -tr_handle_set_wakeup: -tr_handle_clear_wakeup: -tr_handle_clear_halt: - goto tr_valid; - -tr_handle_clear_port_feature: - if (index != 1) { - goto tr_stalled; - } - DPRINTFN(8, "UR_CLEAR_PORT_FEATURE on port %d\n", index); - - switch (value) { - case UHF_PORT_SUSPEND: - musbotg_wakeup_peer(sc); - break; - - case UHF_PORT_ENABLE: - sc->sc_flags.port_enabled = 0; - break; - - case UHF_PORT_TEST: - case UHF_PORT_INDICATOR: - case UHF_C_PORT_ENABLE: - case UHF_C_PORT_OVER_CURRENT: - case UHF_C_PORT_RESET: - /* nops */ - break; - case UHF_PORT_POWER: - sc->sc_flags.port_powered = 0; - musbotg_pull_down(sc); - musbotg_clocks_off(sc); - break; - case UHF_C_PORT_CONNECTION: - sc->sc_flags.change_connect = 0; - break; - case UHF_C_PORT_SUSPEND: - sc->sc_flags.change_suspend = 0; - break; - default: - err = USB_ERR_IOERROR; - goto done; - } - goto tr_valid; - -tr_handle_set_port_feature: - if (index != 1) { - goto tr_stalled; - } - DPRINTFN(8, "UR_SET_PORT_FEATURE\n"); - - switch (value) { - case UHF_PORT_ENABLE: - sc->sc_flags.port_enabled = 1; - break; - case UHF_PORT_SUSPEND: - case UHF_PORT_RESET: - case UHF_PORT_TEST: - case UHF_PORT_INDICATOR: - /* nops */ - break; - case UHF_PORT_POWER: - sc->sc_flags.port_powered = 1; - break; - default: - err = USB_ERR_IOERROR; - goto done; - } - goto tr_valid; - -tr_handle_get_port_status: - DPRINTFN(8, "UR_GET_PORT_STATUS\n"); - if (index != 1) { - goto tr_stalled; + if (*index != 1) { + return (USB_ERR_STALLED); } if (sc->sc_flags.status_vbus) { musbotg_clocks_on(sc); @@ -2419,30 +2007,30 @@ } /* Select Device Side Mode */ - value = UPS_PORT_MODE_DEVICE; + *value = UPS_PORT_MODE_DEVICE; if (sc->sc_flags.status_high_speed) { - value |= UPS_HIGH_SPEED; + *value |= UPS_HIGH_SPEED; } if (sc->sc_flags.port_powered) { - value |= UPS_PORT_POWER; + *value |= UPS_PORT_POWER; } if (sc->sc_flags.port_enabled) { - value |= UPS_PORT_ENABLED; + *value |= UPS_PORT_ENABLED; } if (sc->sc_flags.status_vbus && sc->sc_flags.status_bus_reset) { - value |= UPS_CURRENT_CONNECT_STATUS; + *value |= UPS_CURRENT_CONNECT_STATUS; } if (sc->sc_flags.status_suspend) { - value |= UPS_SUSPEND; + *value |= UPS_SUSPEND; } - USETW(sc->sc_hub_temp.ps.wPortStatus, value); + USETW(sc->sc_hub_temp.ps.wPortStatus, *value); - value = 0; + *value = 0; if (sc->sc_flags.change_connect) { - value |= UPS_C_CONNECT_STATUS; + *value |= UPS_C_CONNECT_STATUS; if (sc->sc_flags.status_vbus && sc->sc_flags.status_bus_reset) { @@ -2452,27 +2040,29 @@ } } if (sc->sc_flags.change_suspend) { - value |= UPS_C_SUSPEND; + *value |= UPS_C_SUSPEND; } - USETW(sc->sc_hub_temp.ps.wPortChange, value); - len = sizeof(sc->sc_hub_temp.ps); - goto tr_valid; + USETW(sc->sc_hub_temp.ps.wPortChange, *value); + *len = sizeof(sc->sc_hub_temp.ps); + return (0); +} -tr_handle_get_class_descriptor: - if (value & 0xFF) { - goto tr_stalled; - } - ptr = (const void *)&musbotg_hubd; - len = sizeof(musbotg_hubd); - goto tr_valid; - -tr_stalled: - err = USB_ERR_STALLED; -tr_valid: -done: - *plength = len; - *pptr = ptr; - return (err); +static usb_error_t +musbotg_roothub_exec(struct usb_device *udev, + struct usb_device_request *req, const void **pptr, uint16_t *plength) +{ + struct musbotg_softc *sc = MUSBOTG_BUS2SC(udev->bus); + static const struct usb_roothub_fops fops = { + DEFAULT_ROOTHUB, + .handle_get_port_status = &musbotg_get_port_status, + .handle_clocks_on = (usb_clocks_fops_t)&musbotg_clocks_on, + .handle_clocks_off = (usb_clocks_fops_t)&musbotg_clocks_off, + .handle_pull_up = (usb_clocks_fops_t)&musbotg_pull_up, + .handle_pull_down = (usb_clocks_fops_t)&musbotg_pull_down, + .handle_wakeup_peer = (usb_clocks_fops_t)&musbotg_wakeup_peer, + }; + return generic_roothub_exec((struct usb_generic_softc *)sc, &fops, req, + pptr, plength); } static void From owner-p4-projects@FreeBSD.ORG Thu Aug 13 19:18:15 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1049C1065721; Thu, 13 Aug 2009 19:18:14 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 86EC8106566B for ; Thu, 13 Aug 2009 19:18:13 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 753708FC69 for ; Thu, 13 Aug 2009 19:18:13 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7DJID1G031256 for ; Thu, 13 Aug 2009 19:18:13 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7DJIDMY031254 for perforce@freebsd.org; Thu, 13 Aug 2009 19:18:13 GMT (envelope-from syl@FreeBSD.org) Date: Thu, 13 Aug 2009 19:18:13 GMT Message-Id: <200908131918.n7DJIDMY031254@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 167305 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 19:18:16 -0000 http://perforce.freebsd.org/chv.cgi?CH=167305 Change 167305 by syl@syl_atuin on 2009/08/13 19:17:34 Change the code to use generic_roothub_exec. Remove old usb descriptor code. Remove old roothub_exec code. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.c#19 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.c#19 (text+ko) ==== @@ -853,483 +853,21 @@ .start = s3c24dci_device_nonisoc_start, }; -/* - * s3c24dci root control support - * Simulate a hardware HUB by handling all the necessary requests. - */ - -static const struct usb_device_descriptor s3c24dci_devd = { - .bLength = sizeof(struct usb_device_descriptor), - .bDescriptorType = UDESC_DEVICE, - .bcdUSB = {0x00, 0x02}, - .bDeviceClass = UDCLASS_HUB, - .bDeviceSubClass = UDSUBCLASS_HUB, - .bDeviceProtocol = UDPROTO_HSHUBSTT, - .bMaxPacketSize = 64, - .bcdDevice = {0x00, 0x01}, - .iManufacturer = 1, - .iProduct = 2, - .bNumConfigurations = 1, -}; - -static const struct usb_device_qualifier s3c24dci_odevd = { - .bLength = sizeof(struct usb_device_qualifier), - .bDescriptorType = UDESC_DEVICE_QUALIFIER, - .bcdUSB = {0x00, 0x02}, - .bDeviceClass = UDCLASS_HUB, - .bDeviceSubClass = UDSUBCLASS_HUB, - .bDeviceProtocol = UDPROTO_FSHUB, - .bMaxPacketSize0 = 0, - .bNumConfigurations = 0, -}; - -static const struct s3c24dci_config_desc s3c24dci_confd = { - .confd = { - .bLength = sizeof(struct usb_config_descriptor), - .bDescriptorType = UDESC_CONFIG, - .wTotalLength[0] = sizeof(s3c24dci_confd), - .bNumInterface = 1, - .bConfigurationValue = 1, - .iConfiguration = 0, - .bmAttributes = UC_SELF_POWERED, - .bMaxPower = 0, - }, - .ifcd = { - .bLength = sizeof(struct usb_interface_descriptor), - .bDescriptorType = UDESC_INTERFACE, - .bNumEndpoints = 1, - .bInterfaceClass = UICLASS_HUB, - .bInterfaceSubClass = UISUBCLASS_HUB, - .bInterfaceProtocol = UIPROTO_HSHUBSTT, - }, - .endpd = { - .bLength = sizeof(struct usb_endpoint_descriptor), - .bDescriptorType = UDESC_ENDPOINT, - .bEndpointAddress = (UE_DIR_IN | S3C24_DCI_INTR_ENDPT), - .bmAttributes = UE_INTERRUPT, - .wMaxPacketSize[0] = 8, - .bInterval = 255, - }, -}; - -static const struct usb_hub_descriptor_min s3c24dci_hubd = { - .bDescLength = sizeof(s3c24dci_hubd), - .bDescriptorType = UDESC_HUB, - .bNbrPorts = 1, - .wHubCharacteristics[0] = - (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) & 0xFF, - .wHubCharacteristics[1] = - (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) >> 8, - .bPwrOn2PwrGood = 50, - .bHubContrCurrent = 0, - .DeviceRemovable = {0}, /* port is removable */ -}; - -#define STRING_LANG \ - 0x09, 0x04, /* American English */ - -#define STRING_VENDOR \ - 'S', 0, 'A', 0, 'M', 0, 'S', 0, 'U', 0, 'N', 0, 'G', 0 - -#define STRING_PRODUCT \ - 'D', 0, 'C', 0, 'I', 0, ' ', 0, 'R', 0, \ - 'o', 0, 'o', 0, 't', 0, ' ', 0, 'H', 0, \ - 'U', 0, 'B', 0, - -USB_MAKE_STRING_DESC(STRING_LANG, s3c24dci_langtab); -USB_MAKE_STRING_DESC(STRING_VENDOR, s3c24dci_vendor); -USB_MAKE_STRING_DESC(STRING_PRODUCT, s3c24dci_product); - static usb_error_t s3c24dci_roothub_exec(struct usb_device *udev, struct usb_device_request *req, const void **pptr, uint16_t *plength) { struct s3c24dci_softc *sc = S3C24_DCI_BUS2SC(udev->bus); - const void *ptr; - uint16_t len; - uint16_t value; - uint16_t index; - usb_error_t err; - - USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); - - /* buffer reset */ - ptr = (const void *)&sc->sc_hub_temp; - len = 0; - err = 0; - - value = UGETW(req->wValue); - index = UGETW(req->wIndex); - - /* demultiplex the control request */ - - switch (req->bmRequestType) { - case UT_READ_DEVICE: - switch (req->bRequest) { - case UR_GET_DESCRIPTOR: - goto tr_handle_get_descriptor; - case UR_GET_CONFIG: - goto tr_handle_get_config; - case UR_GET_STATUS: - goto tr_handle_get_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_DEVICE: - switch (req->bRequest) { - case UR_SET_ADDRESS: - goto tr_handle_set_address; - case UR_SET_CONFIG: - goto tr_handle_set_config; - case UR_CLEAR_FEATURE: - goto tr_valid; /* nop */ - case UR_SET_DESCRIPTOR: - goto tr_valid; /* nop */ - case UR_SET_FEATURE: - default: - goto tr_stalled; - } - break; - - case UT_WRITE_ENDPOINT: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - switch (UGETW(req->wValue)) { - case UF_ENDPOINT_HALT: - goto tr_handle_clear_halt; - case UF_DEVICE_REMOTE_WAKEUP: - goto tr_handle_clear_wakeup; - default: - goto tr_stalled; - } - break; - case UR_SET_FEATURE: - switch (UGETW(req->wValue)) { - case UF_ENDPOINT_HALT: - goto tr_handle_set_halt; - case UF_DEVICE_REMOTE_WAKEUP: - goto tr_handle_set_wakeup; - default: - goto tr_stalled; - } - break; - case UR_SYNCH_FRAME: - goto tr_valid; /* nop */ - default: - goto tr_stalled; - } - break; - - case UT_READ_ENDPOINT: - switch (req->bRequest) { - case UR_GET_STATUS: - goto tr_handle_get_ep_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_INTERFACE: - switch (req->bRequest) { - case UR_SET_INTERFACE: - goto tr_handle_set_interface; - case UR_CLEAR_FEATURE: - goto tr_valid; /* nop */ - case UR_SET_FEATURE: - default: - goto tr_stalled; - } - break; - - case UT_READ_INTERFACE: - switch (req->bRequest) { - case UR_GET_INTERFACE: - goto tr_handle_get_interface; - case UR_GET_STATUS: - goto tr_handle_get_iface_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_CLASS_INTERFACE: - case UT_WRITE_VENDOR_INTERFACE: - /* XXX forward */ - break; - - case UT_READ_CLASS_INTERFACE: - case UT_READ_VENDOR_INTERFACE: - /* XXX forward */ - break; - - case UT_WRITE_CLASS_DEVICE: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - goto tr_valid; - case UR_SET_DESCRIPTOR: - case UR_SET_FEATURE: - break; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_CLASS_OTHER: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - goto tr_handle_clear_port_feature; - case UR_SET_FEATURE: - goto tr_handle_set_port_feature; - case UR_CLEAR_TT_BUFFER: - case UR_RESET_TT: - case UR_STOP_TT: - goto tr_valid; - - default: - goto tr_stalled; - } - break; - - case UT_READ_CLASS_OTHER: - switch (req->bRequest) { - case UR_GET_TT_STATE: - goto tr_handle_get_tt_state; - case UR_GET_STATUS: - goto tr_handle_get_port_status; - default: - goto tr_stalled; - } - break; - - case UT_READ_CLASS_DEVICE: - switch (req->bRequest) { - case UR_GET_DESCRIPTOR: - goto tr_handle_get_class_descriptor; - case UR_GET_STATUS: - goto tr_handle_get_class_status; - - default: - goto tr_stalled; - } - break; - default: - goto tr_stalled; - } - goto tr_valid; - -tr_handle_get_descriptor: - switch (value >> 8) { - case UDESC_DEVICE: - if (value & 0xff) { - goto tr_stalled; - } - len = sizeof(s3c24dci_devd); - ptr = (const void *)&s3c24dci_devd; - goto tr_valid; - case UDESC_CONFIG: - if (value & 0xff) { - goto tr_stalled; - } - len = sizeof(s3c24dci_confd); - ptr = (const void *)&s3c24dci_confd; - goto tr_valid; - case UDESC_STRING: - switch (value & 0xff) { - case 0: /* Language table */ - len = sizeof(s3c24dci_langtab); - ptr = (const void *)&s3c24dci_langtab; - goto tr_valid; - - case 1: /* Vendor */ - len = sizeof(s3c24dci_vendor); - ptr = (const void *)&s3c24dci_vendor; - goto tr_valid; - - case 2: /* Product */ - len = sizeof(s3c24dci_product); - ptr = (const void *)&s3c24dci_product; - goto tr_valid; - default: - break; - } - break; - default: - goto tr_stalled; - } - goto tr_stalled; - -tr_handle_get_config: - len = 1; - sc->sc_hub_temp.wValue[0] = sc->sc_conf; - goto tr_valid; - -tr_handle_get_status: - len = 2; - USETW(sc->sc_hub_temp.wValue, UDS_SELF_POWERED); - goto tr_valid; - -tr_handle_set_address: - if (value & 0xFF00) { - goto tr_stalled; - } - sc->sc_rt_addr = value; - goto tr_valid; - -tr_handle_set_config: - if (value >= 2) { - goto tr_stalled; - } - sc->sc_conf = value; - goto tr_valid; - -tr_handle_get_interface: - len = 1; - sc->sc_hub_temp.wValue[0] = 0; - goto tr_valid; - -tr_handle_get_tt_state: -tr_handle_get_class_status: -tr_handle_get_iface_status: -tr_handle_get_ep_status: - len = 2; - USETW(sc->sc_hub_temp.wValue, 0); - goto tr_valid; - -tr_handle_set_halt: -tr_handle_set_interface: -tr_handle_set_wakeup: -tr_handle_clear_wakeup: -tr_handle_clear_halt: - goto tr_valid; - -tr_handle_clear_port_feature: - if (index != 1) { - goto tr_stalled; - } - DPRINTFN(9, "UR_CLEAR_PORT_FEATURE on port %d\n", index); - - switch (value) { - case UHF_PORT_SUSPEND: - s3c24dci_wakeup_peer(sc); - break; - - case UHF_PORT_ENABLE: - sc->sc_flags.port_enabled = 0; - break; - - case UHF_PORT_TEST: - case UHF_PORT_INDICATOR: - case UHF_C_PORT_ENABLE: - case UHF_C_PORT_OVER_CURRENT: - case UHF_C_PORT_RESET: - /* nops */ - break; - case UHF_PORT_POWER: - sc->sc_flags.port_powered = 0; - s3c24dci_pull_down(sc); - s3c24dci_clocks_off(sc); - break; - case UHF_C_PORT_CONNECTION: - sc->sc_flags.change_connect = 0; - break; - case UHF_C_PORT_SUSPEND: - sc->sc_flags.change_suspend = 0; - break; - default: - err = USB_ERR_IOERROR; - goto done; - } - goto tr_valid; - -tr_handle_set_port_feature: - if (index != 1) { - goto tr_stalled; - } - DPRINTFN(9, "UR_SET_PORT_FEATURE\n"); - - switch (value) { - case UHF_PORT_ENABLE: - sc->sc_flags.port_enabled = 1; - break; - case UHF_PORT_SUSPEND: - case UHF_PORT_RESET: - case UHF_PORT_TEST: - case UHF_PORT_INDICATOR: - /* nops */ - break; - case UHF_PORT_POWER: - sc->sc_flags.port_powered = 1; - break; - default: - err = USB_ERR_IOERROR; - goto done; - } - goto tr_valid; - -tr_handle_get_port_status: - - DPRINTFN(9, "UR_GET_PORT_STATUS\n"); - - if (index != 1) { - goto tr_stalled; - } - if (sc->sc_flags.status_vbus) { - s3c24dci_clocks_on(sc); - s3c24dci_pull_up(sc); - } else { - s3c24dci_pull_down(sc); - s3c24dci_clocks_off(sc); - } - - /* Select FULL-speed and Device Side Mode */ - - value = UPS_PORT_MODE_DEVICE; - - if (sc->sc_flags.port_powered) { - value |= UPS_PORT_POWER; - } - if (sc->sc_flags.port_enabled) { - value |= UPS_PORT_ENABLED; - } - if (sc->sc_flags.status_vbus && - sc->sc_flags.status_bus_reset) { - value |= UPS_CURRENT_CONNECT_STATUS; - } - if (sc->sc_flags.status_suspend) { - value |= UPS_SUSPEND; - } - USETW(sc->sc_hub_temp.ps.wPortStatus, value); - - value = 0; - - if (sc->sc_flags.change_connect) { - value |= UPS_C_CONNECT_STATUS; - - } - if (sc->sc_flags.change_suspend) { - value |= UPS_C_SUSPEND; - } - USETW(sc->sc_hub_temp.ps.wPortChange, value); - len = sizeof(sc->sc_hub_temp.ps); - goto tr_valid; - -tr_handle_get_class_descriptor: - if (value & 0xFF) { - goto tr_stalled; - } - ptr = (const void *)&s3c24dci_hubd; - len = sizeof(s3c24dci_hubd); - goto tr_valid; - -tr_stalled: - err = USB_ERR_STALLED; -tr_valid: -done: - *plength = len; - *pptr = ptr; - return (err); + static const struct usb_roothub_fops fops = { + DEFAULT_ROOTHUB, + .handle_clocks_on = (usb_clocks_fops_t)&s3c24dci_clocks_on, + .handle_clocks_off = (usb_clocks_fops_t)&s3c24dci_clocks_off, + .handle_pull_up = (usb_clocks_fops_t)&s3c24dci_pull_up, + .handle_pull_down = (usb_clocks_fops_t)&s3c24dci_pull_down, + .handle_wakeup_peer = (usb_clocks_fops_t)&s3c24dci_wakeup_peer, + }; + return generic_roothub_exec((struct usb_generic_softc *)sc, &fops, req, + pptr, plength); } static void From owner-p4-projects@FreeBSD.ORG Thu Aug 13 19:18:17 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4321610656AD; Thu, 13 Aug 2009 19:18:14 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9ED281065675 for ; Thu, 13 Aug 2009 19:18:13 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 8D7918FC6B for ; Thu, 13 Aug 2009 19:18:13 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7DJIDY7031261 for ; Thu, 13 Aug 2009 19:18:13 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7DJIDct031259 for perforce@freebsd.org; Thu, 13 Aug 2009 19:18:13 GMT (envelope-from syl@FreeBSD.org) Date: Thu, 13 Aug 2009 19:18:13 GMT Message-Id: <200908131918.n7DJIDct031259@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 167306 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 19:18:18 -0000 http://perforce.freebsd.org/chv.cgi?CH=167306 Change 167306 by syl@syl_atuin on 2009/08/13 19:17:47 Change the code to use generic_roothub_exec. Remove old usb descriptor code. Remove old roothub_exec code. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/uss820dci.c#11 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/uss820dci.c#11 (text+ko) ==== @@ -1623,481 +1623,19 @@ .start = uss820dci_device_isoc_fs_start, }; -/*------------------------------------------------------------------------* - * uss820dci root control support - *------------------------------------------------------------------------* - * Simulate a hardware HUB by handling all the necessary requests. - *------------------------------------------------------------------------*/ - -static const struct usb_device_descriptor uss820dci_devd = { - .bLength = sizeof(struct usb_device_descriptor), - .bDescriptorType = UDESC_DEVICE, - .bcdUSB = {0x00, 0x02}, - .bDeviceClass = UDCLASS_HUB, - .bDeviceSubClass = UDSUBCLASS_HUB, - .bDeviceProtocol = UDPROTO_HSHUBSTT, - .bMaxPacketSize = 64, - .bcdDevice = {0x00, 0x01}, - .iManufacturer = 1, - .iProduct = 2, - .bNumConfigurations = 1, -}; - -static const struct usb_device_qualifier uss820dci_odevd = { - .bLength = sizeof(struct usb_device_qualifier), - .bDescriptorType = UDESC_DEVICE_QUALIFIER, - .bcdUSB = {0x00, 0x02}, - .bDeviceClass = UDCLASS_HUB, - .bDeviceSubClass = UDSUBCLASS_HUB, - .bDeviceProtocol = UDPROTO_FSHUB, - .bMaxPacketSize0 = 0, - .bNumConfigurations = 0, -}; - -static const struct uss820dci_config_desc uss820dci_confd = { - .confd = { - .bLength = sizeof(struct usb_config_descriptor), - .bDescriptorType = UDESC_CONFIG, - .wTotalLength[0] = sizeof(uss820dci_confd), - .bNumInterface = 1, - .bConfigurationValue = 1, - .iConfiguration = 0, - .bmAttributes = UC_SELF_POWERED, - .bMaxPower = 0, - }, - .ifcd = { - .bLength = sizeof(struct usb_interface_descriptor), - .bDescriptorType = UDESC_INTERFACE, - .bNumEndpoints = 1, - .bInterfaceClass = UICLASS_HUB, - .bInterfaceSubClass = UISUBCLASS_HUB, - .bInterfaceProtocol = UIPROTO_HSHUBSTT, - }, - - .endpd = { - .bLength = sizeof(struct usb_endpoint_descriptor), - .bDescriptorType = UDESC_ENDPOINT, - .bEndpointAddress = (UE_DIR_IN | USS820_DCI_INTR_ENDPT), - .bmAttributes = UE_INTERRUPT, - .wMaxPacketSize[0] = 8, - .bInterval = 255, - }, -}; - -static const struct usb_hub_descriptor_min uss820dci_hubd = { - .bDescLength = sizeof(uss820dci_hubd), - .bDescriptorType = UDESC_HUB, - .bNbrPorts = 1, - .wHubCharacteristics[0] = - (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) & 0xFF, - .wHubCharacteristics[1] = - (UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL) >> 8, - .bPwrOn2PwrGood = 50, - .bHubContrCurrent = 0, - .DeviceRemovable = {0}, /* port is removable */ -}; - -#define STRING_LANG \ - 0x09, 0x04, /* American English */ - -#define STRING_VENDOR \ - 'A', 0, 'G', 0, 'E', 0, 'R', 0, 'E', 0 - -#define STRING_PRODUCT \ - 'D', 0, 'C', 0, 'I', 0, ' ', 0, 'R', 0, \ - 'o', 0, 'o', 0, 't', 0, ' ', 0, 'H', 0, \ - 'U', 0, 'B', 0, - -USB_MAKE_STRING_DESC(STRING_LANG, uss820dci_langtab); -USB_MAKE_STRING_DESC(STRING_VENDOR, uss820dci_vendor); -USB_MAKE_STRING_DESC(STRING_PRODUCT, uss820dci_product); - static usb_error_t uss820dci_roothub_exec(struct usb_device *udev, struct usb_device_request *req, const void **pptr, uint16_t *plength) { struct uss820dci_softc *sc = USS820_DCI_BUS2SC(udev->bus); - const void *ptr; - uint16_t len; - uint16_t value; - uint16_t index; - usb_error_t err; - - USB_BUS_LOCK_ASSERT(&sc->sc_bus, MA_OWNED); - - /* buffer reset */ - ptr = (const void *)&sc->sc_hub_temp; - len = 0; - err = 0; - - value = UGETW(req->wValue); - index = UGETW(req->wIndex); - - /* demultiplex the control request */ - - switch (req->bmRequestType) { - case UT_READ_DEVICE: - switch (req->bRequest) { - case UR_GET_DESCRIPTOR: - goto tr_handle_get_descriptor; - case UR_GET_CONFIG: - goto tr_handle_get_config; - case UR_GET_STATUS: - goto tr_handle_get_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_DEVICE: - switch (req->bRequest) { - case UR_SET_ADDRESS: - goto tr_handle_set_address; - case UR_SET_CONFIG: - goto tr_handle_set_config; - case UR_CLEAR_FEATURE: - goto tr_valid; /* nop */ - case UR_SET_DESCRIPTOR: - goto tr_valid; /* nop */ - case UR_SET_FEATURE: - default: - goto tr_stalled; - } - break; - - case UT_WRITE_ENDPOINT: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - switch (UGETW(req->wValue)) { - case UF_ENDPOINT_HALT: - goto tr_handle_clear_halt; - case UF_DEVICE_REMOTE_WAKEUP: - goto tr_handle_clear_wakeup; - default: - goto tr_stalled; - } - break; - case UR_SET_FEATURE: - switch (UGETW(req->wValue)) { - case UF_ENDPOINT_HALT: - goto tr_handle_set_halt; - case UF_DEVICE_REMOTE_WAKEUP: - goto tr_handle_set_wakeup; - default: - goto tr_stalled; - } - break; - case UR_SYNCH_FRAME: - goto tr_valid; /* nop */ - default: - goto tr_stalled; - } - break; - - case UT_READ_ENDPOINT: - switch (req->bRequest) { - case UR_GET_STATUS: - goto tr_handle_get_ep_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_INTERFACE: - switch (req->bRequest) { - case UR_SET_INTERFACE: - goto tr_handle_set_interface; - case UR_CLEAR_FEATURE: - goto tr_valid; /* nop */ - case UR_SET_FEATURE: - default: - goto tr_stalled; - } - break; - - case UT_READ_INTERFACE: - switch (req->bRequest) { - case UR_GET_INTERFACE: - goto tr_handle_get_interface; - case UR_GET_STATUS: - goto tr_handle_get_iface_status; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_CLASS_INTERFACE: - case UT_WRITE_VENDOR_INTERFACE: - /* XXX forward */ - break; - - case UT_READ_CLASS_INTERFACE: - case UT_READ_VENDOR_INTERFACE: - /* XXX forward */ - break; - - case UT_WRITE_CLASS_DEVICE: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - goto tr_valid; - case UR_SET_DESCRIPTOR: - case UR_SET_FEATURE: - break; - default: - goto tr_stalled; - } - break; - - case UT_WRITE_CLASS_OTHER: - switch (req->bRequest) { - case UR_CLEAR_FEATURE: - goto tr_handle_clear_port_feature; - case UR_SET_FEATURE: - goto tr_handle_set_port_feature; - case UR_CLEAR_TT_BUFFER: - case UR_RESET_TT: - case UR_STOP_TT: - goto tr_valid; - - default: - goto tr_stalled; - } - break; - - case UT_READ_CLASS_OTHER: - switch (req->bRequest) { - case UR_GET_TT_STATE: - goto tr_handle_get_tt_state; - case UR_GET_STATUS: - goto tr_handle_get_port_status; - default: - goto tr_stalled; - } - break; - - case UT_READ_CLASS_DEVICE: - switch (req->bRequest) { - case UR_GET_DESCRIPTOR: - goto tr_handle_get_class_descriptor; - case UR_GET_STATUS: - goto tr_handle_get_class_status; - - default: - goto tr_stalled; - } - break; - default: - goto tr_stalled; - } - goto tr_valid; - -tr_handle_get_descriptor: - switch (value >> 8) { - case UDESC_DEVICE: - if (value & 0xff) { - goto tr_stalled; - } - len = sizeof(uss820dci_devd); - ptr = (const void *)&uss820dci_devd; - goto tr_valid; - case UDESC_CONFIG: - if (value & 0xff) { - goto tr_stalled; - } - len = sizeof(uss820dci_confd); - ptr = (const void *)&uss820dci_confd; - goto tr_valid; - case UDESC_STRING: - switch (value & 0xff) { - case 0: /* Language table */ - len = sizeof(uss820dci_langtab); - ptr = (const void *)&uss820dci_langtab; - goto tr_valid; - - case 1: /* Vendor */ - len = sizeof(uss820dci_vendor); - ptr = (const void *)&uss820dci_vendor; - goto tr_valid; - - case 2: /* Product */ - len = sizeof(uss820dci_product); - ptr = (const void *)&uss820dci_product; - goto tr_valid; - default: - break; - } - break; - default: - goto tr_stalled; - } - goto tr_stalled; - -tr_handle_get_config: - len = 1; - sc->sc_hub_temp.wValue[0] = sc->sc_conf; - goto tr_valid; - -tr_handle_get_status: - len = 2; - USETW(sc->sc_hub_temp.wValue, UDS_SELF_POWERED); - goto tr_valid; - -tr_handle_set_address: - if (value & 0xFF00) { - goto tr_stalled; - } - sc->sc_rt_addr = value; - goto tr_valid; - -tr_handle_set_config: - if (value >= 2) { - goto tr_stalled; - } - sc->sc_conf = value; - goto tr_valid; - -tr_handle_get_interface: - len = 1; - sc->sc_hub_temp.wValue[0] = 0; - goto tr_valid; - -tr_handle_get_tt_state: -tr_handle_get_class_status: -tr_handle_get_iface_status: -tr_handle_get_ep_status: - len = 2; - USETW(sc->sc_hub_temp.wValue, 0); - goto tr_valid; - -tr_handle_set_halt: -tr_handle_set_interface: -tr_handle_set_wakeup: -tr_handle_clear_wakeup: -tr_handle_clear_halt: - goto tr_valid; - -tr_handle_clear_port_feature: - if (index != 1) { - goto tr_stalled; - } - DPRINTFN(9, "UR_CLEAR_PORT_FEATURE on port %d\n", index); - - switch (value) { - case UHF_PORT_SUSPEND: - uss820dci_wakeup_peer(sc); - break; - - case UHF_PORT_ENABLE: - sc->sc_flags.port_enabled = 0; - break; - - case UHF_PORT_TEST: - case UHF_PORT_INDICATOR: - case UHF_C_PORT_ENABLE: - case UHF_C_PORT_OVER_CURRENT: - case UHF_C_PORT_RESET: - /* nops */ - break; - case UHF_PORT_POWER: - sc->sc_flags.port_powered = 0; - uss820dci_pull_down(sc); - break; - case UHF_C_PORT_CONNECTION: - sc->sc_flags.change_connect = 0; - break; - case UHF_C_PORT_SUSPEND: - sc->sc_flags.change_suspend = 0; - break; - default: - err = USB_ERR_IOERROR; - goto done; - } - goto tr_valid; - -tr_handle_set_port_feature: - if (index != 1) { - goto tr_stalled; - } - DPRINTFN(9, "UR_SET_PORT_FEATURE\n"); - - switch (value) { - case UHF_PORT_ENABLE: - sc->sc_flags.port_enabled = 1; - break; - case UHF_PORT_SUSPEND: - case UHF_PORT_RESET: - case UHF_PORT_TEST: - case UHF_PORT_INDICATOR: - /* nops */ - break; - case UHF_PORT_POWER: - sc->sc_flags.port_powered = 1; - break; - default: - err = USB_ERR_IOERROR; - goto done; - } - goto tr_valid; - -tr_handle_get_port_status: - - DPRINTFN(9, "UR_GET_PORT_STATUS\n"); - - if (index != 1) { - goto tr_stalled; - } - if (sc->sc_flags.status_vbus) { - uss820dci_pull_up(sc); - } else { - uss820dci_pull_down(sc); - } - - /* Select FULL-speed and Device Side Mode */ - - value = UPS_PORT_MODE_DEVICE; - - if (sc->sc_flags.port_powered) { - value |= UPS_PORT_POWER; - } - if (sc->sc_flags.port_enabled) { - value |= UPS_PORT_ENABLED; - } - if (sc->sc_flags.status_vbus && - sc->sc_flags.status_bus_reset) { - value |= UPS_CURRENT_CONNECT_STATUS; - } - if (sc->sc_flags.status_suspend) { - value |= UPS_SUSPEND; - } - USETW(sc->sc_hub_temp.ps.wPortStatus, value); - - value = 0; - - if (sc->sc_flags.change_connect) { - value |= UPS_C_CONNECT_STATUS; - } - if (sc->sc_flags.change_suspend) { - value |= UPS_C_SUSPEND; - } - USETW(sc->sc_hub_temp.ps.wPortChange, value); - len = sizeof(sc->sc_hub_temp.ps); - goto tr_valid; - -tr_handle_get_class_descriptor: - if (value & 0xFF) { - goto tr_stalled; - } - ptr = (const void *)&uss820dci_hubd; - len = sizeof(uss820dci_hubd); - goto tr_valid; - -tr_stalled: - err = USB_ERR_STALLED; -tr_valid: -done: - *plength = len; - *pptr = ptr; - return (err); + static const struct usb_roothub_fops fops = { + DEFAULT_ROOTHUB, + .handle_pull_up = (usb_clocks_fops_t)&uss820dci_pull_up, + .handle_pull_down = (usb_clocks_fops_t)&uss820dci_pull_down, + .handle_wakeup_peer = (usb_clocks_fops_t)&uss820dci_wakeup_peer, + }; + return generic_roothub_exec((struct usb_generic_softc *)sc, &fops, req, + pptr, plength); } static void From owner-p4-projects@FreeBSD.ORG Thu Aug 13 20:15:17 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 87374106566C; Thu, 13 Aug 2009 20:15:16 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 45916106564A for ; Thu, 13 Aug 2009 20:15:16 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 33CBD8FC4D for ; Thu, 13 Aug 2009 20:15:16 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7DKFGqK036392 for ; Thu, 13 Aug 2009 20:15:16 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7DKFFdT036390 for perforce@freebsd.org; Thu, 13 Aug 2009 20:15:15 GMT (envelope-from zec@fer.hr) Date: Thu, 13 Aug 2009 20:15:15 GMT Message-Id: <200908132015.n7DKFFdT036390@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167307 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Aug 2009 20:15:19 -0000 http://perforce.freebsd.org/chv.cgi?CH=167307 Change 167307 by zec@zec_tpx32 on 2009/08/13 20:14:15 IFC @ 167301 Affected files ... .. //depot/projects/vimage-commit2/src/sys/amd64/amd64/local_apic.c#12 integrate .. //depot/projects/vimage-commit2/src/sys/amd64/amd64/mp_machdep.c#17 integrate .. //depot/projects/vimage-commit2/src/sys/amd64/amd64/trap.c#7 integrate .. //depot/projects/vimage-commit2/src/sys/amd64/conf/GENERIC#19 integrate .. //depot/projects/vimage-commit2/src/sys/amd64/conf/NOTES#10 integrate .. //depot/projects/vimage-commit2/src/sys/amd64/conf/XENHVM#4 integrate .. //depot/projects/vimage-commit2/src/sys/amd64/include/apicvar.h#6 integrate .. //depot/projects/vimage-commit2/src/sys/amd64/include/smp.h#6 integrate .. //depot/projects/vimage-commit2/src/sys/arm/arm/pmap.c#11 integrate .. //depot/projects/vimage-commit2/src/sys/cddl/compat/opensolaris/kern/opensolaris.c#6 integrate .. //depot/projects/vimage-commit2/src/sys/conf/options.amd64#4 integrate .. //depot/projects/vimage-commit2/src/sys/conf/options.i386#5 integrate .. //depot/projects/vimage-commit2/src/sys/conf/options.pc98#4 integrate .. //depot/projects/vimage-commit2/src/sys/dev/drm/drm_pciids.h#8 integrate .. //depot/projects/vimage-commit2/src/sys/dev/drm/r600_cp.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/dev/drm/radeon_drv.h#8 integrate .. //depot/projects/vimage-commit2/src/sys/dev/isp/isp_freebsd.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/i386/conf/GENERIC#19 integrate .. //depot/projects/vimage-commit2/src/sys/i386/conf/NOTES#18 integrate .. //depot/projects/vimage-commit2/src/sys/i386/i386/local_apic.c#13 integrate .. //depot/projects/vimage-commit2/src/sys/i386/i386/mp_machdep.c#15 integrate .. //depot/projects/vimage-commit2/src/sys/i386/i386/trap.c#7 integrate .. //depot/projects/vimage-commit2/src/sys/i386/include/apicvar.h#8 integrate .. //depot/projects/vimage-commit2/src/sys/i386/include/smp.h#7 integrate .. //depot/projects/vimage-commit2/src/sys/i386/xen/mp_machdep.c#12 integrate .. //depot/projects/vimage-commit2/src/sys/ia64/ia64/interrupt.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/ia64/include/smp.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/kern/kern_jail.c#31 integrate .. //depot/projects/vimage-commit2/src/sys/kern/kern_shutdown.c#9 integrate .. //depot/projects/vimage-commit2/src/sys/kern/kern_sysctl.c#17 integrate .. //depot/projects/vimage-commit2/src/sys/kern/subr_kdb.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/kern/subr_pcpu.c#7 integrate .. //depot/projects/vimage-commit2/src/sys/kern/subr_smp.c#8 integrate .. //depot/projects/vimage-commit2/src/sys/mips/include/smp.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/mips/mips/mp_machdep.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/net/bpf.c#23 integrate .. //depot/projects/vimage-commit2/src/sys/net/bpf_buffer.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/net/bpf_zerocopy.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/net/bpfdesc.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/net/rtsock.c#35 integrate .. //depot/projects/vimage-commit2/src/sys/net/vnet.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/net/vnet.h#32 integrate .. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211.c#23 integrate .. //depot/projects/vimage-commit2/src/sys/netatalk/at_control.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/netinet6/in6.c#26 integrate .. //depot/projects/vimage-commit2/src/sys/pc98/conf/NOTES#11 integrate .. //depot/projects/vimage-commit2/src/sys/powerpc/include/smp.h#5 integrate .. //depot/projects/vimage-commit2/src/sys/powerpc/powerpc/mp_machdep.c#6 integrate .. //depot/projects/vimage-commit2/src/sys/security/audit/audit.h#9 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/include/smp.h#4 integrate .. //depot/projects/vimage-commit2/src/sys/sun4v/include/smp.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/sys/jail.h#17 integrate .. //depot/projects/vimage-commit2/src/sys/sys/pcpu.h#8 integrate .. //depot/projects/vimage-commit2/src/sys/sys/smp.h#4 integrate .. //depot/projects/vimage-commit2/src/sys/sys/sysctl.h#27 integrate .. //depot/projects/vimage-commit2/src/sys/xdr/xdr_mbuf.c#4 integrate Differences ... ==== //depot/projects/vimage-commit2/src/sys/amd64/amd64/local_apic.c#12 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.58 2009/07/01 17:20:07 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.59 2009/08/13 17:09:45 attilio Exp $"); #include "opt_hwpmc_hooks.h" #include "opt_kdtrace.h" @@ -1238,8 +1238,17 @@ KASSERT((vector & ~APIC_VECTOR_MASK) == 0, ("%s: invalid vector %d", __func__, vector)); - icrlo = vector | APIC_DELMODE_FIXED | APIC_DESTMODE_PHY | - APIC_LEVEL_DEASSERT | APIC_TRIGMOD_EDGE; + icrlo = APIC_DESTMODE_PHY | APIC_TRIGMOD_EDGE; + + /* + * IPI_STOP_HARD is just a "fake" vector used to send a NMI. + * Use special rules regard NMI if passed, otherwise specify + * the vector. + */ + if (vector == IPI_STOP_HARD) + icrlo |= APIC_DELMODE_NMI | APIC_LEVEL_ASSERT; + else + icrlo |= vector | APIC_DELMODE_FIXED | APIC_LEVEL_DEASSERT; destfield = 0; switch (dest) { case APIC_IPI_DEST_SELF: ==== //depot/projects/vimage-commit2/src/sys/amd64/amd64/mp_machdep.c#17 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.309 2009/06/23 22:42:39 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.310 2009/08/13 17:09:45 attilio Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -114,31 +114,12 @@ extern inthand_t IDTVEC(fast_syscall), IDTVEC(fast_syscall32); -#ifdef STOP_NMI -static volatile cpumask_t ipi_nmi_pending; - -static void ipi_nmi_selected(cpumask_t cpus); -#endif - /* * Local data and functions. */ -#ifdef STOP_NMI -/* - * Provide an alternate method of stopping other CPUs. If another CPU has - * disabled interrupts the conventional STOP IPI will be blocked. This - * NMI-based stop should get through in that case. - */ -static int stop_cpus_with_nmi = 1; -SYSCTL_INT(_debug, OID_AUTO, stop_cpus_with_nmi, CTLTYPE_INT | CTLFLAG_RW, - &stop_cpus_with_nmi, 0, ""); -TUNABLE_INT("debug.stop_cpus_with_nmi", &stop_cpus_with_nmi); -#else -#define stop_cpus_with_nmi 0 -#endif - static u_int logical_cpus; +static volatile cpumask_t ipi_nmi_pending; /* used to hold the AP's until we are ready to release them */ static struct mtx ap_boot_mtx; @@ -1158,12 +1139,14 @@ ipi = IPI_BITMAP_VECTOR; } -#ifdef STOP_NMI - if (ipi == IPI_STOP && stop_cpus_with_nmi) { - ipi_nmi_selected(cpus); - return; - } -#endif + /* + * IPI_STOP_HARD maps to a NMI and the trap handler needs a bit + * of help in order to understand what is the source. + * Set the mask of receiving CPUs for this purpose. + */ + if (ipi == IPI_STOP_HARD) + atomic_set_int(&ipi_nmi_pending, cpus); + CTR3(KTR_SMP, "%s: cpus: %x ipi: %x", __func__, cpus, ipi); while ((cpu = ffs(cpus)) != 0) { cpu--; @@ -1194,64 +1177,43 @@ ipi_all_but_self(u_int ipi) { - if (IPI_IS_BITMAPED(ipi) || (ipi == IPI_STOP && stop_cpus_with_nmi)) { + if (IPI_IS_BITMAPED(ipi)) { ipi_selected(PCPU_GET(other_cpus), ipi); return; } + + /* + * IPI_STOP_HARD maps to a NMI and the trap handler needs a bit + * of help in order to understand what is the source. + * Set the mask of receiving CPUs for this purpose. + */ + if (ipi == IPI_STOP_HARD) + atomic_set_int(&ipi_nmi_pending, PCPU_GET(other_cpus)); + CTR2(KTR_SMP, "%s: ipi: %x", __func__, ipi); lapic_ipi_vectored(ipi, APIC_IPI_DEST_OTHERS); } -#ifdef STOP_NMI -/* - * send NMI IPI to selected CPUs - */ - -#define BEFORE_SPIN 1000000 - -static void -ipi_nmi_selected(cpumask_t cpus) -{ - int cpu; - register_t icrlo; - - icrlo = APIC_DELMODE_NMI | APIC_DESTMODE_PHY | APIC_LEVEL_ASSERT - | APIC_TRIGMOD_EDGE; - - CTR2(KTR_SMP, "%s: cpus: %x nmi", __func__, cpus); - - atomic_set_int(&ipi_nmi_pending, cpus); - - while ((cpu = ffs(cpus)) != 0) { - cpu--; - cpus &= ~(1 << cpu); - - KASSERT(cpu_apic_ids[cpu] != -1, - ("IPI NMI to non-existent CPU %d", cpu)); - - /* Wait for an earlier IPI to finish. */ - if (!lapic_ipi_wait(BEFORE_SPIN)) - panic("ipi_nmi_selected: previous IPI has not cleared"); - - lapic_ipi_raw(icrlo, cpu_apic_ids[cpu]); - } -} - int -ipi_nmi_handler(void) +ipi_nmi_handler() { - int cpumask = PCPU_GET(cpumask); + cpumask_t cpumask; - if (!(ipi_nmi_pending & cpumask)) - return 1; + /* + * As long as there is not a simple way to know about a NMI's + * source, if the bitmask for the current CPU is present in + * the global pending bitword an IPI_STOP_HARD has been issued + * and should be handled. + */ + cpumask = PCPU_GET(cpumask); + if ((ipi_nmi_pending & cpumask) == 0) + return (1); atomic_clear_int(&ipi_nmi_pending, cpumask); cpustop_handler(); - return 0; + return (0); } -#endif /* STOP_NMI */ - /* * Handle an IPI_STOP by saving our current context and spinning until we * are resumed. ==== //depot/projects/vimage-commit2/src/sys/amd64/amd64/trap.c#7 (text+ko) ==== @@ -38,7 +38,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.332 2009/05/13 17:53:04 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.333 2009/08/13 17:09:45 attilio Exp $"); /* * AMD64 Trap and System call handling @@ -239,13 +239,11 @@ type = frame->tf_trapno; #ifdef SMP -#ifdef STOP_NMI /* Handler for NMI IPIs used for stopping CPUs. */ if (type == T_NMI) { if (ipi_nmi_handler() == 0) goto out; } -#endif /* STOP_NMI */ #endif /* SMP */ #ifdef KDB ==== //depot/projects/vimage-commit2/src/sys/amd64/conf/GENERIC#19 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.531 2009/07/11 15:02:45 rpaulo Exp $ +# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.532 2009/08/13 17:09:45 attilio Exp $ cpu HAMMER ident GENERIC @@ -69,7 +69,6 @@ options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed. options KBD_INSTALL_CDEV # install a CDEV entry in /dev -options STOP_NMI # Stop CPUS using NMI instead of IPI options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) options AUDIT # Security event auditing options MAC # TrustedBSD MAC Framework ==== //depot/projects/vimage-commit2/src/sys/amd64/conf/NOTES#10 (text+ko) ==== @@ -4,7 +4,7 @@ # This file contains machine dependent kernel configuration notes. For # machine independent notes, look in /sys/conf/NOTES. # -# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.91 2009/06/08 20:07:16 jkim Exp $ +# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.92 2009/08/13 17:09:45 attilio Exp $ # # @@ -30,11 +30,6 @@ # options MP_WATCHDOG -# -# Debugging options. -# -options STOP_NMI # Stop CPUS using NMI instead of IPI - ##################################################################### ==== //depot/projects/vimage-commit2/src/sys/amd64/conf/XENHVM#4 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/amd64/conf/XENHVM,v 1.3 2009/05/10 00:00:25 kuriyama Exp $ +# $FreeBSD: src/sys/amd64/conf/XENHVM,v 1.4 2009/08/13 17:09:45 attilio Exp $ cpu HAMMER ident GENERIC @@ -68,7 +68,6 @@ options SYSVSEM # SYSV-style semaphores options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions options KBD_INSTALL_CDEV # install a CDEV entry in /dev -options STOP_NMI # Stop CPUS using NMI instead of IPI options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) options AUDIT # Security event auditing #options KDTRACE_FRAME # Ensure frames are compiled in ==== //depot/projects/vimage-commit2/src/sys/amd64/include/apicvar.h#6 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/apicvar.h,v 1.29 2009/05/02 12:20:43 mav Exp $ + * $FreeBSD: src/sys/amd64/include/apicvar.h,v 1.30 2009/08/13 17:09:45 attilio Exp $ */ #ifndef _MACHINE_APICVAR_H_ @@ -102,11 +102,6 @@ * smp_ipi_mtx and waits for the completion of the IPI (Only one IPI user * at a time) The second group uses a single interrupt and a bitmap to avoid * redundant IPI interrupts. - * - * Right now IPI_STOP used by kdb shares the interrupt priority class with - * the two IPI groups mentioned above. As such IPI_STOP may cause a deadlock. - * Eventually IPI_STOP should use NMI IPIs - this would eliminate this and - * other deadlocks caused by IPI_STOP. */ /* Interrupts for local APIC LVT entries other than the timer. */ @@ -134,6 +129,7 @@ #define IPI_STOP (APIC_IPI_INTS + 7) /* Stop CPU until restarted. */ #define IPI_SUSPEND (APIC_IPI_INTS + 8) /* Suspend CPU until restarted. */ +#define IPI_STOP_HARD (APIC_IPI_INTS + 9) /* Stop CPU with a NMI. */ /* * The spurious interrupt can share the priority class with the IPIs since ==== //depot/projects/vimage-commit2/src/sys/amd64/include/smp.h#6 (text+ko) ==== @@ -6,7 +6,7 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * - * $FreeBSD: src/sys/amd64/include/smp.h,v 1.96 2009/05/14 17:43:00 attilio Exp $ + * $FreeBSD: src/sys/amd64/include/smp.h,v 1.97 2009/08/13 17:09:45 attilio Exp $ * */ @@ -52,6 +52,7 @@ void cpustop_handler(void); void cpususpend_handler(void); void init_secondary(void); +int ipi_nmi_handler(void); void ipi_selected(cpumask_t cpus, u_int ipi); void ipi_all_but_self(u_int ipi); void ipi_bitmap_handler(struct trapframe frame); @@ -66,10 +67,6 @@ void smp_invltlb(void); void smp_masked_invltlb(cpumask_t mask); -#ifdef STOP_NMI -int ipi_nmi_handler(void); -#endif - #endif /* !LOCORE */ #endif /* SMP */ ==== //depot/projects/vimage-commit2/src/sys/arm/arm/pmap.c#11 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.113 2009/07/24 13:50:29 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.114 2009/08/13 15:56:09 raj Exp $"); #include #include #include @@ -1212,7 +1212,7 @@ CTR4(KTR_PMAP, "pmap_l2cache_wbinv_range: pmap %p is_kernel %d " "va 0x%08x len 0x%x ", pm, pm == pmap_kernel(), va, rest); if (pmap_get_pde_pte(pm, va, &pde, &ptep) && l2pte_valid(*ptep)) - cpu_l2cache_wb_range(va, rest); + cpu_l2cache_wbinv_range(va, rest); len -= rest; va += rest; ==== //depot/projects/vimage-commit2/src/sys/cddl/compat/opensolaris/kern/opensolaris.c#6 (text+ko) ==== @@ -22,7 +22,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/cddl/compat/opensolaris/kern/opensolaris.c,v 1.4 2009/06/13 15:39:12 jamie Exp $ + * $FreeBSD: src/sys/cddl/compat/opensolaris/kern/opensolaris.c,v 1.5 2009/08/13 12:28:30 trasz Exp $ * */ @@ -49,10 +49,6 @@ { int i; - printf("This module (opensolaris) contains code covered by the\n"); - printf("Common Development and Distribution License (CDDL)\n"); - printf("see http://opensolaris.org/os/licensing/opensolaris_license/\n"); - /* * "Enable" all CPUs even though they may not exist just so * that the asserts work. On FreeBSD, if a CPU exists, it is ==== //depot/projects/vimage-commit2/src/sys/conf/options.amd64#4 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options.amd64,v 1.35 2009/03/11 15:30:12 dfr Exp $ +# $FreeBSD: src/sys/conf/options.amd64,v 1.36 2009/08/13 17:09:45 attilio Exp $ # Options specific to AMD64 platform kernels AUTO_EOI_1 opt_auto_eoi.h @@ -52,7 +52,6 @@ DEV_ATPIC opt_atpic.h # Debugging -STOP_NMI opt_cpu.h KDTRACE_FRAME opt_kdtrace.h # BPF just-in-time compiler ==== //depot/projects/vimage-commit2/src/sys/conf/options.i386#5 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options.i386,v 1.244 2009/02/06 20:57:10 wkoszek Exp $ +# $FreeBSD: src/sys/conf/options.i386,v 1.245 2009/08/13 17:09:45 attilio Exp $ # Options specific to the i386 platform kernels AUTO_EOI_1 opt_auto_eoi.h @@ -110,7 +110,6 @@ # Debugging NPX_DEBUG opt_npx.h -STOP_NMI opt_cpu.h # BPF just-in-time compiler BPF_JITTER opt_bpf.h ==== //depot/projects/vimage-commit2/src/sys/conf/options.pc98#4 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options.pc98,v 1.205 2009/02/06 20:57:10 wkoszek Exp $ +# $FreeBSD: src/sys/conf/options.pc98,v 1.206 2009/08/13 17:09:45 attilio Exp $ # Options specific to the pc98 platform kernels AUTO_EOI_1 opt_auto_eoi.h @@ -95,7 +95,6 @@ # Debugging NPX_DEBUG opt_npx.h -STOP_NMI opt_cpu.h AGP_DEBUG opt_agp.h # BPF just-in-time compiler ==== //depot/projects/vimage-commit2/src/sys/dev/drm/drm_pciids.h#8 (text+ko) ==== @@ -1,5 +1,5 @@ /* - * $FreeBSD: src/sys/dev/drm/drm_pciids.h,v 1.16 2009/07/09 16:39:28 rnoland Exp $ + * $FreeBSD: src/sys/dev/drm/drm_pciids.h,v 1.18 2009/08/12 12:57:02 rnoland Exp $ */ /* This file is auto-generated from the drm_pciids.txt in the DRM CVS @@ -259,9 +259,12 @@ {0x1002, 0x940F, CHIP_R600|RADEON_NEW_MEMMAP, "ATI FireGL V7600"}, \ {0x1002, 0x94A0, CHIP_RV740|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI Mobility Radeon HD 4830"}, \ {0x1002, 0x94A1, CHIP_RV740|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI Mobility Radeon HD 4850"}, \ + {0x1002, 0x94A3, CHIP_RV740|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI FirePro M7740"}, \ {0x1002, 0x94B1, CHIP_RV740|RADEON_NEW_MEMMAP, "ATI RV740"}, \ {0x1002, 0x94B3, CHIP_RV740|RADEON_NEW_MEMMAP, "ATI Radeon HD 4770"}, \ + {0x1002, 0x94B4, CHIP_RV740|RADEON_NEW_MEMMAP, "ATI Radeon HD 4700 Series"}, \ {0x1002, 0x94B5, CHIP_RV740|RADEON_NEW_MEMMAP, "ATI Radeon HD 4770"}, \ + {0x1002, 0x94B9, CHIP_RV740|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI FirePro M5750"}, \ {0x1002, 0x94C0, CHIP_RV610|RADEON_NEW_MEMMAP, "RV610"}, \ {0x1002, 0x94C1, CHIP_RV610|RADEON_NEW_MEMMAP, "Radeon HD 2400 XT"}, \ {0x1002, 0x94C3, CHIP_RV610|RADEON_NEW_MEMMAP, "Radeon HD 2400 Pro"}, \ @@ -327,6 +330,11 @@ {0x1002, 0x9614, CHIP_RS780|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI Radeon 3300 Graphics"}, \ {0x1002, 0x9615, CHIP_RS780|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI Radeon 3200 Graphics"}, \ {0x1002, 0x9616, CHIP_RS780|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI Radeon 3000 Graphics"}, \ + {0x1002, 0x9710, CHIP_RS880|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI Radeon HD 4200"}, \ + {0x1002, 0x9711, CHIP_RS880|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI Radeon 4100"}, \ + {0x1002, 0x9712, CHIP_RS880|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI Mobility Radeon HD 4200"}, \ + {0x1002, 0x9713, CHIP_RS880|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI Mobility Radeon 4100"}, \ + {0x1002, 0x9714, CHIP_RS880|RADEON_NEW_MEMMAP|RADEON_IS_IGP, "ATI RS880"}, \ {0x1002, 0x9440, CHIP_RV770|RADEON_NEW_MEMMAP, "ATI Radeon 4800 Series"}, \ {0x1002, 0x9441, CHIP_RV770|RADEON_NEW_MEMMAP, "ATI Radeon 4870 X2"}, \ {0x1002, 0x9442, CHIP_RV770|RADEON_NEW_MEMMAP, "ATI Radeon 4800 Series"}, \ @@ -350,6 +358,7 @@ {0x1002, 0x9487, CHIP_RV730|RADEON_NEW_MEMMAP, "ATI Radeon RV730 (AGP)"}, \ {0x1002, 0x948F, CHIP_RV730|RADEON_NEW_MEMMAP, "ATI Radeon RV730 (AGP)"}, \ {0x1002, 0x9490, CHIP_RV730|RADEON_NEW_MEMMAP, "ATI Radeon HD 4670"}, \ + {0x1002, 0x9495, CHIP_RV730|RADEON_NEW_MEMMAP, "ATI Radeon HD 4600 Series"}, \ {0x1002, 0x9498, CHIP_RV730|RADEON_NEW_MEMMAP, "ATI Radeon HD 4650"}, \ {0x1002, 0x9480, CHIP_RV730|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI Mobility Radeon HD 4650"}, \ {0x1002, 0x9488, CHIP_RV730|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI Mobility Radeon HD 4670"}, \ @@ -366,6 +375,7 @@ {0x1002, 0x9552, CHIP_RV710|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI Mobility Radeon 4300 Series"}, \ {0x1002, 0x9553, CHIP_RV710|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI Mobility Radeon 4500 Series"}, \ {0x1002, 0x9555, CHIP_RV710|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI Mobility Radeon 4500 Series"}, \ + {0x1002, 0x9557, CHIP_RV710|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP, "ATI FirePro RG220"}, \ {0, 0, 0, NULL} #define r128_PCI_IDS \ ==== //depot/projects/vimage-commit2/src/sys/dev/drm/r600_cp.c#5 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/drm/r600_cp.c,v 1.8 2009/07/09 16:39:28 rnoland Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/drm/r600_cp.c,v 1.9 2009/08/12 12:57:02 rnoland Exp $"); #include "dev/drm/drmP.h" #include "dev/drm/drm.h" @@ -318,7 +318,8 @@ pfp = RV670_pfp_microcode; break; case CHIP_RS780: - DRM_INFO("Loading RS780 Microcode\n"); + case CHIP_RS880: + DRM_INFO("Loading RS780/RS880 Microcode\n"); cp = RS780_cp_microcode; pfp = RS780_pfp_microcode; break; @@ -722,6 +723,7 @@ break; case CHIP_RV610: case CHIP_RS780: + case CHIP_RS880: case CHIP_RV620: dev_priv->r600_max_pipes = 1; dev_priv->r600_max_tile_pipes = 1; @@ -856,7 +858,8 @@ ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV630) || ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV610) || ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV620) || - ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780)) + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780) || + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS880)) RADEON_WRITE(R600_DB_DEBUG, R600_PREZ_MUST_WAIT_FOR_POSTZ_DONE); else RADEON_WRITE(R600_DB_DEBUG, 0); @@ -874,7 +877,8 @@ sq_ms_fifo_sizes = RADEON_READ(R600_SQ_MS_FIFO_SIZES); if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV610) || ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV620) || - ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780)) { + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780) || + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS880)) { sq_ms_fifo_sizes = (R600_CACHE_FIFO_SIZE(0xa) | R600_FETCH_FIFO_HIWATER(0xa) | R600_DONE_FIFO_HIWATER(0xe0) | @@ -917,7 +921,8 @@ R600_NUM_ES_STACK_ENTRIES(0)); } else if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV610) || ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV620) || - ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780)) { + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780) || + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS880)) { /* no vertex cache */ sq_config &= ~R600_VC_ENABLE; @@ -974,7 +979,8 @@ if (((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV610) || ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV620) || - ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780)) + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS780) || + ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS880)) RADEON_WRITE(R600_VGT_CACHE_INVALIDATION, R600_CACHE_INVALIDATION(R600_TC_ONLY)); else RADEON_WRITE(R600_VGT_CACHE_INVALIDATION, R600_CACHE_INVALIDATION(R600_VC_AND_TC)); @@ -1017,6 +1023,7 @@ break; case CHIP_RV610: case CHIP_RS780: + case CHIP_RS880: case CHIP_RV620: gs_prim_buffer_depth = 32; break; @@ -1062,6 +1069,7 @@ switch (dev_priv->flags & RADEON_FAMILY_MASK) { case CHIP_RV610: case CHIP_RS780: + case CHIP_RS880: case CHIP_RV620: tc_cntl = R600_TC_L2_SIZE(8); break; ==== //depot/projects/vimage-commit2/src/sys/dev/drm/radeon_drv.h#8 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_drv.h,v 1.23 2009/07/09 16:39:28 rnoland Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/drm/radeon_drv.h,v 1.24 2009/08/12 12:57:02 rnoland Exp $"); #ifndef __RADEON_DRV_H__ #define __RADEON_DRV_H__ @@ -145,6 +145,7 @@ CHIP_RV635, CHIP_RV670, CHIP_RS780, + CHIP_RS880, CHIP_RV770, CHIP_RV740, CHIP_RV730, ==== //depot/projects/vimage-commit2/src/sys/dev/isp/isp_freebsd.c#5 (text+ko) ==== @@ -28,7 +28,7 @@ * Platform (FreeBSD) dependent common attachment code for Qlogic adapters. */ #include -__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.150 2009/08/01 01:04:26 mjacob Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.151 2009/08/13 01:17:26 mjacob Exp $"); #include #include #include @@ -5280,6 +5280,10 @@ return (seed); } seed = iswwnn ? FCPARAM(isp, chan)->isp_wwnn_nvram : FCPARAM(isp, chan)->isp_wwpn_nvram; + if (seed) { + return (seed); + } + return (0x400000007F000009ull); } else { seed = iswwnn ? fc->def_wwnn : fc->def_wwpn; } ==== //depot/projects/vimage-commit2/src/sys/i386/conf/GENERIC#19 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.519 2009/07/11 15:02:45 rpaulo Exp $ +# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.520 2009/08/13 17:09:45 attilio Exp $ cpu I486_CPU cpu I586_CPU @@ -70,7 +70,6 @@ options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed. options KBD_INSTALL_CDEV # install a CDEV entry in /dev -options STOP_NMI # Stop CPUS using NMI instead of IPI options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) options AUDIT # Security event auditing options MAC # TrustedBSD MAC Framework ==== //depot/projects/vimage-commit2/src/sys/i386/conf/NOTES#18 (text+ko) ==== @@ -4,7 +4,7 @@ # This file contains machine dependent kernel configuration notes. For # machine independent notes, look in /sys/conf/NOTES. # -# $FreeBSD: src/sys/i386/conf/NOTES,v 1.1275 2009/06/23 13:17:25 rpaulo Exp $ +# $FreeBSD: src/sys/i386/conf/NOTES,v 1.1276 2009/08/13 17:09:45 attilio Exp $ # # @@ -49,7 +49,6 @@ # Debugging options. # -options STOP_NMI # Stop CPUS using NMI instead of IPI options COUNT_XINVLTLB_HITS # Counters for TLB events options COUNT_IPIS # Per-CPU IPI interrupt counters ==== //depot/projects/vimage-commit2/src/sys/i386/i386/local_apic.c#13 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/i386/local_apic.c,v 1.61 2009/07/01 17:20:07 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/local_apic.c,v 1.62 2009/08/13 17:09:45 attilio Exp $"); #include "opt_hwpmc_hooks.h" #include "opt_kdtrace.h" @@ -1248,8 +1248,17 @@ KASSERT((vector & ~APIC_VECTOR_MASK) == 0, ("%s: invalid vector %d", __func__, vector)); - icrlo = vector | APIC_DELMODE_FIXED | APIC_DESTMODE_PHY | - APIC_LEVEL_DEASSERT | APIC_TRIGMOD_EDGE; + icrlo = APIC_DESTMODE_PHY | APIC_TRIGMOD_EDGE; + + /* + * IPI_STOP_HARD is just a "fake" vector used to send a NMI. + * Use special rules regard NMI if passed, otherwise specify + * the vector. + */ + if (vector == IPI_STOP_HARD) + icrlo |= APIC_DELMODE_NMI | APIC_LEVEL_ASSERT; + else + icrlo |= vector | APIC_DELMODE_FIXED | APIC_LEVEL_DEASSERT; destfield = 0; switch (dest) { case APIC_IPI_DEST_SELF: ==== //depot/projects/vimage-commit2/src/sys/i386/i386/mp_machdep.c#15 (text+ko) ==== @@ -24,7 +24,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/i386/mp_machdep.c,v 1.302 2009/06/23 22:42:39 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/mp_machdep.c,v 1.303 2009/08/13 17:09:45 attilio Exp $"); #include "opt_apic.h" #include "opt_cpu.h" @@ -155,12 +155,6 @@ vm_offset_t smp_tlb_addr2; volatile int smp_tlb_wait; -#ifdef STOP_NMI -static volatile cpumask_t ipi_nmi_pending; - -static void ipi_nmi_selected(cpumask_t cpus); -#endif - #ifdef COUNT_IPIS /* Interrupt counts. */ static u_long *ipi_preempt_counts[MAXCPU]; @@ -177,21 +171,8 @@ * Local data and functions. */ -#ifdef STOP_NMI -/* - * Provide an alternate method of stopping other CPUs. If another CPU has - * disabled interrupts the conventional STOP IPI will be blocked. This - * NMI-based stop should get through in that case. - */ -static int stop_cpus_with_nmi = 1; -SYSCTL_INT(_debug, OID_AUTO, stop_cpus_with_nmi, CTLTYPE_INT | CTLFLAG_RW, - &stop_cpus_with_nmi, 0, ""); -TUNABLE_INT("debug.stop_cpus_with_nmi", &stop_cpus_with_nmi); -#else -#define stop_cpus_with_nmi 0 -#endif - static u_int logical_cpus; +static volatile cpumask_t ipi_nmi_pending; /* used to hold the AP's until we are ready to release them */ static struct mtx ap_boot_mtx; @@ -1318,12 +1299,14 @@ ipi = IPI_BITMAP_VECTOR; } -#ifdef STOP_NMI - if (ipi == IPI_STOP && stop_cpus_with_nmi) { - ipi_nmi_selected(cpus); - return; - } -#endif + /* + * IPI_STOP_HARD maps to a NMI and the trap handler needs a bit + * of help in order to understand what is the source. + * Set the mask of receiving CPUs for this purpose. + */ + if (ipi == IPI_STOP_HARD) + atomic_set_int(&ipi_nmi_pending, cpus); + CTR3(KTR_SMP, "%s: cpus: %x ipi: %x", __func__, cpus, ipi); while ((cpu = ffs(cpus)) != 0) { cpu--; @@ -1354,64 +1337,42 @@ ipi_all_but_self(u_int ipi) { - if (IPI_IS_BITMAPED(ipi) || (ipi == IPI_STOP && stop_cpus_with_nmi)) { + if (IPI_IS_BITMAPED(ipi)) { ipi_selected(PCPU_GET(other_cpus), ipi); return; } + + /* + * IPI_STOP_HARD maps to a NMI and the trap handler needs a bit + * of help in order to understand what is the source. + * Set the mask of receiving CPUs for this purpose. + */ + if (ipi == IPI_STOP_HARD) + atomic_set_int(&ipi_nmi_pending, PCPU_GET(other_cpus)); CTR2(KTR_SMP, "%s: ipi: %x", __func__, ipi); lapic_ipi_vectored(ipi, APIC_IPI_DEST_OTHERS); } -#ifdef STOP_NMI -/* - * send NMI IPI to selected CPUs - */ - -#define BEFORE_SPIN 1000000 - -void -ipi_nmi_selected(cpumask_t cpus) -{ - int cpu; - register_t icrlo; - - icrlo = APIC_DELMODE_NMI | APIC_DESTMODE_PHY | APIC_LEVEL_ASSERT - | APIC_TRIGMOD_EDGE; - - CTR2(KTR_SMP, "%s: cpus: %x nmi", __func__, cpus); - - atomic_set_int(&ipi_nmi_pending, cpus); - - while ((cpu = ffs(cpus)) != 0) { - cpu--; - cpus &= ~(1 << cpu); - - KASSERT(cpu_apic_ids[cpu] != -1, - ("IPI NMI to non-existent CPU %d", cpu)); - - /* Wait for an earlier IPI to finish. */ - if (!lapic_ipi_wait(BEFORE_SPIN)) - panic("ipi_nmi_selected: previous IPI has not cleared"); - - lapic_ipi_raw(icrlo, cpu_apic_ids[cpu]); - } -} - int -ipi_nmi_handler(void) +ipi_nmi_handler() { - int cpumask = PCPU_GET(cpumask); + cpumask_t cpumask; - if (!(ipi_nmi_pending & cpumask)) - return 1; + /* + * As long as there is not a simple way to know about a NMI's + * source, if the bitmask for the current CPU is present in + * the global pending bitword an IPI_STOP_HARD has been issued + * and should be handled. + */ + cpumask = PCPU_GET(cpumask); + if ((ipi_nmi_pending & cpumask) == 0) + return (1); atomic_clear_int(&ipi_nmi_pending, cpumask); cpustop_handler(); - return 0; + return (0); } -#endif /* STOP_NMI */ - /* * Handle an IPI_STOP by saving our current context and spinning until we * are resumed. ==== //depot/projects/vimage-commit2/src/sys/i386/i386/trap.c#7 (text+ko) ==== @@ -38,7 +38,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/i386/trap.c,v 1.320 2009/05/13 17:53:04 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/trap.c,v 1.321 2009/08/13 17:09:45 attilio Exp $"); /* * 386 Trap and System call handling @@ -211,13 +211,11 @@ type = frame->tf_trapno; #ifdef SMP -#ifdef STOP_NMI /* Handler for NMI IPIs used for stopping CPUs. */ if (type == T_NMI) { if (ipi_nmi_handler() == 0) goto out; } -#endif /* STOP_NMI */ #endif /* SMP */ #ifdef KDB ==== //depot/projects/vimage-commit2/src/sys/i386/include/apicvar.h#8 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/i386/include/apicvar.h,v 1.32 2009/06/07 22:52:48 adrian Exp $ + * $FreeBSD: src/sys/i386/include/apicvar.h,v 1.33 2009/08/13 17:09:45 attilio Exp $ */ #ifndef _MACHINE_APICVAR_H_ @@ -100,11 +100,6 @@ * smp_ipi_mtx and waits for the completion of the IPI (Only one IPI user * at a time) The second group uses a single interrupt and a bitmap to avoid * redundant IPI interrupts. - * - * Right now IPI_STOP used by kdb shares the interrupt priority class with - * the two IPI groups mentioned above. As such IPI_STOP may cause a deadlock. - * Eventually IPI_STOP should use NMI IPIs - this would eliminate this and - * other deadlocks caused by IPI_STOP. */ /* Interrupts for local APIC LVT entries other than the timer. */ @@ -134,6 +129,7 @@ #define IPI_IS_BITMAPED(x) ((x) <= IPI_BITMAP_LAST) #define IPI_STOP (APIC_IPI_INTS + 7) /* Stop CPU until restarted. */ +#define IPI_STOP_HARD (APIC_IPI_INTS + 8) /* Stop CPU with a NMI. */ #else /* XEN */ /* These are the normal i386 APIC definitions */ @@ -161,6 +157,7 @@ #define IPI_IS_BITMAPED(x) ((x) <= IPI_BITMAP_LAST) #define IPI_STOP (APIC_IPI_INTS + 7) /* Stop CPU until restarted. */ +#define IPI_STOP_HARD (APIC_IPI_INTS + 8) /* Stop CPU with a NMI. */ #endif /* XEN */ /* ==== //depot/projects/vimage-commit2/src/sys/i386/include/smp.h#7 (text+ko) ==== @@ -6,7 +6,7 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * - * $FreeBSD: src/sys/i386/include/smp.h,v 1.99 2009/05/14 17:43:00 attilio Exp $ + * $FreeBSD: src/sys/i386/include/smp.h,v 1.100 2009/08/13 17:09:45 attilio Exp $ * */ @@ -60,7 +60,8 @@ void cpu_add(u_int apic_id, char boot_cpu); void cpustop_handler(void); void init_secondary(void); -void ipi_selected(u_int cpus, u_int ipi); +int ipi_nmi_handler(void); +void ipi_selected(cpumask_t cpus, u_int ipi); void ipi_all_but_self(u_int ipi); #ifndef XEN void ipi_bitmap_handler(struct trapframe frame); @@ -76,9 +77,6 @@ void smp_invltlb(void); void smp_masked_invltlb(cpumask_t mask); -#ifdef STOP_NMI -int ipi_nmi_handler(void); -#endif #ifdef XEN >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Fri Aug 14 10:53:13 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id F02F71065691; Fri, 14 Aug 2009 10:53:12 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B143C106568C for ; Fri, 14 Aug 2009 10:53:12 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 9E4C08FC5A for ; Fri, 14 Aug 2009 10:53:12 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7EArCdj055243 for ; Fri, 14 Aug 2009 10:53:12 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7EArC3Z055241 for perforce@freebsd.org; Fri, 14 Aug 2009 10:53:12 GMT (envelope-from trasz@freebsd.org) Date: Fri, 14 Aug 2009 10:53:12 GMT Message-Id: <200908141053.n7EArC3Z055241@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167315 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Aug 2009 10:53:13 -0000 http://perforce.freebsd.org/chv.cgi?CH=167315 Change 167315 by trasz@trasz_anger on 2009/08/14 10:52:34 IFC. Affected files ... .. //depot/projects/soc2009/trasz_limits/UPDATING#12 integrate .. //depot/projects/soc2009/trasz_limits/contrib/bzip2/FREEBSD-vendor#2 integrate .. //depot/projects/soc2009/trasz_limits/contrib/file/magic2mime#1 branch .. //depot/projects/soc2009/trasz_limits/contrib/netcat/FREEBSD-vendor#2 integrate .. //depot/projects/soc2009/trasz_limits/contrib/openpam/FREEBSD-vendor#2 integrate .. //depot/projects/soc2009/trasz_limits/crypto/openssh/FREEBSD-vendor#2 integrate .. //depot/projects/soc2009/trasz_limits/crypto/openssl/apps/md4.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/bftest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/bntest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/casttest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/destest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/dhtest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/dsatest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/ecdhtest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/ecdsatest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/ectest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/enginetest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/evp_test.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/exptest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/fips_aesavs.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/fips_desmovs.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/fips_dsatest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/fips_dssvs.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/fips_hmactest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/fips_randtest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/fips_rngvs.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/fips_rsagtest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/fips_rsastest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/fips_rsavtest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/fips_shatest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/fips_test_suite.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/hmactest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/ideatest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/jpaketest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/md2test.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/md4test.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/md5test.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/mdc2test.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/randtest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/rc2test.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/rc4test.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/rc5test.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/rmdtest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/rsa_test.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/sha1test.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/sha256t.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/sha512t.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/shatest.c#2 delete .. //depot/projects/soc2009/trasz_limits/crypto/openssl/test/ssltest.c#2 delete .. //depot/projects/soc2009/trasz_limits/etc/mtree/BSD.include.dist#5 integrate .. //depot/projects/soc2009/trasz_limits/include/Makefile#5 integrate .. //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/Makefile.inc#5 integrate .. //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/mac.3#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/mac_free.3#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/mac_get.3#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/mac_set.3#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/mac_text.3#2 integrate .. //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/posix1e.3#3 integrate .. //depot/projects/soc2009/trasz_limits/lib/libkvm/kvm_vnet.c#3 integrate .. //depot/projects/soc2009/trasz_limits/share/man/man9/Makefile#7 integrate .. //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211.9#2 integrate .. //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211_amrr.9#1 branch .. //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211_beacon.9#1 branch .. //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211_bmiss.9#1 branch .. //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211_crypto.9#2 integrate .. //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211_ddb.9#1 branch .. //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211_input.9#2 integrate .. //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211_ioctl.9#2 delete .. //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211_node.9#2 integrate .. //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211_output.9#2 integrate .. //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211_proto.9#2 integrate .. //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211_radiotap.9#2 integrate .. //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211_regdomain.9#1 branch .. //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211_scan.9#1 branch .. //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211_vap.9#1 branch .. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/local_apic.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/mp_machdep.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/trap.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/amd64/conf/GENERIC#7 integrate .. //depot/projects/soc2009/trasz_limits/sys/amd64/conf/NOTES#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/amd64/conf/XENHVM#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/amd64/include/apicvar.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/amd64/include/smp.h#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/arm/arm/pmap.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/cddl/compat/opensolaris/kern/opensolaris.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/conf/options.amd64#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/conf/options.i386#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/conf/options.pc98#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/drm/drm_pciids.h#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/drm/r600_cp.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/drm/radeon_drv.h#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/isp/isp_freebsd.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/mfi/mfi_ioctl.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/mfi/mfireg.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/i386/conf/GENERIC#8 integrate .. //depot/projects/soc2009/trasz_limits/sys/i386/conf/NOTES#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/i386/i386/local_apic.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/i386/i386/mp_machdep.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/i386/i386/trap.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/i386/include/apicvar.h#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/i386/include/smp.h#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/i386/xen/mp_machdep.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/ia64/ia64/interrupt.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/ia64/include/smp.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_jail.c#11 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_shutdown.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_sysctl.c#7 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/subr_kdb.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/subr_pcpu.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/subr_smp.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/mips/include/smp.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/mips/mips/mp_machdep.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/bpf.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/bpf_buffer.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/bpf_zerocopy.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/bpfdesc.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/rtsock.c#9 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/vnet.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/vnet.h#9 integrate .. //depot/projects/soc2009/trasz_limits/sys/net80211/ieee80211.c#10 integrate .. //depot/projects/soc2009/trasz_limits/sys/netatalk/at_control.c#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet6/in6.c#9 integrate .. //depot/projects/soc2009/trasz_limits/sys/pc98/conf/NOTES#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/powerpc/include/smp.h#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/powerpc/powerpc/mp_machdep.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/security/audit/audit.h#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/sparc64/include/smp.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/sun4v/include/smp.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/sys/jail.h#9 integrate .. //depot/projects/soc2009/trasz_limits/sys/sys/pcpu.h#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/sys/smp.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/sys/sysctl.h#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/xdr/xdr_mbuf.c#2 integrate .. //depot/projects/soc2009/trasz_limits/tools/build/options/WITH_BIND_LIBS#3 branch .. //depot/projects/soc2009/trasz_limits/tools/regression/priv/Makefile#2 integrate .. //depot/projects/soc2009/trasz_limits/tools/regression/priv/main.c#2 integrate .. //depot/projects/soc2009/trasz_limits/tools/regression/priv/priv_netinet_ipsec.c#2 integrate .. //depot/projects/soc2009/trasz_limits/tools/regression/priv/priv_vfs_extattr_system.c#2 integrate .. //depot/projects/soc2009/trasz_limits/usr.bin/procstat/procstat.1#2 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/Makefile#6 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/jls/jls.c#7 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/mfiutil/Makefile#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mfiutil/README#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mfiutil/mfi_cmd.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mfiutil/mfi_config.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mfiutil/mfi_drive.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mfiutil/mfi_evt.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mfiutil/mfi_flash.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mfiutil/mfi_patrol.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mfiutil/mfi_show.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mfiutil/mfi_volume.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mfiutil/mfiutil.1#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mfiutil/mfiutil.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mfiutil/mfiutil.h#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/ntp/scripts/mkver#2 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/sysinstall/install.c#3 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/sysinstall/sysinstall.8#2 integrate Differences ... ==== //depot/projects/soc2009/trasz_limits/UPDATING#12 (text+ko) ==== @@ -22,6 +22,12 @@ to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090813: + Remove the option STOP_NMI. The default action is now to use NMI + only for KDB via the newly introduced function stop_cpus_hard() + and maintain stop_cpus() to just use a normal IPI_STOP on ia32 + and amd64. + 20090719: Bump the shared library version numbers for all libraries that do not use symbol versioning as part of the 8.0-RELEASE cycle. @@ -1665,4 +1671,4 @@ Contact Warner Losh if you have any questions about your use of this document. -$FreeBSD: src/UPDATING,v 1.632 2009/07/26 20:12:06 kib Exp $ +$FreeBSD: src/UPDATING,v 1.633 2009/08/13 17:09:45 attilio Exp $ ==== //depot/projects/soc2009/trasz_limits/contrib/bzip2/FREEBSD-vendor#2 (text+ko) ==== @@ -1,7 +1,5 @@ -# $FreeBSD: src/contrib/bzip2/FREEBSD-vendor,v 1.1 2008/03/20 02:45:32 delphij Exp $ +# $FreeBSD: src/contrib/bzip2/FREEBSD-vendor,v 1.2 2009/08/13 06:07:38 des Exp $ Project: bzip2 ProjectURL: http://www.bzip.org/ Version: 1.0.5 -VendorTag: BZIP2 -VersionTag: v1_0_5 License: BSD ==== //depot/projects/soc2009/trasz_limits/contrib/netcat/FREEBSD-vendor#2 (text+ko) ==== @@ -1,7 +1,5 @@ -# $FreeBSD: src/contrib/netcat/FREEBSD-vendor,v 1.2 2008/12/19 23:00:23 delphij Exp $ +# $FreeBSD: src/contrib/netcat/FREEBSD-vendor,v 1.3 2009/08/13 06:07:38 des Exp $ Project: netcat (aka src/usr.bin/nc in OpenBSD) ProjectURL: http://www.openbsd.org/ Version: 4.4 -VendorTag: OPENBSD -VersionTag: OPENBSD_4_4 License: BSD ==== //depot/projects/soc2009/trasz_limits/contrib/openpam/FREEBSD-vendor#2 (text) ==== @@ -1,8 +1,6 @@ -# $FreeBSD: src/contrib/openpam/FREEBSD-vendor,v 1.1 2008/02/06 23:06:23 des Exp $ +# $FreeBSD: src/contrib/openpam/FREEBSD-vendor,v 1.2 2009/08/13 06:07:38 des Exp $ Project: OpenPAM ProjectURL: http://www.openpam.org/ Version: Hydrangea (20071221) -VendorTag: OPENPAM -VersionTag: OPENPAM_HYDRANGEA License: BSD Maintainer: des ==== //depot/projects/soc2009/trasz_limits/crypto/openssh/FREEBSD-vendor#2 (text+ko) ==== @@ -1,8 +1,6 @@ -# $FreeBSD: src/crypto/openssh/FREEBSD-vendor,v 1.2 2008/08/01 02:48:36 des Exp $ +# $FreeBSD: src/crypto/openssh/FREEBSD-vendor,v 1.3 2009/08/13 06:07:38 des Exp $ Project: Portable OpenSSH ProjectURL: http://www.openssh.com/portable.html -Version: 5.1p1 -VendorTag: OPENSSH -VersionTag: OpenSSH_5_1p1 +Version: 5.2p1 License: BSD Maintainer: des ==== //depot/projects/soc2009/trasz_limits/etc/mtree/BSD.include.dist#5 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/etc/mtree/BSD.include.dist,v 1.131 2009/07/10 08:18:08 scottl Exp $ +# $FreeBSD: src/etc/mtree/BSD.include.dist,v 1.132 2009/08/13 23:18:45 scottl Exp $ # # Please see the file src/etc/mtree/README before making changes to this file. # @@ -104,6 +104,8 @@ .. lmc .. + mfi + .. mpt mpilib .. ==== //depot/projects/soc2009/trasz_limits/include/Makefile#5 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile 8.2 (Berkeley) 1/4/94 -# $FreeBSD: src/include/Makefile,v 1.290 2009/07/10 08:18:08 scottl Exp $ +# $FreeBSD: src/include/Makefile,v 1.291 2009/08/13 23:18:45 scottl Exp $ # # Doing a "make install" builds /usr/include. @@ -40,7 +40,7 @@ LSUBDIRS= cam/ata cam/scsi \ dev/acpica dev/an dev/bktr dev/firewire dev/hwpmc \ - dev/ic dev/iicbus ${_dev_ieee488} dev/lmc dev/ofw \ + dev/ic dev/iicbus ${_dev_ieee488} dev/lmc dev/mfi dev/ofw \ dev/pbio ${_dev_powermac_nvram} dev/ppbus dev/smbus \ dev/speaker dev/usb dev/utopia dev/vkbd dev/wi \ fs/devfs fs/fdescfs fs/fifofs fs/msdosfs fs/nfs fs/ntfs fs/nullfs \ ==== //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/Makefile.inc#5 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/lib/libc/posix1e/Makefile.inc,v 1.22 2009/07/14 19:37:53 trasz Exp $ +# $FreeBSD: src/lib/libc/posix1e/Makefile.inc,v 1.23 2009/08/12 10:46:48 rwatson Exp $ .PATH: ${.CURDIR}/posix1e @@ -106,14 +106,16 @@ mac_get.3 mac_get_fd.3 \ mac_get.3 mac_get_file.3 \ mac_get.3 mac_get_link.3 \ + mac_get.3 mac_get_peer.3 \ mac_get.3 mac_get_pid.3 \ mac_get.3 mac_get_proc.3 \ mac_prepare.3 mac_prepare_file_label.3 \ mac_prepare.3 mac_prepare_ifnet_label.3 \ mac_prepare.3 mac_prepare_process_label.3 \ - mac_set.3 mac_set_link.3 \ + mac_prepare.3 mac_prepare_type.3 \ mac_set.3 mac_set_fd.3 \ mac_set.3 mac_set_file.3 \ + mac_set.3 mac_set_link.3 \ mac_set.3 mac_set_proc.3 \ mac_text.3 mac_from_text.3 \ mac_text.3 mac_to_text.3 ==== //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/mac.3#2 (text+ko) ==== @@ -1,4 +1,5 @@ .\" Copyright (c) 2001, 2003 Networks Associates Technology, Inc. +.\" Copyright (c) 2009 Robert N. M. Watson .\" All rights reserved. .\" .\" This software was developed for the FreeBSD Project by Chris @@ -28,9 +29,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac.3,v 1.15 2005/07/31 03:30:44 keramida Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac.3,v 1.16 2009/08/12 10:46:48 rwatson Exp $ .\" -.Dd April 19, 2003 +.Dd August 7, 2009 .Dt MAC 3 .Os .Sh NAME @@ -44,81 +45,82 @@ In the kernel configuration file: .Cd "options MAC" .Sh DESCRIPTION -.Fx -permits administrators to define Mandatory Access Control labels -defining levels for the privacy and integrity of data, -overriding discretionary policies -for those objects. -Not all objects currently provide support for MAC labels, -and MAC support must be explicitly enabled by the administrator. -The library calls include routines to retrieve, duplicate, -and set MAC labels associated with files and processes. +Mandatory Access Control labels describe confidentiality, integrity, and +other security attributes of operating system objects, overriding +discretionary access control. +Not all system objects support MAC labeling, and MAC policies must be +explicitly enabled by the administrator. +This API, based on POSIX.1e, includes routines to retrieve, manipulate, set, +and convert to and from text the MAC labels on files and processes. +.Pp +MAC labels consist of a set of (name, value) tuples, representing security +attributes from MAC policies. +For example, this label contains security labels defined by two policies, +.Xr mac_biba 4 +and +.Xr mac_mls 4 : +.Bd -literal -offset indent +biba/low,mls/low +.Ed +.Pp +Further syntax and semantics of MAC labels may be found in +.Xr maclabel 7 . +.Pp +Applications operate on labels stored in +.Vt mac_t , +but can convert between this internal format and a text format for the +purposes of presentation to uses or external storage. +When querying a label on an object, a +.Vt mac_t +must first be prepared using the interfaces described in +.Xr mac_prepare 3 , +allowing the application to declare which policies it wishes to interogate. +The application writer can also rely on default label names declared in +.Xr mac.conf 5 . .Pp -POSIX.1e describes a set of MAC manipulation routines -to manage the contents of MAC labels, -as well as their relationships with -files and processes; -almost all of these support routines -are implemented in -.Fx . +When finished with a +.Vt mac_t , +the application must call +.Xr mac_free 3 +to release its storage. .Pp -Available functions, sorted by behavior, include: +The following functions are defined: .Bl -tag -width indent -.It Fn mac_get_fd -This function is described in +.It Fn mac_is_present +This function, described in +.Xr mac_is_present 3 , +allows applications to test whether MAC is configured, as well as whether +specific policies are configured. +.It Fn mac_get_fd , Fn mac_get_file , Fn mac_get_link , Fn mac_get_peer +These functions, described in .Xr mac_get 3 , -and may be used to retrieve the -MAC label associated with -a specific file descriptor. -.It Fn mac_get_file -This function is described in +retrieve the MAC labels associated with file descriptors, files, and socket +peers. +.It Fn mac_get_pid , Fn mac_get_proc +These functions, described in .Xr mac_get 3 , -and may be used to retrieve the -MAC label associated with -a named file. -.It Fn mac_get_proc -This function is described in -.Xr mac_get 3 , -and may be used to retrieve the -MAC label associated with -the calling process. -.It Fn mac_set_fd -This function is described in +retrieve the MAC labels associated with processes. +.It Fn mac_set_fd , Fn mac_set_file , Fn mac_set_link +These functions, described in .Xr mac_set 3 , -and may be used to set the -MAC label associated with -a specific file descriptor. -.It Fn mac_set_file -This function is described in -.Xr mac_set 3 , -and may be used to set the -MAC label associated with -a named file. +set the MAC labels associated with file descriptors and files. .It Fn mac_set_proc -This function is described in +This function, described in .Xr mac_set 3 , -and may be used to set the -MAC label associated with -the calling process. +sets the MAC label associated with the current process. .It Fn mac_free -This function is described in +This function, desribed in .Xr mac_free 3 , -and may be used to free -userland working MAC label storage. +frees working MAC label storage. .It Fn mac_from_text -This function is described in +This function, described in .Xr mac_text 3 , -and may be used to convert -a text-form MAC label -into a working +converts a text-form MAC label into working MAC label storage, .Vt mac_t . -.It Fn mac_prepare -.It Fn mac_prepare_file_label -.It Fn mac_prepare_ifnet_label -.It Fn mac_prepare_process_label -These functions are described in +.It Fn mac_prepare , Fn mac_prepare_file_label , Fn mac_prepare_ifnet_label , Fn mac_prepare_process_label , Fn mac_prepare_type +These functions, described in .Xr mac_prepare 3 , -and may be used to preallocate storage for MAC label retrieval. +allocate working storage for MAC label operations. .Xr mac_prepare 3 prepares a label based on caller-specified label names; the other calls rely on the default configuration specified in @@ -130,15 +132,6 @@ .Vt mac_t into a text-form MAC label. .El -The behavior of some of these calls is influenced by the configuration -settings found in -.Xr mac.conf 5 , -the MAC library run-time configuration file. -.Sh IMPLEMENTATION NOTES -.Fx Ns 's -support for POSIX.1e interfaces and features -is -.Ud . .Sh FILES .Bl -tag -width ".Pa /etc/mac.conf" -compact .It Pa /etc/mac.conf @@ -150,24 +143,20 @@ .Sh SEE ALSO .Xr mac_free 3 , .Xr mac_get 3 , +.Xr mac_is_present 3 , .Xr mac_prepare 3 , .Xr mac_set 3 , .Xr mac_text 3 , +.Xr posix1e 3 , .Xr mac 4 , .Xr mac.conf 5 , .Xr mac 9 .Sh STANDARDS -These APIs are loosely based on the APIs described in POSIX.1e. -POSIX.1e is described in IEEE POSIX.1e draft 17. -Discussion of the draft -continues on the cross-platform POSIX.1e implementation mailing list. -To join this list, see the -.Fx -POSIX.1e implementation page -for more information. -However, the resemblance of these APIs to the POSIX APIs is only loose, -as the POSIX APIs were unable to express many notions required for -flexible and extensible access control. +These APIs are loosely based on the APIs described in POSIX.1e, as described +in IEEE POSIX.1e draft 17. +However, the resemblence of these APIS to the POSIX APIs is loose, as the +PSOXI APIS were unable to express some notinos required for flexible and +extensible access control. .Sh HISTORY Support for Mandatory Access Control was introduced in .Fx 5.0 ==== //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/mac_free.3#2 (text+ko) ==== @@ -31,7 +31,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac_free.3,v 1.6 2003/08/22 18:01:03 rwatson Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac_free.3,v 1.7 2009/08/12 10:46:48 rwatson Exp $ .\" .Dd December 21, 2001 .Dt MAC_FREE 3 @@ -64,6 +64,7 @@ .Xr mac_prepare 3 , .Xr mac_set 3 , .Xr mac_text 3 , +.Xr posix1e 3 , .Xr mac 4 , .Xr mac 9 .Sh STANDARDS @@ -91,8 +92,8 @@ .Tn TrustedBSD implementation, .Fn mac_free -is specific to that type, and must not be used to free the character -strings returned from +is specific to +.Vt mac_3 , +and must not be used to free the character strings returned from .Fn mac_to_text . -Doing so may result in undefined behavior, -including application failure. +Doing so may result in undefined behavior. ==== //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/mac_get.3#2 (text+ko) ==== @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac_get.3,v 1.10 2004/06/30 20:09:09 ru Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac_get.3,v 1.11 2009/08/12 10:46:48 rwatson Exp $ .\" .Dd December 21, 2001 .Dt MAC_GET 3 @@ -133,6 +133,7 @@ .Xr mac_prepare 3 , .Xr mac_set 3 , .Xr mac_text 3 , +.Xr posix1e 3 , .Xr mac 4 , .Xr mac 9 .Sh STANDARDS ==== //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/mac_set.3#2 (text+ko) ==== @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac_set.3,v 1.11 2006/07/07 14:02:17 rwatson Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac_set.3,v 1.12 2009/08/12 10:46:48 rwatson Exp $ .\" .Dd January 14, 2003 .Dt MAC_SET 3 @@ -138,6 +138,7 @@ .Xr mac_is_present 3 , .Xr mac_prepare 3 , .Xr mac_text 3 , +.Xr posix1e 3 , .Xr mac 4 , .Xr mac 9 .Sh HISTORY ==== //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/mac_text.3#2 (text+ko) ==== @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac_text.3,v 1.12 2006/07/07 14:02:17 rwatson Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac_text.3,v 1.13 2009/08/12 10:46:48 rwatson Exp $ .\" .Dd December 21, 2001 .Dt MAC_TEXT 3 @@ -98,6 +98,7 @@ .Xr mac_is_present 3 , .Xr mac_prepare 3 , .Xr mac_set 3 , +.Xr posix1e 3 , .Xr mac 4 , .Xr maclabel 7 .Sh STANDARDS ==== //depot/projects/soc2009/trasz_limits/lib/libc/posix1e/posix1e.3#3 (text+ko) ==== @@ -1,5 +1,5 @@ .\"- -.\" Copyright (c) 2000 Robert N. M. Watson +.\" Copyright (c) 2000, 2009 Robert N. M. Watson .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -23,9 +23,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/posix1e.3,v 1.28 2009/05/19 22:28:33 brueffer Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/posix1e.3,v 1.29 2009/08/12 10:46:48 rwatson Exp $ .\" -.Dd May 20, 2009 +.Dd August 7, 2009 .Dt POSIX1E 3 .Os .Sh NAME @@ -36,99 +36,77 @@ .Sh SYNOPSIS .In sys/types.h .In sys/acl.h -.\" .In sys/capability.h .In sys/mac.h .Sh DESCRIPTION -The IEEE POSIX.1e specification never left draft form, but the interfaces -it describes are now widely used despite inherent limitations. -Currently, only a few of the interfaces and features are implemented in -.Fx , -although efforts are underway to complete the integration at this time. +POSIX.1e describes five security extensions to the POSIX.1 API: Access +Control Lists (ACLs), Auditing, Capabilities, Mandatory Access Control, and +Information Flow Labels. +While IEEE POSIX.1e D17 specification has not been standardized, several of +its interfaces are widely used. .Pp -POSIX.1e describes five security extensions to the base POSIX.1 API: -Access Control Lists (ACLs), Auditing, Capabilities, Mandatory Access -Control, and Information Flow Labels. .Fx -supports POSIX.1e ACL interfaces, as well as POSIX.1e-like MAC -interfaces. -The TrustedBSD Project has produced but not integrated an implementation -of POSIX.1e Capabilities. +implements POSIX.1e interface for access control lists, described in +.Xr acl 3 , +and supports ACLs on the +.Xr ffs 7 +file system; ACLs must be administratively enabled using +.Xr tunefs 8 . .Pp -POSIX.1e defines both syntax and semantics for these features, but fairly -substantial changes are required to implement these features in the -operating system. +.Fx +implements a POSIX.1e-like mandatory access control interface, described in +.Xr mac 3 , +although with a number of extensions and important semantic differences. .Pp -As shipped, -.Fx 4.0 -provides API and VFS support for ACLs, but not an implementation on any -native file system. -.Fx 5.0 -includes support for ACLs as part of UFS1 and UFS2, as well as necessary -VFS support for additional file systems to export ACLs as appropriate. -Available API calls relating to ACLs are described in detail in -.Xr acl 3 . -.Pp -As shipped, -.Fx 5.0 -includes support for Mandatory Access Control as well as POSIX.1e-like -APIs for label management. -More information on API calls relating to MAC is available in -.Xr mac 3 . -.Pp -Additional patches supporting POSIX.1e features are provided by the -TrustedBSD project: -.Pp -http://www.TrustedBSD.org/ -.Sh IMPLEMENTATION NOTES -.Fx Ns 's -support for POSIX.1e interfaces and features is still under -development at this time, and many of these features are considered new -or experimental. +.Fx +does not implement the POSIX.1e audit, privilege (capability), or information +flow label APIs. +However, +.Fx +does implement the +.Xr libbsm +audit API. .Sh ENVIRONMENT -POSIX.1e assigns security labels to all objects, extending the security +POSIX.1e assigns security attributes to all objects, extending the security functionality described in POSIX.1. -These additional labels provide -fine-grained discretionary access control, fine-grained capabilities, -and labels necessary for mandatory access control. +These additional attributes store fine-grained discretionary access control +information and mandatory access control labels; for files, they are stored +in extended attributes, described in +.Xr extattr 3 . +.Pp POSIX.2c describes -a set of userland utilities for manipulating these labels. -.Pp -Many of these services are supported by extended attributes, documented -in -.Xr extattr 2 +a set of userland utilities for manipulating these attributes, including +.Xr getfacl 1 +and +.Xr setfacl 1 +for access control lists, and +.Xr getfmac 8 and -.Xr extattr 9 . -While these APIs are not documented in POSIX.1e, they are similar in -structure. +.Xr setfmac 8 +for mandatory access control labels. .Sh SEE ALSO +.Xr getfacl 1 , +.Xr setfacl 1 , .Xr extattr 2 , .Xr acl 3 , +.Xr extattr 3 , .Xr libbsm 3 , .Xr mac 3 , +.Xr ffs 7 , +.Xr getfmac 8 , +.Xr setfmac 8 , +.Xr tunefs 8 , .Xr acl 9 , .Xr extattr 9 , .Xr mac 9 .Sh STANDARDS POSIX.1e is described in IEEE POSIX.1e draft 17. -Discussion of the draft continues -on the cross-platform POSIX.1e implementation -mailing list. -To join this list, see the -.Fx -POSIX.1e implementation -page for more information. .Sh HISTORY POSIX.1e support was introduced in .Fx 4.0 ; -most of the features are available as of +most features were available as of .Fx 5.0 . -Development continues. .Sh AUTHORS .An Robert N M Watson .An Chris D. Faulhaber .An Thomas Moestl .An Ilmar S Habibulin -.Sh BUGS -Many of these features are considered new or experimental in -.Fx 5.0 -and should be deployed with appropriate caution. ==== //depot/projects/soc2009/trasz_limits/lib/libkvm/kvm_vnet.c#3 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libkvm/kvm_vnet.c,v 1.2 2009/08/01 19:26:27 rwatson Exp $"); +__FBSDID("$FreeBSD: src/lib/libkvm/kvm_vnet.c,v 1.3 2009/08/13 14:59:04 bz Exp $"); #include @@ -195,7 +195,7 @@ kd->vnet_start = nl[NLIST_START_VNET].n_value; kd->vnet_stop = nl[NLIST_STOP_VNET].n_value; kd->vnet_current = (uintptr_t)prison.pr_vnet; - kd->vnet_base = (uintptr_t)vnet.vnet_data_mem - kd->vnet_start; + kd->vnet_base = vnet.vnet_data_base; return (0); } ==== //depot/projects/soc2009/trasz_limits/share/man/man9/Makefile#7 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/share/man/man9/Makefile,v 1.357 2009/07/11 17:36:59 cperciva Exp $ +# $FreeBSD: src/share/man/man9/Makefile,v 1.358 2009/08/12 21:03:16 sam Exp $ MAN= accept_filter.9 \ accf_data.9 \ @@ -121,13 +121,19 @@ hashinit.9 \ hexdump.9 \ ieee80211.9 \ + ieee80211_amrr.9 \ + ieee80211_beacon.9 \ + ieee80211_bmiss.9 \ ieee80211_crypto.9 \ + ieee80211_ddb.9 \ ieee80211_input.9 \ - ieee80211_ioctl.9 \ ieee80211_node.9 \ ieee80211_output.9 \ ieee80211_proto.9 \ ieee80211_radiotap.9 \ + ieee80211_regdomain.9 \ + ieee80211_scan.9 \ + ieee80211_vap.9 \ ifnet.9 \ inittodr.9 \ insmntque.9 \ @@ -627,52 +633,62 @@ MLINKS+=hashinit.9 hashdestroy.9 \ hashinit.9 hashinit_flags.9 \ hashinit.9 phashinit.9 -MLINKS+=ieee80211.9 ieee80211_attach.9 \ - ieee80211.9 ieee80211_chan2ieee.9 \ - ieee80211.9 ieee80211_chan2mode.9 \ - ieee80211.9 ieee80211_ieee2mhz.9 \ - ieee80211.9 ieee80211_ifattach.9 \ - ieee80211.9 ieee80211_ifdetach.9 \ - ieee80211.9 ieee80211_media2rate.9 \ - ieee80211.9 ieee80211_media_change.9 \ - ieee80211.9 ieee80211_media_init.9 \ - ieee80211.9 ieee80211_media_status.9 \ - ieee80211.9 ieee80211_mhz2ieee.9 \ - ieee80211.9 ieee80211_rate2media.9 \ - ieee80211.9 ieee80211_setmode.9 \ - ieee80211.9 ieee80211_watchdog.9 -MLINKS+=ieee80211_crypto.9 ieee80211_crypto_attach.9 \ - ieee80211_crypto.9 ieee80211_crypto_detach.9 \ - ieee80211_crypto.9 ieee80211_wep_crypt.9 -MLINKS+=ieee80211_input.9 ieee80211_decap.9 \ - ieee80211_input.9 ieee80211_recv_mgmt.9 -MLINKS+=ieee80211_ioctl.9 ieee80211_cfgget.9 \ - ieee80211_ioctl.9 ieee80211_cfgset.9 -MLINKS+=ieee80211_node.9 ieee80211_alloc_node.9 \ - ieee80211_node.9 ieee80211_begin_scan.9 \ - ieee80211_node.9 ieee80211_create_ibss.9 \ - ieee80211_node.9 ieee80211_dup_bss.9 \ - ieee80211_node.9 ieee80211_end_scan.9 \ - ieee80211_node.9 ieee80211_find_node.9 \ - ieee80211_node.9 ieee80211_free_allnodes.9 \ +MLINKS+=ieee80211.9 ieee80211_ifattach.9 \ + ieee80211.9 ieee80211_ifdetach.9 +MLINKS+=ieee80211_amrr.9 ieee80211_amrr_init.9 \ + ieee80211_amrr.9 ieee80211_amrr_cleanup.9 \ + ieee80211_amrr.9 ieee80211_amrr_setinterval.9 \ + ieee80211_amrr.9 ieee80211_amrr_node_init.9 \ + ieee80211_amrr.9 ieee80211_amrr_tx_complete.9 \ + ieee80211_amrr.9 ieee80211_amrr_tx_update.9 +MLINKS+=ieee80211_beacon.9 ieee80211_beacon_alloc.9 \ + ieee80211_beacon.9 ieee80211_beacon_update.9 \ + ieee80211_beacon.9 ieee80211_beacon_notify.9 +MLINKS+=ieee80211_bmiss.9 ieee80211_beacon_miss.9 +MLINKS+=ieee80211_crypto.9 ieee80211_key_update_begin.9 \ + ieee80211_crypto.9 ieee80211_key_update_end.9 \ + ieee80211_crypto.9 ieee80211_crypto_newkey.9 \ + ieee80211_crypto.9 ieee80211_crypto_setkey.9 \ + ieee80211_crypto.9 ieee80211_crypto_delglobalkeys.9 \ + ieee80211_crypto.9 ieee80211_crypto_reload_keys.9 \ + ieee80211_crypto.9 ieee80211_crypto_decap.9 \ + ieee80211_crypto.9 ieee80211_crypto_encap.9 \ + ieee80211_crypto.9 ieee80211_crypto_demic.9 \ + ieee80211_crypto.9 ieee80211_crypto_enmic.9 \ + ieee80211_crypto.9 ieee80211_notify_michael_failure.9 \ + ieee80211_crypto.9 ieee80211_notify_replay_failure.9 \ + ieee80211_crypto.9 ieee80211_crypto_register.9 \ + ieee80211_crypto.9 ieee80211_crypto_unregister.9 \ + ieee80211_crypto.9 ieee80211_crypto_available.9 +MLINKS+=ieee80211_input.9 ieee80211_input_all.9 +MLINKS+=ieee80211_node.9 ieee80211_find_rxnode.9 \ + ieee80211_node.9 ieee80211_find_rxnode_withkey.9 \ + ieee80211_node.9 ieee80211_ref_node.9 \ + ieee80211_node.9 ieee80211_unref_node.9 \ ieee80211_node.9 ieee80211_free_node.9 \ ieee80211_node.9 ieee80211_iterate_nodes.9 \ - ieee80211_node.9 ieee80211_lookup_node.9 \ - ieee80211_node.9 ieee80211_next_scan.9 \ - ieee80211_node.9 ieee80211_node_attach.9 \ - ieee80211_node.9 ieee80211_node_detach.9 \ - ieee80211_node.9 ieee80211_node_lateattach.9 \ - ieee80211_node.9 ieee80211_timeout_nodes.9 -MLINKS+=ieee80211_output.9 ieee80211_add_rates.9 \ - ieee80211_output.9 ieee80211_add_xrates.9 \ - ieee80211_output.9 ieee80211_encap.9 \ - ieee80211_output.9 ieee80211_send_mgmt.9 -MLINKS+=ieee80211_proto.9 ieee80211_dump_pkt.9 \ - ieee80211_proto.9 ieee80211_fix_rate.9 \ - ieee80211_proto.9 ieee80211_print_essid.9 \ - ieee80211_proto.9 ieee80211_proto_attach.9 \ - ieee80211_proto.9 ieee80211_proto_detach.9 -MLINKS+=ieee80211_radiotap.9 radiotap.9 + ieee80211_node.9 ieee80211_dump_node.9 \ + ieee80211_node.9 ieee80211_dump_nodes.9 +MLINKS+=ieee80211_output.9 M_WME_GETAC.9 \ + ieee80211_output.9 M_SEQNO_GET.9 \ + ieee80211_output.9 ieee80211_process_callback.9 +MLINKS+=ieee80211_proto.9 ieee80211_new_state.9 \ + ieee80211_proto.9 ieee80211_start_all.9 \ + ieee80211_proto.9 ieee80211_stop_all.9 \ + ieee80211_proto.9 ieee80211_suspend_all.9 \ + ieee80211_proto.9 ieee80211_resume_all.9 \ + ieee80211_proto.9 ieee80211_waitfor_parent.9 +MLINKS+=ieee80211_radiotap.9 radiotap.9 \ + ieee80211_radiotap.9 ieee80211_radiotap_attach.9 \ + ieee80211_radiotap.9 ieee80211_radiotap_active_vap.9 \ + ieee80211_radiotap.9 ieee80211_radiotap_active.9 \ + ieee80211_radiotap.9 ieee80211_radiotap_tx.9 +MLINKS+=ieee80211_regdomain.9 ieee80211_init_channels.9 \ + ieee80211_regdomain.9 ieee80211_sort_channels.9 \ + ieee80211_regdomain.9 ieee80211_alloc_countryie.9 +MLINKS+=ieee80211_vap.9 ieee80211_vap_setup.9 \ + ieee80211_vap.9 ieee80211_vap_attach.9 \ + ieee80211_vap.9 ieee80211_vap_detach.9 MLINKS+=ifnet.9 ifaddr.9 \ ifnet.9 if_data.9 \ ifnet.9 ifqueue.9 ==== //depot/projects/soc2009/trasz_limits/share/man/man9/ieee80211.9#2 (text+ko) ==== @@ -1,6 +1,5 @@ .\" -.\" Copyright (c) 2004 Bruce M. Simpson -.\" Copyright (c) 2004 Darron Broad +.\" Copyright (c) 2009 Sam Leffler, Errno Consulting .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -24,237 +23,539 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man9/ieee80211.9,v 1.4 2005/06/28 20:15:18 hmp Exp $ -.\" $Id: ieee80211.9,v 1.5 2004/03/04 12:33:27 bruce Exp $ +.\" $FreeBSD: src/share/man/man9/ieee80211.9,v 1.5 2009/08/12 21:03:16 sam Exp $ .\" -.Dd March 2, 2004 -.Dt IEEE80211 9 +.Dd August 4, 2009 +.Dt NET80211 9 .Os .Sh NAME -.Nm ieee80211_ifattach , ieee80211_ifdetach , -.Nm ieee80211_mhz2ieee , ieee80211_chan2ieee , ieee80211_ieee2mhz , -.Nm ieee80211_media_init , ieee80211_media_change , ieee80211_media_status , -.Nm ieee80211_watchdog , -.Nm ieee80211_setmode , ieee80211_chan2mode , -.Nm ieee80211_rate2media , ieee80211_media2rate -.Nd core 802.11 network stack functions +.Nm net80211 +.Nd 802.11 network layer .Sh SYNOPSIS .In net80211/ieee80211_var.h -.In net80211/ieee80211_proto.h .Ft void -.Fn ieee80211_ifattach "struct ifnet *ifp" +.Fn ieee80211_ifattach "struct ieee80211com *ic" "const uint8_t macaddr[IEEE80211_ADDR_LEN]" .Ft void -.Fn ieee80211_ifdetach "struct ifnet *ifp" -.Ft u_int -.Fn ieee80211_mhz2ieee "u_int freq" "u_int flags" -.Ft u_int -.Fn ieee80211_chan2ieee "struct ieee80211com *ic" "struct ieee80211_channel *c" -.Ft u_int -.Fn ieee80211_ieee2mhz "u_int chan" "u_int flags" -.Ft void -.Fo ieee80211_media_init -.Fa "struct ifnet *ifp" "ifm_change_cb_t media_change" -.Fa "ifm_stat_cb_t media_stat" -.Fc -.Fa int -.Fn ieee80211_media_change "struct ifnet *ifp" -.Fa void -.Fn ieee80211_media_status "struct ifnet *ifp" "struct ifmediareq *imr" -.Ft void -.Fn ieee80211_watchdog "struct ifnet *ifp" -.Ft int -.Fn ieee80211_setmode "struct ieee80211com *ic" "enum ieee80211_phymode mode" -.Ft enum ieee80211_phymode -.Fo ieee80211_chan2mode -.Fa "struct ieee80211com *ic" "struct ieee80211_channel *chan" -.Fc -.Ft int -.Fo ieee80211_rate2media >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Fri Aug 14 14:35:16 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id AF0601065690; Fri, 14 Aug 2009 14:35:16 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 73B2D106568B for ; Fri, 14 Aug 2009 14:35:16 +0000 (UTC) (envelope-from truncs@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 617178FC52 for ; Fri, 14 Aug 2009 14:35:16 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7EEZGsx085862 for ; Fri, 14 Aug 2009 14:35:16 GMT (envelope-from truncs@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7EEZGAt085860 for perforce@freebsd.org; Fri, 14 Aug 2009 14:35:16 GMT (envelope-from truncs@FreeBSD.org) Date: Fri, 14 Aug 2009 14:35:16 GMT Message-Id: <200908141435.n7EEZGAt085860@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to truncs@FreeBSD.org using -f From: Aditya Sarawgi To: Perforce Change Reviews Cc: Subject: PERFORCE change 167326 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Aug 2009 14:35:16 -0000 http://perforce.freebsd.org/chv.cgi?CH=167326 Change 167326 by truncs@aditya on 2009/08/14 14:35:08 Change license. Affected files ... .. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_fs.h#32 edit .. //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#17 edit Differences ... ==== //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_fs.h#32 (text+ko) ==== @@ -7,32 +7,31 @@ * $FreeBSD: src/sys/gnu/fs/ext2fs/ext2_fs.h,v 1.17 2009/06/03 13:25:50 stas Exp $ */ /*- - * linux/include/linux/ext2_fs.h + * Copyright (c) 2009 Aditya Sarawgi + * All rights reserved. * - * Copyright (C) 1992, 1993, 1994, 1995 - * Remy Card (card@masi.ibp.fr) - * Laboratoire MASI - Institut Blaise Pascal - * Universite Pierre et Marie Curie (Paris VI) + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. * - * from + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. * - * linux/include/linux/minix_fs.h - * - * Copyright (C) 1991, 1992 Linus Torvalds - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * + * */ #ifndef _LINUX_EXT2_FS_H ==== //depot/projects/soc2009/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#17 (text+ko) ==== @@ -36,24 +36,6 @@ * $FreeBSD: src/sys/gnu/fs/ext2fs/ext2_vfsops.c,v 1.183 2009/06/07 08:42:26 stas Exp $ */ -/*- - * COPYRIGHT.INFO says this has some GPL'd code from ext2_super.c in it - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - #include #include #include @@ -218,25 +200,11 @@ (fs->e2fs->e2fs_state & E2FS_ERRORS)) { if (mp->mnt_flag & MNT_FORCE) { printf( ->>>> ORIGINAL //depot/vendor/freebsd/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#34 - "dismounted\n", fs->fs_fsmnt); -==== THEIRS //depot/vendor/freebsd/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#35 -"WARNING: %s was not properly dismounted\n", fs->fs_fsmnt); -==== YOURS //aditya/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_vfsops.c "WARNING: %s was not properly dismounted\n", fs->e2fs_fsmnt); -<<<< } else { printf( ->>>> ORIGINAL //depot/vendor/freebsd/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#34 - "denied. Filesystem is not clean" - " - run fsck\n", fs->fs_fsmnt); -==== THEIRS //depot/vendor/freebsd/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#35 "WARNING: R/W mount of %s denied. Filesystem is not clean - run fsck\n", - fs->fs_fsmnt); -==== YOURS //aditya/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_vfsops.c -"WARNING: R/W mount of %s denied. Filesystem is not clean - run fsck\n", - fs->e2fs_fsmnt); -<<<< + fs->e2fs_fsmnt); return (EPERM); } } @@ -322,18 +290,8 @@ devtoname(dev), es->e2fs_magic, E2FS_MAGIC); return (1); } ->>>> ORIGINAL //depot/vendor/freebsd/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#34 - if (es->s_rev_level > EXT2_GOOD_OLD_REV) { - if (es->s_feature_incompat & ~EXT2_FEATURE_INCOMPAT_SUPP) { - printf("WARNING: mount of %s denied due to unsupported " - "optional features\n", devtoname(dev)); -==== THEIRS //depot/vendor/freebsd/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#35 - if (es->s_rev_level > EXT2_GOOD_OLD_REV) { - if (es->s_feature_incompat & ~EXT2_FEATURE_INCOMPAT_SUPP) { -==== YOURS //aditya/soc_ext2fs/src/sys/gnu/fs/ext2fs/ext2_vfsops.c if (es->e2fs_rev > E2FS_REV0) { if (es->e2fs_features_incompat & ~EXT2F_INCOMPAT_SUPP) { -<<<< printf( "WARNING: mount of %s denied due to unsupported optional features\n", devtoname(dev)); From owner-p4-projects@FreeBSD.ORG Fri Aug 14 14:47:30 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0F399106568D; Fri, 14 Aug 2009 14:47:30 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C7A09106568C for ; Fri, 14 Aug 2009 14:47:29 +0000 (UTC) (envelope-from marta@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B45728FC61 for ; Fri, 14 Aug 2009 14:47:29 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7EElTkF086706 for ; Fri, 14 Aug 2009 14:47:29 GMT (envelope-from marta@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7EElTnx086704 for perforce@freebsd.org; Fri, 14 Aug 2009 14:47:29 GMT (envelope-from marta@FreeBSD.org) Date: Fri, 14 Aug 2009 14:47:29 GMT Message-Id: <200908141447.n7EElTnx086704@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marta@FreeBSD.org using -f From: Marta Carbone To: Perforce Change Reviews Cc: Subject: PERFORCE change 167327 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Aug 2009 14:47:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=167327 Change 167327 by marta@marta_onelab1 on 2009/08/14 14:47:13 Added some missing files (related to the previous commit), integrate with head. Affected files ... .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/posix1e/Makefile.inc#2 integrate .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/posix1e/mac.3#2 integrate .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/posix1e/mac_free.3#2 integrate .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/posix1e/mac_get.3#2 integrate .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/posix1e/mac_set.3#2 integrate .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/posix1e/mac_text.3#2 integrate .. //depot/projects/soc2009/marta_ipfw/src/lib/libc/posix1e/posix1e.3#2 integrate .. //depot/projects/soc2009/marta_ipfw/src/lib/libipfw/Makefile#1 add .. //depot/projects/soc2009/marta_ipfw/src/lib/libkvm/kvm_vnet.c#2 integrate .. //depot/projects/soc2009/marta_ipfw/src/sbin/ipfw/ipv6.c#2 edit .. //depot/projects/soc2009/marta_ipfw/src/sys/netinet/ipfw/ip_fw2.c#2 integrate Differences ... ==== //depot/projects/soc2009/marta_ipfw/src/lib/libc/posix1e/Makefile.inc#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/lib/libc/posix1e/Makefile.inc,v 1.22 2009/07/14 19:37:53 trasz Exp $ +# $FreeBSD: src/lib/libc/posix1e/Makefile.inc,v 1.23 2009/08/12 10:46:48 rwatson Exp $ .PATH: ${.CURDIR}/posix1e @@ -106,14 +106,16 @@ mac_get.3 mac_get_fd.3 \ mac_get.3 mac_get_file.3 \ mac_get.3 mac_get_link.3 \ + mac_get.3 mac_get_peer.3 \ mac_get.3 mac_get_pid.3 \ mac_get.3 mac_get_proc.3 \ mac_prepare.3 mac_prepare_file_label.3 \ mac_prepare.3 mac_prepare_ifnet_label.3 \ mac_prepare.3 mac_prepare_process_label.3 \ - mac_set.3 mac_set_link.3 \ + mac_prepare.3 mac_prepare_type.3 \ mac_set.3 mac_set_fd.3 \ mac_set.3 mac_set_file.3 \ + mac_set.3 mac_set_link.3 \ mac_set.3 mac_set_proc.3 \ mac_text.3 mac_from_text.3 \ mac_text.3 mac_to_text.3 ==== //depot/projects/soc2009/marta_ipfw/src/lib/libc/posix1e/mac.3#2 (text+ko) ==== @@ -1,4 +1,5 @@ .\" Copyright (c) 2001, 2003 Networks Associates Technology, Inc. +.\" Copyright (c) 2009 Robert N. M. Watson .\" All rights reserved. .\" .\" This software was developed for the FreeBSD Project by Chris @@ -28,9 +29,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac.3,v 1.15 2005/07/31 03:30:44 keramida Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac.3,v 1.16 2009/08/12 10:46:48 rwatson Exp $ .\" -.Dd April 19, 2003 +.Dd August 7, 2009 .Dt MAC 3 .Os .Sh NAME @@ -44,81 +45,82 @@ In the kernel configuration file: .Cd "options MAC" .Sh DESCRIPTION -.Fx -permits administrators to define Mandatory Access Control labels -defining levels for the privacy and integrity of data, -overriding discretionary policies -for those objects. -Not all objects currently provide support for MAC labels, -and MAC support must be explicitly enabled by the administrator. -The library calls include routines to retrieve, duplicate, -and set MAC labels associated with files and processes. +Mandatory Access Control labels describe confidentiality, integrity, and +other security attributes of operating system objects, overriding +discretionary access control. +Not all system objects support MAC labeling, and MAC policies must be +explicitly enabled by the administrator. +This API, based on POSIX.1e, includes routines to retrieve, manipulate, set, +and convert to and from text the MAC labels on files and processes. +.Pp +MAC labels consist of a set of (name, value) tuples, representing security +attributes from MAC policies. +For example, this label contains security labels defined by two policies, +.Xr mac_biba 4 +and +.Xr mac_mls 4 : +.Bd -literal -offset indent +biba/low,mls/low +.Ed +.Pp +Further syntax and semantics of MAC labels may be found in +.Xr maclabel 7 . +.Pp +Applications operate on labels stored in +.Vt mac_t , +but can convert between this internal format and a text format for the +purposes of presentation to uses or external storage. +When querying a label on an object, a +.Vt mac_t +must first be prepared using the interfaces described in +.Xr mac_prepare 3 , +allowing the application to declare which policies it wishes to interogate. +The application writer can also rely on default label names declared in +.Xr mac.conf 5 . .Pp -POSIX.1e describes a set of MAC manipulation routines -to manage the contents of MAC labels, -as well as their relationships with -files and processes; -almost all of these support routines -are implemented in -.Fx . +When finished with a +.Vt mac_t , +the application must call +.Xr mac_free 3 +to release its storage. .Pp -Available functions, sorted by behavior, include: +The following functions are defined: .Bl -tag -width indent -.It Fn mac_get_fd -This function is described in +.It Fn mac_is_present +This function, described in +.Xr mac_is_present 3 , +allows applications to test whether MAC is configured, as well as whether +specific policies are configured. +.It Fn mac_get_fd , Fn mac_get_file , Fn mac_get_link , Fn mac_get_peer +These functions, described in .Xr mac_get 3 , -and may be used to retrieve the -MAC label associated with -a specific file descriptor. -.It Fn mac_get_file -This function is described in +retrieve the MAC labels associated with file descriptors, files, and socket +peers. +.It Fn mac_get_pid , Fn mac_get_proc +These functions, described in .Xr mac_get 3 , -and may be used to retrieve the -MAC label associated with -a named file. -.It Fn mac_get_proc -This function is described in -.Xr mac_get 3 , -and may be used to retrieve the -MAC label associated with -the calling process. -.It Fn mac_set_fd -This function is described in +retrieve the MAC labels associated with processes. +.It Fn mac_set_fd , Fn mac_set_file , Fn mac_set_link +These functions, described in .Xr mac_set 3 , -and may be used to set the -MAC label associated with -a specific file descriptor. -.It Fn mac_set_file -This function is described in -.Xr mac_set 3 , -and may be used to set the -MAC label associated with -a named file. +set the MAC labels associated with file descriptors and files. .It Fn mac_set_proc -This function is described in +This function, described in .Xr mac_set 3 , -and may be used to set the -MAC label associated with -the calling process. +sets the MAC label associated with the current process. .It Fn mac_free -This function is described in +This function, desribed in .Xr mac_free 3 , -and may be used to free -userland working MAC label storage. +frees working MAC label storage. .It Fn mac_from_text -This function is described in +This function, described in .Xr mac_text 3 , -and may be used to convert -a text-form MAC label -into a working +converts a text-form MAC label into working MAC label storage, .Vt mac_t . -.It Fn mac_prepare -.It Fn mac_prepare_file_label -.It Fn mac_prepare_ifnet_label -.It Fn mac_prepare_process_label -These functions are described in +.It Fn mac_prepare , Fn mac_prepare_file_label , Fn mac_prepare_ifnet_label , Fn mac_prepare_process_label , Fn mac_prepare_type +These functions, described in .Xr mac_prepare 3 , -and may be used to preallocate storage for MAC label retrieval. +allocate working storage for MAC label operations. .Xr mac_prepare 3 prepares a label based on caller-specified label names; the other calls rely on the default configuration specified in @@ -130,15 +132,6 @@ .Vt mac_t into a text-form MAC label. .El -The behavior of some of these calls is influenced by the configuration -settings found in -.Xr mac.conf 5 , -the MAC library run-time configuration file. -.Sh IMPLEMENTATION NOTES -.Fx Ns 's -support for POSIX.1e interfaces and features -is -.Ud . .Sh FILES .Bl -tag -width ".Pa /etc/mac.conf" -compact .It Pa /etc/mac.conf @@ -150,24 +143,20 @@ .Sh SEE ALSO .Xr mac_free 3 , .Xr mac_get 3 , +.Xr mac_is_present 3 , .Xr mac_prepare 3 , .Xr mac_set 3 , .Xr mac_text 3 , +.Xr posix1e 3 , .Xr mac 4 , .Xr mac.conf 5 , .Xr mac 9 .Sh STANDARDS -These APIs are loosely based on the APIs described in POSIX.1e. -POSIX.1e is described in IEEE POSIX.1e draft 17. -Discussion of the draft -continues on the cross-platform POSIX.1e implementation mailing list. -To join this list, see the -.Fx -POSIX.1e implementation page -for more information. -However, the resemblance of these APIs to the POSIX APIs is only loose, -as the POSIX APIs were unable to express many notions required for -flexible and extensible access control. +These APIs are loosely based on the APIs described in POSIX.1e, as described +in IEEE POSIX.1e draft 17. +However, the resemblence of these APIS to the POSIX APIs is loose, as the +PSOXI APIS were unable to express some notinos required for flexible and +extensible access control. .Sh HISTORY Support for Mandatory Access Control was introduced in .Fx 5.0 ==== //depot/projects/soc2009/marta_ipfw/src/lib/libc/posix1e/mac_free.3#2 (text+ko) ==== @@ -31,7 +31,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac_free.3,v 1.6 2003/08/22 18:01:03 rwatson Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac_free.3,v 1.7 2009/08/12 10:46:48 rwatson Exp $ .\" .Dd December 21, 2001 .Dt MAC_FREE 3 @@ -64,6 +64,7 @@ .Xr mac_prepare 3 , .Xr mac_set 3 , .Xr mac_text 3 , +.Xr posix1e 3 , .Xr mac 4 , .Xr mac 9 .Sh STANDARDS @@ -91,8 +92,8 @@ .Tn TrustedBSD implementation, .Fn mac_free -is specific to that type, and must not be used to free the character -strings returned from +is specific to +.Vt mac_3 , +and must not be used to free the character strings returned from .Fn mac_to_text . -Doing so may result in undefined behavior, -including application failure. +Doing so may result in undefined behavior. ==== //depot/projects/soc2009/marta_ipfw/src/lib/libc/posix1e/mac_get.3#2 (text+ko) ==== @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac_get.3,v 1.10 2004/06/30 20:09:09 ru Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac_get.3,v 1.11 2009/08/12 10:46:48 rwatson Exp $ .\" .Dd December 21, 2001 .Dt MAC_GET 3 @@ -133,6 +133,7 @@ .Xr mac_prepare 3 , .Xr mac_set 3 , .Xr mac_text 3 , +.Xr posix1e 3 , .Xr mac 4 , .Xr mac 9 .Sh STANDARDS ==== //depot/projects/soc2009/marta_ipfw/src/lib/libc/posix1e/mac_set.3#2 (text+ko) ==== @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac_set.3,v 1.11 2006/07/07 14:02:17 rwatson Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac_set.3,v 1.12 2009/08/12 10:46:48 rwatson Exp $ .\" .Dd January 14, 2003 .Dt MAC_SET 3 @@ -138,6 +138,7 @@ .Xr mac_is_present 3 , .Xr mac_prepare 3 , .Xr mac_text 3 , +.Xr posix1e 3 , .Xr mac 4 , .Xr mac 9 .Sh HISTORY ==== //depot/projects/soc2009/marta_ipfw/src/lib/libc/posix1e/mac_text.3#2 (text+ko) ==== @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac_text.3,v 1.12 2006/07/07 14:02:17 rwatson Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac_text.3,v 1.13 2009/08/12 10:46:48 rwatson Exp $ .\" .Dd December 21, 2001 .Dt MAC_TEXT 3 @@ -98,6 +98,7 @@ .Xr mac_is_present 3 , .Xr mac_prepare 3 , .Xr mac_set 3 , +.Xr posix1e 3 , .Xr mac 4 , .Xr maclabel 7 .Sh STANDARDS ==== //depot/projects/soc2009/marta_ipfw/src/lib/libc/posix1e/posix1e.3#2 (text+ko) ==== @@ -1,5 +1,5 @@ .\"- -.\" Copyright (c) 2000 Robert N. M. Watson +.\" Copyright (c) 2000, 2009 Robert N. M. Watson .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -23,9 +23,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/posix1e.3,v 1.28 2009/05/19 22:28:33 brueffer Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/posix1e.3,v 1.29 2009/08/12 10:46:48 rwatson Exp $ .\" -.Dd May 20, 2009 +.Dd August 7, 2009 .Dt POSIX1E 3 .Os .Sh NAME @@ -36,99 +36,77 @@ .Sh SYNOPSIS .In sys/types.h .In sys/acl.h -.\" .In sys/capability.h .In sys/mac.h .Sh DESCRIPTION -The IEEE POSIX.1e specification never left draft form, but the interfaces -it describes are now widely used despite inherent limitations. -Currently, only a few of the interfaces and features are implemented in -.Fx , -although efforts are underway to complete the integration at this time. +POSIX.1e describes five security extensions to the POSIX.1 API: Access +Control Lists (ACLs), Auditing, Capabilities, Mandatory Access Control, and +Information Flow Labels. +While IEEE POSIX.1e D17 specification has not been standardized, several of +its interfaces are widely used. .Pp -POSIX.1e describes five security extensions to the base POSIX.1 API: -Access Control Lists (ACLs), Auditing, Capabilities, Mandatory Access -Control, and Information Flow Labels. .Fx -supports POSIX.1e ACL interfaces, as well as POSIX.1e-like MAC -interfaces. -The TrustedBSD Project has produced but not integrated an implementation -of POSIX.1e Capabilities. +implements POSIX.1e interface for access control lists, described in +.Xr acl 3 , +and supports ACLs on the +.Xr ffs 7 +file system; ACLs must be administratively enabled using +.Xr tunefs 8 . .Pp -POSIX.1e defines both syntax and semantics for these features, but fairly -substantial changes are required to implement these features in the -operating system. +.Fx +implements a POSIX.1e-like mandatory access control interface, described in +.Xr mac 3 , +although with a number of extensions and important semantic differences. .Pp -As shipped, -.Fx 4.0 -provides API and VFS support for ACLs, but not an implementation on any -native file system. -.Fx 5.0 -includes support for ACLs as part of UFS1 and UFS2, as well as necessary -VFS support for additional file systems to export ACLs as appropriate. -Available API calls relating to ACLs are described in detail in -.Xr acl 3 . -.Pp -As shipped, -.Fx 5.0 -includes support for Mandatory Access Control as well as POSIX.1e-like -APIs for label management. -More information on API calls relating to MAC is available in -.Xr mac 3 . -.Pp -Additional patches supporting POSIX.1e features are provided by the -TrustedBSD project: -.Pp -http://www.TrustedBSD.org/ -.Sh IMPLEMENTATION NOTES -.Fx Ns 's -support for POSIX.1e interfaces and features is still under -development at this time, and many of these features are considered new -or experimental. +.Fx +does not implement the POSIX.1e audit, privilege (capability), or information +flow label APIs. +However, +.Fx +does implement the +.Xr libbsm +audit API. .Sh ENVIRONMENT -POSIX.1e assigns security labels to all objects, extending the security +POSIX.1e assigns security attributes to all objects, extending the security functionality described in POSIX.1. -These additional labels provide -fine-grained discretionary access control, fine-grained capabilities, -and labels necessary for mandatory access control. +These additional attributes store fine-grained discretionary access control +information and mandatory access control labels; for files, they are stored +in extended attributes, described in +.Xr extattr 3 . +.Pp POSIX.2c describes -a set of userland utilities for manipulating these labels. -.Pp -Many of these services are supported by extended attributes, documented -in -.Xr extattr 2 +a set of userland utilities for manipulating these attributes, including +.Xr getfacl 1 +and +.Xr setfacl 1 +for access control lists, and +.Xr getfmac 8 and -.Xr extattr 9 . -While these APIs are not documented in POSIX.1e, they are similar in -structure. +.Xr setfmac 8 +for mandatory access control labels. .Sh SEE ALSO +.Xr getfacl 1 , +.Xr setfacl 1 , .Xr extattr 2 , .Xr acl 3 , +.Xr extattr 3 , .Xr libbsm 3 , .Xr mac 3 , +.Xr ffs 7 , +.Xr getfmac 8 , +.Xr setfmac 8 , +.Xr tunefs 8 , .Xr acl 9 , .Xr extattr 9 , .Xr mac 9 .Sh STANDARDS POSIX.1e is described in IEEE POSIX.1e draft 17. -Discussion of the draft continues -on the cross-platform POSIX.1e implementation -mailing list. -To join this list, see the -.Fx -POSIX.1e implementation -page for more information. .Sh HISTORY POSIX.1e support was introduced in .Fx 4.0 ; -most of the features are available as of +most features were available as of .Fx 5.0 . -Development continues. .Sh AUTHORS .An Robert N M Watson .An Chris D. Faulhaber .An Thomas Moestl .An Ilmar S Habibulin -.Sh BUGS -Many of these features are considered new or experimental in -.Fx 5.0 -and should be deployed with appropriate caution. ==== //depot/projects/soc2009/marta_ipfw/src/lib/libkvm/kvm_vnet.c#2 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libkvm/kvm_vnet.c,v 1.2 2009/08/01 19:26:27 rwatson Exp $"); +__FBSDID("$FreeBSD: src/lib/libkvm/kvm_vnet.c,v 1.3 2009/08/13 14:59:04 bz Exp $"); #include @@ -195,7 +195,7 @@ kd->vnet_start = nl[NLIST_START_VNET].n_value; kd->vnet_stop = nl[NLIST_STOP_VNET].n_value; kd->vnet_current = (uintptr_t)prison.pr_vnet; - kd->vnet_base = (uintptr_t)vnet.vnet_data_mem - kd->vnet_start; + kd->vnet_base = vnet.vnet_data_base; return (0); } ==== //depot/projects/soc2009/marta_ipfw/src/sbin/ipfw/ipv6.c#2 (text+ko) ==== @@ -23,6 +23,7 @@ */ #include +#include #include #include "ipfw2.h" @@ -66,35 +67,35 @@ } void -print_unreach6_code(uint16_t code) +print_unreach6_code(uint16_t code, struct sbuf *out) { char const *s = match_value(icmp6codes, code); if (s != NULL) - printf("unreach6 %s", s); + sbuf_printf(out, "unreach6 %s", s); else - printf("unreach6 %u", code); + sbuf_printf(out, "unreach6 %u", code); } /* * Print the ip address contained in a command. */ void -print_ip6(ipfw_insn_ip6 *cmd, char const *s) +print_ip6(ipfw_insn_ip6 *cmd, char const *s, struct sbuf *out, struct cmdline_opts *co) { struct hostent *he = NULL; int len = F_LEN((ipfw_insn *) cmd) - 1; struct in6_addr *a = &(cmd->addr6); char trad[255]; - printf("%s%s ", cmd->o.len & F_NOT ? " not": "", s); + sbuf_printf(out, "%s%s ", cmd->o.len & F_NOT ? " not": "", s); if (cmd->o.opcode == O_IP6_SRC_ME || cmd->o.opcode == O_IP6_DST_ME) { - printf("me6"); + sbuf_printf(out, "me6"); return; } if (cmd->o.opcode == O_IP6) { - printf(" ip6"); + sbuf_printf(out, " ip6"); return; } @@ -109,24 +110,24 @@ (cmd->o.opcode == O_IP6_SRC || cmd->o.opcode == O_IP6_DST) ? 128 : contigmask((uint8_t *)&(a[1]), 128); - if (mb == 128 && co.do_resolv) + if (mb == 128 && co->do_resolv) he = gethostbyaddr((char *)a, sizeof(*a), AF_INET6); if (he != NULL) /* resolved to name */ - printf("%s", he->h_name); + sbuf_printf(out, "%s", he->h_name); else if (mb == 0) /* any */ - printf("any"); + sbuf_printf(out, "any"); else { /* numeric IP followed by some kind of mask */ if (inet_ntop(AF_INET6, a, trad, sizeof( trad ) ) == NULL) - printf("Error ntop in print_ip6\n"); - printf("%s", trad ); + sbuf_printf(out, "Error ntop in print_ip6\n"); + sbuf_printf(out, "%s", trad ); if (mb < 0) /* XXX not really legal... */ - printf(":%s", + sbuf_printf(out, ":%s", inet_ntop(AF_INET6, &a[1], trad, sizeof(trad))); else if (mb < 128) - printf("/%d", mb); + sbuf_printf(out, "/%d", mb); } if (len > 2) - printf(","); + sbuf_printf(out, ","); } } @@ -158,32 +159,32 @@ void -print_icmp6types(ipfw_insn_u32 *cmd) +print_icmp6types(ipfw_insn_u32 *cmd, struct sbuf *out) { int i, j; char sep= ' '; - printf(" ip6 icmp6types"); + sbuf_printf(out, " ip6 icmp6types"); for (i = 0; i < 7; i++) for (j=0; j < 32; ++j) { if ( (cmd->d[i] & (1 << (j))) == 0) continue; - printf("%c%d", sep, (i*32 + j)); + sbuf_printf(out, "%c%d", sep, (i*32 + j)); sep = ','; } } void -print_flow6id( ipfw_insn_u32 *cmd) +print_flow6id( ipfw_insn_u32 *cmd, struct sbuf *out) { uint16_t i, limit = cmd->o.arg1; char sep = ','; - printf(" flow-id "); + sbuf_printf(out, " flow-id "); for( i=0; i < limit; ++i) { if (i == limit - 1) sep = ' '; - printf("%d%c", cmd->d[i], sep); + sbuf_printf(out, "%d%c", cmd->d[i], sep); } } @@ -258,41 +259,41 @@ } void -print_ext6hdr( ipfw_insn *cmd ) +print_ext6hdr( ipfw_insn *cmd, struct sbuf *out) { char sep = ' '; - printf(" extension header:"); + sbuf_printf(out, " extension header:"); if (cmd->arg1 & EXT_FRAGMENT ) { - printf("%cfragmentation", sep); + sbuf_printf(out, "%cfragmentation", sep); sep = ','; } if (cmd->arg1 & EXT_HOPOPTS ) { - printf("%chop options", sep); + sbuf_printf(out, "%chop options", sep); sep = ','; } if (cmd->arg1 & EXT_ROUTING ) { - printf("%crouting options", sep); + sbuf_printf(out, "%crouting options", sep); sep = ','; } if (cmd->arg1 & EXT_RTHDR0 ) { - printf("%crthdr0", sep); + sbuf_printf(out, "%crthdr0", sep); sep = ','; } if (cmd->arg1 & EXT_RTHDR2 ) { - printf("%crthdr2", sep); + sbuf_printf(out, "%crthdr2", sep); sep = ','; } if (cmd->arg1 & EXT_DSTOPTS ) { - printf("%cdestination options", sep); + sbuf_printf(out, "%cdestination options", sep); sep = ','; } if (cmd->arg1 & EXT_AH ) { - printf("%cauthentication header", sep); + sbuf_printf(out, "%cauthentication header", sep); sep = ','; } if (cmd->arg1 & EXT_ESP ) { - printf("%cencapsulated security payload", sep); + sbuf_printf(out, "%cencapsulated security payload", sep); } } ==== //depot/projects/soc2009/marta_ipfw/src/sys/netinet/ipfw/ip_fw2.c#2 (text+ko) ==== @@ -24,7 +24,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet/ipfw/ip_fw2.c,v 1.11 2009/08/01 19:26:27 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet/ipfw/ip_fw2.c,v 1.12 2009/08/14 10:09:45 julian Exp $"); #define DEB(x) #define DDB(x) x @@ -2057,7 +2057,7 @@ dst_ip, htons(dst_port), wildcard, NULL); if (pcb != NULL) { - *uc = crhold(inp->inp_cred); + *uc = crhold(pcb->inp_cred); *ugid_lookupp = 1; } INP_INFO_RUNLOCK(pi); From owner-p4-projects@FreeBSD.ORG Fri Aug 14 15:54:43 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8DBC01065692; Fri, 14 Aug 2009 15:54:43 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 38D8F106568E for ; Fri, 14 Aug 2009 15:54:43 +0000 (UTC) (envelope-from marinosi@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 26C718FC55 for ; Fri, 14 Aug 2009 15:54:43 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7EFshg1092639 for ; Fri, 14 Aug 2009 15:54:43 GMT (envelope-from marinosi@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7EFshR9092637 for perforce@freebsd.org; Fri, 14 Aug 2009 15:54:43 GMT (envelope-from marinosi@FreeBSD.org) Date: Fri, 14 Aug 2009 15:54:43 GMT Message-Id: <200908141554.n7EFshR9092637@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marinosi@FreeBSD.org using -f From: Ilias Marinos To: Perforce Change Reviews Cc: Subject: PERFORCE change 167329 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Aug 2009 15:54:43 -0000 http://perforce.freebsd.org/chv.cgi?CH=167329 Change 167329 by marinosi@marinosi_redrum on 2009/08/14 15:54:42 audit.c: - Added device mutex initialization code for all the slices except the base one.(Without it, using a device causes panic). - Removed an unecessary & always true check. (pointed out by rwatson). audit_slice.c: - Added a new write method code. It works fine with strings. - Many comments as it still experimental. Affected files ... .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#22 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.c#9 edit Differences ... ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#22 (text) ==== @@ -724,32 +724,24 @@ as_ptr = as; - uprintf("audit_slice_create: Calling audit_slice_init()\n"); /* Initialize the base slice */ audit_slice_init(as, name); - uprintf("audit_slice_create: Returned from audit_slice_init()\n"); - /* * XXXRW: Possibly start worker before creating the device? * FIXED. */ /* Start audit worker thread. */ - uprintf("audit_slice_create: Calling audit_worker_start()\n"); audit_worker_start(as); - uprintf("audit_slice_create: Returned from audit_worker_start()\n"); /* Create the special device node */ - uprintf("audit_slice_create: Calling audit_slice_cdev_init()\n"); audit_slice_cdev_init(as); - uprintf("audit_slice_create: Returned from audit_slice_cdev_init()\n"); /* Insert the slice on the list */ TAILQ_INSERT_TAIL(&audit_slice_q, as, as_q); AUDIT_SLICES_UNLOCK(); - } /* @@ -802,6 +794,13 @@ */ mtx_init(&(as->audit_mtx), "audit_mtx", NULL, MTX_DEF); + /* + * For all the != audit_base_slice slices, we should initialize the + * extra needed variables, mutexes etc here. + */ + if ( as != audit_base_slice ) + mtx_init(&(as->as_dev_mtx), "as_dev_mtx", NULL, MTX_DEF); + cv_init(&(as->audit_worker_cv), "audit_worker_cv"); cv_init(&(as->audit_watermark_cv), "audit_watermark_cv"); cv_init(&(as->audit_fail_cv), "audit_fail_cv"); @@ -840,12 +839,12 @@ */ if (as != NULL) { AUDIT_SLICES_LOCK_ASSERT(); - cv_destroy(&(as)->audit_worker_cv); + /*cv_destroy(&(as)->audit_worker_cv); cv_destroy(&(as)->audit_watermark_cv); cv_destroy(&(as)->audit_fail_cv); sx_destroy(&(as)->audit_worker_lock); - mtx_destroy(&(as)->audit_mtx); - mtx_destroy(&(as)->as_dev_mtx); + mtx_destroy(&(as)->audit_mtx);*/ + mtx_destroy(&(as->as_dev_mtx)); destroy_dev(as->as_dev); TAILQ_REMOVE(&audit_slice_q, as, as_q); free(as, M_AUDITSLICE); @@ -894,24 +893,22 @@ * that improperly? * Base slice should never call audit_slice_commit_rec. */ - if (ar == NULL) { - /* - * This is not very efficient; we're required to allocate a - * complete kernel audit record just so the user record can - * tag along. - * - * XXXAUDIT: Maybe AUE_AUDIT in the system call context and - * special pre-select handling? - * - * XXXRW: Not sure we need to use td->td_ar here at all? The - * base slice may already be using it to record the write - * syscall. - */ - ar = audit_new(AUE_NULL, td, as); - if (ar == NULL) - return (1); - } + /* + * This is not very efficient; we're required to allocate a + * complete kernel audit record just so the user record can + * tag along. + * + * XXXAUDIT: Maybe AUE_AUDIT in the system call context and + * special pre-select handling? + * + * XXXRW: Not sure we need to use td->td_ar here at all? The + * base slice may already be using it to record the write + * syscall. + */ + ar = audit_new(AUE_NULL, td, as); + if (ar == NULL) + return (1); /* * Note: it could be that some records initiated while audit was @@ -1408,7 +1405,6 @@ * Use lock to prevent slice creation/removal while iterating through * the queue, listing the slices. */ - uprintf("Slices List:\n"); AUDIT_SLICES_LOCK(); TAILQ_FOREACH(cur, &audit_slice_q, as_q) { uprintf("%s\n", cur->as_name); ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.c#9 (text+ko) ==== @@ -139,7 +139,7 @@ as = dev->si_drv1; mtx_lock(&(as->as_dev_mtx)); - as->as_dev_isopen = 1; + as->as_dev_isopen = 0; /* Do something here */ mtx_unlock(&(as->as_dev_mtx)); @@ -167,18 +167,33 @@ /* Actual work here */ int c, error = 0; - u_int32_t recsz = 0; - int nbytes = 0; /*Remaining bytes */ - struct bsm_rec_hdr *audit_slice_dev_buf; + //u_int32_t recsz = 0; + //int nbytes = 0; /*Remaining bytes */ + char *audit_slice_dev_buf; struct audit_slice *as; void *as_rec = NULL; as = dev->si_drv1; /* Safe malloc the pagesz of the system.*/ - audit_slice_dev_buf = malloc(sizeof(*audit_slice_dev_buf), - M_TEMP, M_WAITOK); + //audit_slice_dev_buf = malloc(sizeof(*audit_slice_dev_buf), + // M_TEMP, M_WAITOK); + audit_slice_dev_buf = (void *)malloc(PAGE_SIZE, M_TEMP, + M_WAITOK | M_ZERO); + + uprintf("[DEV_WRITE_METHOD] of slice %s.\n", as->as_name); + + /* Copy the string in from user memory to kernel memory */ + c = MIN(uio->uio_iov->iov_len,PAGE_SIZE); + error = copyin(uio->uio_iov->iov_base, audit_slice_dev_buf, c); + + /* Null terminate it */ + *(audit_slice_dev_buf + c) = 0; + if (error != 0) + uprintf("Write failed: bad address!\n"); + else + uprintf ("MESSAGE: %s\n", (char *) audit_slice_dev_buf); /* * XXXRW: This seems to handle multiple records/system call, but not * multiple system calls/record. To handle the latter, we need to @@ -186,39 +201,51 @@ * into until we have a complete record which we can then submit to * audit. */ - while (uio->uio_resid > 0) { - c = MIN((int)uio->uio_resid, sizeof(*audit_slice_dev_buf)); - if ( c == (int)uio->uio_resid ) - break; +// while (uio->uio_resid > 0) { +// c = MIN((int)uio->uio_resid, sizeof(*audit_slice_dev_buf)); +// if ( c == (int)uio->uio_resid ) +// break; +// +// /* Fetch the bsm record's header */ +// error = uiomove(audit_slice_dev_buf, c, uio); +// if (error) +// break; +// +// /* +// * Store the actual record's size. Add some checks before +// * this. +// * +// * XXXRW: for example, perhaps we shouldn't accept records +// * longer than MAX_AUDIT_RECORD_SIZE, or less than +// * sizeof(*audit_slice_dev_buf). +// */ +// recsz = be32toh(audit_slice_dev_buf->rec_byte_count); +// as_rec = (void *)malloc((unsigned long)recsz, M_AUDITBSM, +// M_WAITOK | M_ZERO); +// +// /* Copy the header at the start of record */ +// memmove(as_rec, audit_slice_dev_buf, +// sizeof(audit_slice_dev_buf)); +// +// nbytes = (int)recsz - sizeof(audit_slice_dev_buf); +// error = uiomove(as_rec, nbytes, uio); +// if (error) +// break; + + //audit_slice_commit_rec( as_rec, as); + +// uprintf("Size to be fetched: %d\n", uio->uio_resid); +// c = MIN((int)uio->uio_resid, PAGE_SIZE); +// error = uiomove(audit_slice_dev_buf, c, uio); +// if (error) +// break; + //uprintf("[DEV_WRITE_METHOD] of slice %s: %s\n", + // as->as_name, (char *) audit_slice_dev_buf); - /* Fetch the bsm record's header */ - error = uiomove(audit_slice_dev_buf, c, uio); - if (error) - break; - /* - * Store the actual record's size. Add some checks before - * this. - * - * XXXRW: for example, perhaps we shouldn't accept records - * longer than MAX_AUDIT_RECORD_SIZE, or less than - * sizeof(*audit_slice_dev_buf). - */ - recsz = be32toh(audit_slice_dev_buf->rec_byte_count); - as_rec = (void *)malloc((unsigned long)recsz, M_AUDITBSM, - M_WAITOK | M_ZERO); - /* Copy the header at the start of record */ - memmove(as_rec, audit_slice_dev_buf, - sizeof(audit_slice_dev_buf)); - nbytes = (int)recsz - sizeof(audit_slice_dev_buf); - error = uiomove(as_rec, nbytes, uio); - if (error) - break; - - audit_slice_commit_rec( as_rec, as); - } +// } /* * XXXRW: Only free as_rec if we allocated it. @@ -263,9 +290,12 @@ audit_slice_cdev_init(struct audit_slice *as) { + + as->perms = 0700; + /* Create the special device file. */ as->as_dev = make_dev(&audit_slice_cdevsw, as->unit, as->uid, as->gid, - as->perms, "%s", as->as_name); + as->perms, "auditslice/%s", as->as_name); } /* From owner-p4-projects@FreeBSD.ORG Fri Aug 14 19:11:18 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 80ACC106568D; Fri, 14 Aug 2009 19:11:18 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4513E1065672 for ; Fri, 14 Aug 2009 19:11:18 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 33CB08FC6E for ; Fri, 14 Aug 2009 19:11:18 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7EJBIEY021237 for ; Fri, 14 Aug 2009 19:11:18 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7EJBIcS021235 for perforce@freebsd.org; Fri, 14 Aug 2009 19:11:18 GMT (envelope-from syl@FreeBSD.org) Date: Fri, 14 Aug 2009 19:11:18 GMT Message-Id: <200908141911.n7EJBIcS021235@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 167332 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Aug 2009 19:11:18 -0000 http://perforce.freebsd.org/chv.cgi?CH=167332 Change 167332 by syl@syl_twoflowers on 2009/08/14 19:11:02 On Hans Petter advices replace DEFAULT_ROOTHUB by USB_DCI_DEFAULT_ROOTHUB. Use static const for fops in atmegadci driver. Style changes in at91. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/at91dci.c#14 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/atmegadci.c#12 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/avr32dci.c#11 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/musb_otg.c#13 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.c#20 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/uss820dci.c#12 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_controller.h#12 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/at91dci.c#14 (text+ko) ==== @@ -1641,13 +1641,13 @@ { struct at91dci_softc *sc = AT9100_DCI_BUS2SC(udev->bus); static const struct usb_roothub_fops fops = { - DEFAULT_ROOTHUB, - .handle_get_port_status = &at91dci_get_port_status, - .handle_clocks_on = (usb_clocks_fops_t)&at91dci_clocks_on, - .handle_clocks_off = (usb_clocks_fops_t)&at91dci_clocks_off, - .handle_pull_up = (usb_clocks_fops_t)&at91dci_pull_up, - .handle_pull_down = (usb_clocks_fops_t)&at91dci_pull_down, - .handle_wakeup_peer = (usb_clocks_fops_t)&at91dci_wakeup_peer, + USB_DCI_DEFAULT_ROOTHUB, + .handle_get_port_status = &at91dci_get_port_status, + .handle_clocks_on = (usb_clocks_fops_t)&at91dci_clocks_on, + .handle_clocks_off = (usb_clocks_fops_t)&at91dci_clocks_off, + .handle_pull_up = (usb_clocks_fops_t)&at91dci_pull_up, + .handle_pull_down = (usb_clocks_fops_t)&at91dci_pull_down, + .handle_wakeup_peer = (usb_clocks_fops_t)&at91dci_wakeup_peer, }; return generic_roothub_exec((struct usb_generic_softc *)sc, &fops, req, ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/atmegadci.c#12 (text+ko) ==== @@ -1563,15 +1563,15 @@ struct usb_device_request *req, const void **pptr, uint16_t *plength) { struct atmegadci_softc *sc = ATMEGA_BUS2SC(udev->bus); - struct usb_roothub_fops fops; - - bzero(&fops, sizeof(fops)); - fops.handle_clear_port_feature = &atmega_clear_port_feature; - fops.handle_clocks_on = (usb_clocks_fops_t)&atmegadci_clocks_on; - fops.handle_clocks_off = (usb_clocks_fops_t)&atmegadci_clocks_off; - fops.handle_pull_up = (usb_clocks_fops_t)&atmegadci_pull_up; - fops.handle_pull_down = (usb_clocks_fops_t)&atmegadci_pull_down; - fops.handle_wakeup_peer = (usb_clocks_fops_t)&atmegadci_wakeup_peer; + static const struct usb_roothub_fops fops = { + USB_DCI_DEFAULT_ROOTHUB, + .handle_clear_port_feature = &atmega_clear_port_feature, + .handle_clocks_on = (usb_clocks_fops_t)&atmegadci_clocks_on, + .handle_clocks_off = (usb_clocks_fops_t)&atmegadci_clocks_off, + .handle_pull_up = (usb_clocks_fops_t)&atmegadci_pull_up, + .handle_pull_down = (usb_clocks_fops_t)&atmegadci_pull_down, + .handle_wakeup_peer = (usb_clocks_fops_t)&atmegadci_wakeup_peer, + }; return generic_roothub_exec((struct usb_generic_softc *) sc, &fops, req, pptr, plength); } ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/avr32dci.c#11 (text+ko) ==== @@ -1549,7 +1549,7 @@ { struct avr32dci_softc *sc = AVR32_BUS2SC(udev->bus); static const struct usb_roothub_fops fops = { - DEFAULT_ROOTHUB, + USB_DCI_DEFAULT_ROOTHUB, .handle_clear_port_feature = &avr32dci_clear_port_feature, .handle_get_port_status = &avr32dci_get_port_status, .handle_clocks_on = (usb_clocks_fops_t)&avr32dci_clocks_on, ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/musb_otg.c#13 (text+ko) ==== @@ -2053,7 +2053,7 @@ { struct musbotg_softc *sc = MUSBOTG_BUS2SC(udev->bus); static const struct usb_roothub_fops fops = { - DEFAULT_ROOTHUB, + UBS_DCI_DEFAULT_ROOTHUB, .handle_get_port_status = &musbotg_get_port_status, .handle_clocks_on = (usb_clocks_fops_t)&musbotg_clocks_on, .handle_clocks_off = (usb_clocks_fops_t)&musbotg_clocks_off, ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.c#20 (text+ko) ==== @@ -859,7 +859,7 @@ { struct s3c24dci_softc *sc = S3C24_DCI_BUS2SC(udev->bus); static const struct usb_roothub_fops fops = { - DEFAULT_ROOTHUB, + USB_DCI_DEFAULT_ROOTHUB, .handle_clocks_on = (usb_clocks_fops_t)&s3c24dci_clocks_on, .handle_clocks_off = (usb_clocks_fops_t)&s3c24dci_clocks_off, .handle_pull_up = (usb_clocks_fops_t)&s3c24dci_pull_up, ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/uss820dci.c#12 (text+ko) ==== @@ -1629,7 +1629,7 @@ { struct uss820dci_softc *sc = USS820_DCI_BUS2SC(udev->bus); static const struct usb_roothub_fops fops = { - DEFAULT_ROOTHUB, + USB_DCI_DEFAULT_ROOTHUB, .handle_pull_up = (usb_clocks_fops_t)&uss820dci_pull_up, .handle_pull_down = (usb_clocks_fops_t)&uss820dci_pull_down, .handle_wakeup_peer = (usb_clocks_fops_t)&uss820dci_wakeup_peer, ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_controller.h#12 (text+ko) ==== @@ -272,7 +272,7 @@ usb_error_t generic_get_class_descriptor(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); usb_error_t generic_get_class_status(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); -#define DEFAULT_ROOTHUB \ +#define USB_DCI_DEFAULT_ROOTHUB \ .handle_get_descriptor = &generic_get_descriptor, \ .handle_get_config = &generic_get_config, \ .handle_get_status = &generic_get_status, \ From owner-p4-projects@FreeBSD.ORG Fri Aug 14 19:24:33 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3254910656BC; Fri, 14 Aug 2009 19:24:33 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D2ED5106568E for ; Fri, 14 Aug 2009 19:24:32 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B8A118FC59 for ; Fri, 14 Aug 2009 19:24:32 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7EJOWZI022142 for ; Fri, 14 Aug 2009 19:24:32 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7EJOWQJ022140 for perforce@freebsd.org; Fri, 14 Aug 2009 19:24:32 GMT (envelope-from mav@freebsd.org) Date: Fri, 14 Aug 2009 19:24:32 GMT Message-Id: <200908141924.n7EJOWQJ022140@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 167333 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Aug 2009 19:24:33 -0000 http://perforce.freebsd.org/chv.cgi?CH=167333 Change 167333 by mav@mav_mavbook on 2009/08/14 19:23:42 Add some ATAPI support to ATA_CAM wrapper. Affected files ... .. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-all.c#22 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/dev/ata/ata-all.c#22 (text+ko) ==== @@ -149,7 +149,9 @@ /* reset the controller HW, the channel and device(s) */ while (ATA_LOCKING(dev, ATA_LF_LOCK) != ch->unit) pause("ataatch", 1); +#ifndef ATA_CAM ATA_RESET(dev); +#endif ATA_LOCKING(dev, ATA_LF_UNLOCK); /* allocate DMA resources if DMA HW present*/ @@ -1188,11 +1190,6 @@ if (ccb->ccb_h.func_code == XPT_ATA_IO) { request->data = ccb->ataio.data_ptr; request->bytecount = ccb->ataio.dxfer_len; - } else { - request->data = ccb->csio.data_ptr; - request->bytecount = ccb->csio.dxfer_len; - } - if (ccb->ccb_h.func_code == XPT_ATA_IO) { request->u.ata.command = ccb->ataio.cmd.command; request->u.ata.feature = ((uint16_t)ccb->ataio.cmd.features_exp << 8) | (uint16_t)ccb->ataio.cmd.features; @@ -1206,14 +1203,29 @@ (uint64_t)ccb->ataio.cmd.lba_low; if (ccb->ataio.cmd.flags & CAM_ATAIO_48BIT) request->flags |= ATA_R_48BIT; - if (ccb->ataio.cmd.flags & CAM_ATAIO_DMA) + if ((ccb->ccb_h.flags & CAM_DIR_MASK) != CAM_DIR_NONE && + ccb->ataio.cmd.flags & CAM_ATAIO_DMA) + request->flags |= ATA_R_DMA; + if ((ccb->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) + request->flags |= ATA_R_READ; + if ((ccb->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_OUT) + request->flags |= ATA_R_WRITE; + } else { + request->data = ccb->csio.data_ptr; + request->bytecount = ccb->csio.dxfer_len; + bcopy((ccb->ccb_h.flags & CAM_CDB_POINTER) ? + ccb->csio.cdb_io.cdb_ptr : ccb->csio.cdb_io.cdb_bytes, + request->u.atapi.ccb, ccb->csio.cdb_len); + request->flags |= ATA_R_ATAPI; + if ((ccb->ccb_h.flags & CAM_DIR_MASK) != CAM_DIR_NONE /*&& + ccb->ataio.cmd.flags & CAM_ATAIO_DMA*/) request->flags |= ATA_R_DMA; if ((ccb->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) request->flags |= ATA_R_READ; if ((ccb->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_OUT) request->flags |= ATA_R_WRITE; } - request->transfersize = min(request->bytecount, 512); + request->transfersize = min(request->bytecount, 16*512); // request->callback = ad_done; request->retries = 0; request->timeout = ccb->ccb_h.timeout / 1000; @@ -1223,7 +1235,6 @@ ch->running = request; ch->state = ATA_ACTIVE; if (ch->hw.begin_transaction(request) == ATA_OP_FINISHED) { -device_printf(dev, "XXX: EARLY FINISH!\n"); ch->running = NULL; ch->state = ATA_IDLE; ata_cam_end_transaction(dev, request); @@ -1241,7 +1252,10 @@ ccb->ccb_h.status &= ~CAM_STATUS_MASK; if (request->result == 0) ccb->ccb_h.status |= CAM_REQ_CMP; - else + else if (ccb->ccb_h.func_code == XPT_SCSI_IO) { + ccb->ccb_h.status |= CAM_SCSI_STATUS_ERROR; + ccb->csio.scsi_status = SCSI_STATUS_CHECK_COND; + } else ccb->ccb_h.status |= CAM_REQ_CMP_ERR; ata_free_request(request); xpt_done(ccb); From owner-p4-projects@FreeBSD.ORG Fri Aug 14 19:25:41 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C4CD11065695; Fri, 14 Aug 2009 19:25:41 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 87DAF1065692 for ; Fri, 14 Aug 2009 19:25:41 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 754D48FC52 for ; Fri, 14 Aug 2009 19:25:41 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7EJPfJV022262 for ; Fri, 14 Aug 2009 19:25:41 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7EJPX2d022254 for perforce@freebsd.org; Fri, 14 Aug 2009 19:25:33 GMT (envelope-from jhb@freebsd.org) Date: Fri, 14 Aug 2009 19:25:33 GMT Message-Id: <200908141925.n7EJPX2d022254@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Cc: Subject: PERFORCE change 167334 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Aug 2009 19:25:42 -0000 http://perforce.freebsd.org/chv.cgi?CH=167334 Change 167334 by jhb@jhb_jhbbsd on 2009/08/14 19:25:33 IFC @167331 Affected files ... .. //depot/projects/smpng/share/man/man9/Makefile#8 integrate .. //depot/projects/smpng/share/man/man9/ieee80211.9#2 integrate .. //depot/projects/smpng/share/man/man9/ieee80211_amrr.9#1 branch .. //depot/projects/smpng/share/man/man9/ieee80211_beacon.9#1 branch .. //depot/projects/smpng/share/man/man9/ieee80211_bmiss.9#1 branch .. //depot/projects/smpng/share/man/man9/ieee80211_crypto.9#2 integrate .. //depot/projects/smpng/share/man/man9/ieee80211_ddb.9#1 branch .. //depot/projects/smpng/share/man/man9/ieee80211_input.9#2 integrate .. //depot/projects/smpng/share/man/man9/ieee80211_ioctl.9#2 delete .. //depot/projects/smpng/share/man/man9/ieee80211_node.9#2 integrate .. //depot/projects/smpng/share/man/man9/ieee80211_output.9#2 integrate .. //depot/projects/smpng/share/man/man9/ieee80211_proto.9#2 integrate .. //depot/projects/smpng/share/man/man9/ieee80211_radiotap.9#2 integrate .. //depot/projects/smpng/share/man/man9/ieee80211_regdomain.9#1 branch .. //depot/projects/smpng/share/man/man9/ieee80211_scan.9#1 branch .. //depot/projects/smpng/share/man/man9/ieee80211_vap.9#1 branch .. //depot/projects/smpng/sys/amd64/amd64/local_apic.c#44 integrate .. //depot/projects/smpng/sys/amd64/amd64/machdep.c#84 integrate .. //depot/projects/smpng/sys/amd64/amd64/mp_machdep.c#58 integrate .. //depot/projects/smpng/sys/amd64/amd64/trap.c#67 integrate .. //depot/projects/smpng/sys/amd64/conf/GENERIC#83 integrate .. //depot/projects/smpng/sys/amd64/conf/NOTES#53 integrate .. //depot/projects/smpng/sys/amd64/conf/XENHVM#4 integrate .. //depot/projects/smpng/sys/amd64/include/apicvar.h#23 integrate .. //depot/projects/smpng/sys/amd64/include/smp.h#22 integrate .. //depot/projects/smpng/sys/arm/arm/minidump_machdep.c#2 integrate .. //depot/projects/smpng/sys/arm/arm/pmap.c#53 integrate .. //depot/projects/smpng/sys/cam/cam_ccb.h#13 integrate .. //depot/projects/smpng/sys/cam/cam_xpt.c#59 integrate .. //depot/projects/smpng/sys/cddl/compat/opensolaris/kern/opensolaris.c#5 integrate .. //depot/projects/smpng/sys/compat/linprocfs/linprocfs.c#80 integrate .. //depot/projects/smpng/sys/compat/linux/linux_ioctl.c#63 integrate .. //depot/projects/smpng/sys/compat/linux/linux_socket.c#50 integrate .. //depot/projects/smpng/sys/compat/svr4/svr4_sockio.c#18 integrate .. //depot/projects/smpng/sys/conf/files#250 integrate .. //depot/projects/smpng/sys/conf/options.amd64#26 integrate .. //depot/projects/smpng/sys/conf/options.i386#64 integrate .. //depot/projects/smpng/sys/conf/options.pc98#62 integrate .. //depot/projects/smpng/sys/contrib/altq/altq/altq_subr.c#16 integrate .. //depot/projects/smpng/sys/contrib/ipfilter/netinet/fil.c#25 integrate .. //depot/projects/smpng/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c#14 integrate .. //depot/projects/smpng/sys/contrib/pf/net/pf.c#37 integrate .. //depot/projects/smpng/sys/contrib/pf/net/pf_if.c#18 integrate .. //depot/projects/smpng/sys/contrib/pf/net/pf_ioctl.c#35 integrate .. //depot/projects/smpng/sys/contrib/pf/net/pf_subr.c#10 integrate .. //depot/projects/smpng/sys/contrib/rdma/rdma_cma.c#7 integrate .. //depot/projects/smpng/sys/ddb/db_sym.c#8 integrate .. //depot/projects/smpng/sys/dev/aac/aac.c#66 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi.c#115 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi_battery.c#23 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi_cpu.c#47 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi_dock.c#7 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi_thermal.c#45 integrate .. //depot/projects/smpng/sys/dev/adb/adb_bus.c#4 integrate .. //depot/projects/smpng/sys/dev/alc/if_alc.c#3 integrate .. //depot/projects/smpng/sys/dev/amdtemp/amdtemp.c#2 integrate .. //depot/projects/smpng/sys/dev/amr/amr.c#50 integrate .. //depot/projects/smpng/sys/dev/ata/ata-all.c#99 integrate .. //depot/projects/smpng/sys/dev/atkbdc/psm.c#16 integrate .. //depot/projects/smpng/sys/dev/bktr/bktr_os.c#31 integrate .. //depot/projects/smpng/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb.c#10 integrate .. //depot/projects/smpng/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#20 integrate .. //depot/projects/smpng/sys/dev/drm/drm_drv.c#17 integrate .. //depot/projects/smpng/sys/dev/drm/drm_pciids.h#15 integrate .. //depot/projects/smpng/sys/dev/drm/r600_cp.c#5 integrate .. //depot/projects/smpng/sys/dev/drm/radeon_drv.h#22 integrate .. //depot/projects/smpng/sys/dev/ips/ips_pci.c#13 integrate .. //depot/projects/smpng/sys/dev/isp/isp.c#60 integrate .. //depot/projects/smpng/sys/dev/isp/isp_freebsd.c#61 integrate .. //depot/projects/smpng/sys/dev/isp/isp_freebsd.h#44 integrate .. //depot/projects/smpng/sys/dev/isp/isp_ioctl.h#20 integrate .. //depot/projects/smpng/sys/dev/isp/isp_library.c#13 integrate .. //depot/projects/smpng/sys/dev/isp/isp_library.h#8 integrate .. //depot/projects/smpng/sys/dev/isp/isp_pci.c#58 integrate .. //depot/projects/smpng/sys/dev/isp/isp_sbus.c#29 integrate .. //depot/projects/smpng/sys/dev/isp/isp_stds.h#5 integrate .. //depot/projects/smpng/sys/dev/isp/isp_target.c#26 integrate .. //depot/projects/smpng/sys/dev/isp/isp_target.h#17 integrate .. //depot/projects/smpng/sys/dev/isp/ispmbox.h#28 integrate .. //depot/projects/smpng/sys/dev/isp/ispreg.h#12 integrate .. //depot/projects/smpng/sys/dev/isp/ispvar.h#39 integrate .. //depot/projects/smpng/sys/dev/ispfw/asm_2300.h#11 integrate .. //depot/projects/smpng/sys/dev/ispfw/asm_2400.h#2 integrate .. //depot/projects/smpng/sys/dev/ispfw/asm_2500.h#1 branch .. //depot/projects/smpng/sys/dev/ispfw/ispfw.c#17 integrate .. //depot/projects/smpng/sys/dev/mfi/mfi.c#29 integrate .. //depot/projects/smpng/sys/dev/mfi/mfi_ioctl.h#8 integrate .. //depot/projects/smpng/sys/dev/mfi/mfireg.h#11 integrate .. //depot/projects/smpng/sys/dev/mlx/mlx.c#24 integrate .. //depot/projects/smpng/sys/dev/mmc/mmc.c#12 integrate .. //depot/projects/smpng/sys/dev/pccbb/pccbb.c#72 integrate .. //depot/projects/smpng/sys/dev/pst/pst-iop.c#7 integrate .. //depot/projects/smpng/sys/dev/rp/rp.c#27 integrate .. //depot/projects/smpng/sys/dev/sound/pci/hda/hdac.c#37 integrate .. //depot/projects/smpng/sys/dev/twe/twe.c#16 integrate .. //depot/projects/smpng/sys/dev/usb/controller/usb_controller.c#12 integrate .. //depot/projects/smpng/sys/dev/usb/input/ukbd.c#10 integrate .. //depot/projects/smpng/sys/dev/usb/net/usb_ethernet.c#8 integrate .. //depot/projects/smpng/sys/dev/usb/usb_compat_linux.c#12 integrate .. //depot/projects/smpng/sys/dev/usb/usb_dev.c#15 integrate .. //depot/projects/smpng/sys/dev/usb/usb_handle_request.c#13 integrate .. //depot/projects/smpng/sys/dev/usb/usb_hub.c#13 integrate .. //depot/projects/smpng/sys/dev/usb/usbdevs#143 integrate .. //depot/projects/smpng/sys/dev/usb/wlan/if_upgt.c#8 integrate .. //depot/projects/smpng/sys/dev/xen/blkback/blkback.c#4 integrate .. //depot/projects/smpng/sys/dev/xen/netback/netback.c#3 integrate .. //depot/projects/smpng/sys/fs/nfs/nfsport.h#8 integrate .. //depot/projects/smpng/sys/fs/unionfs/union_subr.c#40 integrate .. //depot/projects/smpng/sys/i386/acpica/acpi_machdep.c#34 integrate .. //depot/projects/smpng/sys/i386/bios/smapi.c#11 integrate .. //depot/projects/smpng/sys/i386/bios/smbios.c#7 integrate .. //depot/projects/smpng/sys/i386/bios/vpd.c#7 integrate .. //depot/projects/smpng/sys/i386/conf/GENERIC#114 integrate .. //depot/projects/smpng/sys/i386/conf/NOTES#145 integrate .. //depot/projects/smpng/sys/i386/i386/local_apic.c#66 integrate .. //depot/projects/smpng/sys/i386/i386/machdep.c#144 integrate .. //depot/projects/smpng/sys/i386/i386/mp_machdep.c#122 integrate .. //depot/projects/smpng/sys/i386/i386/trap.c#116 integrate .. //depot/projects/smpng/sys/i386/include/apicvar.h#35 integrate .. //depot/projects/smpng/sys/i386/include/smp.h#31 integrate .. //depot/projects/smpng/sys/i386/xen/mp_machdep.c#13 integrate .. //depot/projects/smpng/sys/ia64/ia64/interrupt.c#44 integrate .. //depot/projects/smpng/sys/ia64/include/smp.h#10 integrate .. //depot/projects/smpng/sys/kern/kern_exec.c#123 integrate .. //depot/projects/smpng/sys/kern/kern_jail.c#76 integrate .. //depot/projects/smpng/sys/kern/kern_linker.c#105 integrate .. //depot/projects/smpng/sys/kern/kern_poll.c#37 integrate .. //depot/projects/smpng/sys/kern/kern_shutdown.c#79 integrate .. //depot/projects/smpng/sys/kern/kern_sysctl.c#68 integrate .. //depot/projects/smpng/sys/kern/kern_uuid.c#22 integrate .. //depot/projects/smpng/sys/kern/kern_vimage.c#11 delete .. //depot/projects/smpng/sys/kern/subr_bus.c#82 integrate .. //depot/projects/smpng/sys/kern/subr_kdb.c#23 integrate .. //depot/projects/smpng/sys/kern/subr_pcpu.c#15 integrate .. //depot/projects/smpng/sys/kern/subr_smp.c#57 integrate .. //depot/projects/smpng/sys/kern/sys_socket.c#34 integrate .. //depot/projects/smpng/sys/kern/tty_pts.c#21 integrate .. //depot/projects/smpng/sys/kern/tty_ttydisc.c#7 integrate .. //depot/projects/smpng/sys/kern/uipc_domain.c#26 integrate .. //depot/projects/smpng/sys/kern/uipc_socket.c#130 integrate .. //depot/projects/smpng/sys/kern/uipc_syscalls.c#121 integrate .. //depot/projects/smpng/sys/kern/uipc_usrreq.c#91 integrate .. //depot/projects/smpng/sys/kern/vfs_cache.c#59 integrate .. //depot/projects/smpng/sys/kern/vfs_mount.c#100 integrate .. //depot/projects/smpng/sys/kern/vfs_syscalls.c#154 integrate .. //depot/projects/smpng/sys/mips/include/smp.h#3 integrate .. //depot/projects/smpng/sys/mips/mips/mp_machdep.c#5 integrate .. //depot/projects/smpng/sys/modules/ispfw/Makefile#5 integrate .. //depot/projects/smpng/sys/modules/ispfw/isp_2400_multi/Makefile#1 branch .. //depot/projects/smpng/sys/modules/ispfw/isp_2500/Makefile#1 branch .. //depot/projects/smpng/sys/modules/ispfw/isp_2500_multi/Makefile#1 branch .. //depot/projects/smpng/sys/net/bpf.c#90 integrate .. //depot/projects/smpng/sys/net/bpf_buffer.c#4 integrate .. //depot/projects/smpng/sys/net/bpf_zerocopy.c#5 integrate .. //depot/projects/smpng/sys/net/bpfdesc.h#22 integrate .. //depot/projects/smpng/sys/net/bridgestp.c#30 integrate .. //depot/projects/smpng/sys/net/flowtable.c#6 integrate .. //depot/projects/smpng/sys/net/if.c#126 integrate .. //depot/projects/smpng/sys/net/if_bridge.c#61 integrate .. //depot/projects/smpng/sys/net/if_clone.c#15 integrate .. //depot/projects/smpng/sys/net/if_ef.c#33 integrate .. //depot/projects/smpng/sys/net/if_enc.c#14 integrate .. //depot/projects/smpng/sys/net/if_epair.c#3 integrate .. //depot/projects/smpng/sys/net/if_ethersubr.c#102 integrate .. //depot/projects/smpng/sys/net/if_faith.c#39 integrate .. //depot/projects/smpng/sys/net/if_gif.c#54 integrate .. //depot/projects/smpng/sys/net/if_gre.c#42 integrate .. //depot/projects/smpng/sys/net/if_llatbl.c#5 integrate .. //depot/projects/smpng/sys/net/if_loop.c#59 integrate .. //depot/projects/smpng/sys/net/if_mib.c#19 integrate .. //depot/projects/smpng/sys/net/if_spppsubr.c#45 integrate .. //depot/projects/smpng/sys/net/if_stf.c#52 integrate .. //depot/projects/smpng/sys/net/if_tun.c#66 integrate .. //depot/projects/smpng/sys/net/if_vlan.c#69 integrate .. //depot/projects/smpng/sys/net/netisr.c#20 integrate .. //depot/projects/smpng/sys/net/raw_cb.c#24 integrate .. //depot/projects/smpng/sys/net/raw_usrreq.c#32 integrate .. //depot/projects/smpng/sys/net/route.c#52 integrate .. //depot/projects/smpng/sys/net/rtsock.c#77 integrate .. //depot/projects/smpng/sys/net/vnet.c#2 integrate .. //depot/projects/smpng/sys/net/vnet.h#15 integrate .. //depot/projects/smpng/sys/net80211/ieee80211.c#46 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_ddb.c#20 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_freebsd.c#25 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_scan_sta.c#15 integrate .. //depot/projects/smpng/sys/netatalk/at_control.c#19 integrate .. //depot/projects/smpng/sys/netgraph/atm/ng_atm.c#21 integrate .. //depot/projects/smpng/sys/netgraph/ng_base.c#68 integrate .. //depot/projects/smpng/sys/netgraph/ng_bridge.c#22 integrate .. //depot/projects/smpng/sys/netgraph/ng_eiface.c#37 integrate .. //depot/projects/smpng/sys/netgraph/ng_ether.c#46 integrate .. //depot/projects/smpng/sys/netgraph/ng_gif.c#22 integrate .. //depot/projects/smpng/sys/netgraph/ng_iface.c#39 integrate .. //depot/projects/smpng/sys/netgraph/ng_pipe.c#3 integrate .. //depot/projects/smpng/sys/netgraph/ng_source.c#19 integrate .. //depot/projects/smpng/sys/netinet/icmp6.h#17 integrate .. //depot/projects/smpng/sys/netinet/icmp_var.h#13 integrate .. //depot/projects/smpng/sys/netinet/if_ether.c#75 integrate .. //depot/projects/smpng/sys/netinet/igmp.c#37 integrate .. //depot/projects/smpng/sys/netinet/in.c#59 integrate .. //depot/projects/smpng/sys/netinet/in_gif.c#31 integrate .. //depot/projects/smpng/sys/netinet/in_mcast.c#17 integrate .. //depot/projects/smpng/sys/netinet/in_pcb.c#101 integrate .. //depot/projects/smpng/sys/netinet/in_pcb.h#67 integrate .. //depot/projects/smpng/sys/netinet/in_proto.c#36 integrate .. //depot/projects/smpng/sys/netinet/in_rmx.c#29 integrate .. //depot/projects/smpng/sys/netinet/ip_carp.c#38 integrate .. //depot/projects/smpng/sys/netinet/ip_divert.c#70 integrate .. //depot/projects/smpng/sys/netinet/ip_fastfwd.c#38 integrate .. //depot/projects/smpng/sys/netinet/ip_icmp.c#54 integrate .. //depot/projects/smpng/sys/netinet/ip_input.c#106 integrate .. //depot/projects/smpng/sys/netinet/ip_ipsec.c#18 integrate .. //depot/projects/smpng/sys/netinet/ip_mroute.c#70 integrate .. //depot/projects/smpng/sys/netinet/ip_options.c#17 integrate .. //depot/projects/smpng/sys/netinet/ip_output.c#113 integrate .. //depot/projects/smpng/sys/netinet/ip_var.h#44 integrate .. //depot/projects/smpng/sys/netinet/ipfw/ip_fw2.c#6 integrate .. //depot/projects/smpng/sys/netinet/ipfw/ip_fw_nat.c#4 integrate .. //depot/projects/smpng/sys/netinet/ipfw/ip_fw_pfil.c#4 integrate .. //depot/projects/smpng/sys/netinet/raw_ip.c#86 integrate .. //depot/projects/smpng/sys/netinet/sctp_os_bsd.h#25 integrate .. //depot/projects/smpng/sys/netinet/tcp_hostcache.c#23 integrate .. //depot/projects/smpng/sys/netinet/tcp_input.c#131 integrate .. //depot/projects/smpng/sys/netinet/tcp_offload.c#9 integrate .. //depot/projects/smpng/sys/netinet/tcp_output.c#64 integrate .. //depot/projects/smpng/sys/netinet/tcp_reass.c#11 integrate .. //depot/projects/smpng/sys/netinet/tcp_sack.c#33 integrate .. //depot/projects/smpng/sys/netinet/tcp_subr.c#118 integrate .. //depot/projects/smpng/sys/netinet/tcp_syncache.c#75 integrate .. //depot/projects/smpng/sys/netinet/tcp_timer.c#49 integrate .. //depot/projects/smpng/sys/netinet/tcp_timewait.c#16 integrate .. //depot/projects/smpng/sys/netinet/tcp_usrreq.c#82 integrate .. //depot/projects/smpng/sys/netinet/tcp_var.h#73 integrate .. //depot/projects/smpng/sys/netinet/udp_usrreq.c#96 integrate .. //depot/projects/smpng/sys/netinet/udp_var.h#17 integrate .. //depot/projects/smpng/sys/netinet6/dest6.c#10 integrate .. //depot/projects/smpng/sys/netinet6/frag6.c#26 integrate .. //depot/projects/smpng/sys/netinet6/icmp6.c#59 integrate .. //depot/projects/smpng/sys/netinet6/in6.c#64 integrate .. //depot/projects/smpng/sys/netinet6/in6_gif.c#25 integrate .. //depot/projects/smpng/sys/netinet6/in6_ifattach.c#41 integrate .. //depot/projects/smpng/sys/netinet6/in6_mcast.c#5 integrate .. //depot/projects/smpng/sys/netinet6/in6_pcb.c#67 integrate .. //depot/projects/smpng/sys/netinet6/in6_proto.c#33 integrate .. //depot/projects/smpng/sys/netinet6/in6_rmx.c#25 integrate .. //depot/projects/smpng/sys/netinet6/in6_src.c#45 integrate .. //depot/projects/smpng/sys/netinet6/ip6_forward.c#29 integrate .. //depot/projects/smpng/sys/netinet6/ip6_input.c#69 integrate .. //depot/projects/smpng/sys/netinet6/ip6_ipsec.c#10 integrate .. //depot/projects/smpng/sys/netinet6/ip6_mroute.c#43 integrate .. //depot/projects/smpng/sys/netinet6/ip6_output.c#68 integrate .. //depot/projects/smpng/sys/netinet6/mld6.c#34 integrate .. //depot/projects/smpng/sys/netinet6/nd6.c#59 integrate .. //depot/projects/smpng/sys/netinet6/nd6_nbr.c#38 integrate .. //depot/projects/smpng/sys/netinet6/nd6_rtr.c#37 integrate .. //depot/projects/smpng/sys/netinet6/raw_ip6.c#64 integrate .. //depot/projects/smpng/sys/netinet6/route6.c#17 integrate .. //depot/projects/smpng/sys/netinet6/scope6.c#18 integrate .. //depot/projects/smpng/sys/netinet6/udp6_usrreq.c#61 integrate .. //depot/projects/smpng/sys/netipsec/ipsec.c#39 integrate .. //depot/projects/smpng/sys/netipsec/ipsec_input.c#23 integrate .. //depot/projects/smpng/sys/netipsec/ipsec_mbuf.c#16 integrate .. //depot/projects/smpng/sys/netipsec/ipsec_output.c#21 integrate .. //depot/projects/smpng/sys/netipsec/key.c#42 integrate .. //depot/projects/smpng/sys/netipsec/keysock.c#24 integrate .. //depot/projects/smpng/sys/netipsec/xform_ah.c#19 integrate .. //depot/projects/smpng/sys/netipsec/xform_esp.c#20 integrate .. //depot/projects/smpng/sys/netipsec/xform_ipcomp.c#17 integrate .. //depot/projects/smpng/sys/netipsec/xform_ipip.c#25 integrate .. //depot/projects/smpng/sys/netipsec/xform_tcp.c#9 integrate .. //depot/projects/smpng/sys/nfsclient/bootp_subr.c#46 integrate .. //depot/projects/smpng/sys/nfsclient/nfs_diskless.c#27 integrate .. //depot/projects/smpng/sys/nfsclient/nfs_subs.c#41 integrate .. //depot/projects/smpng/sys/nfsclient/nfs_vnops.c#93 integrate .. //depot/projects/smpng/sys/pc98/cbus/fdc.c#10 integrate .. //depot/projects/smpng/sys/pc98/conf/NOTES#69 integrate .. //depot/projects/smpng/sys/powerpc/include/smp.h#6 integrate .. //depot/projects/smpng/sys/powerpc/powerpc/mp_machdep.c#15 integrate .. //depot/projects/smpng/sys/security/audit/audit.h#14 integrate .. //depot/projects/smpng/sys/sparc64/include/smp.h#22 integrate .. //depot/projects/smpng/sys/sun4v/include/smp.h#7 integrate .. //depot/projects/smpng/sys/sys/bus.h#35 integrate .. //depot/projects/smpng/sys/sys/jail.h#31 integrate .. //depot/projects/smpng/sys/sys/lock.h#55 integrate .. //depot/projects/smpng/sys/sys/param.h#154 integrate .. //depot/projects/smpng/sys/sys/pcpu.h#29 integrate .. //depot/projects/smpng/sys/sys/smp.h#22 integrate .. //depot/projects/smpng/sys/sys/sysctl.h#63 integrate .. //depot/projects/smpng/sys/sys/vimage.h#19 delete .. //depot/projects/smpng/sys/ufs/ffs/ffs_softdep.c#76 integrate .. //depot/projects/smpng/sys/xdr/xdr_mbuf.c#4 integrate .. //depot/projects/smpng/sys/xen/xenbus/xenbus_probe.c#5 integrate Differences ... ==== //depot/projects/smpng/share/man/man9/Makefile#8 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/share/man/man9/Makefile,v 1.357 2009/07/11 17:36:59 cperciva Exp $ +# $FreeBSD: src/share/man/man9/Makefile,v 1.358 2009/08/12 21:03:16 sam Exp $ MAN= accept_filter.9 \ accf_data.9 \ @@ -121,13 +121,19 @@ hashinit.9 \ hexdump.9 \ ieee80211.9 \ + ieee80211_amrr.9 \ + ieee80211_beacon.9 \ + ieee80211_bmiss.9 \ ieee80211_crypto.9 \ + ieee80211_ddb.9 \ ieee80211_input.9 \ - ieee80211_ioctl.9 \ ieee80211_node.9 \ ieee80211_output.9 \ ieee80211_proto.9 \ ieee80211_radiotap.9 \ + ieee80211_regdomain.9 \ + ieee80211_scan.9 \ + ieee80211_vap.9 \ ifnet.9 \ inittodr.9 \ insmntque.9 \ @@ -627,52 +633,62 @@ MLINKS+=hashinit.9 hashdestroy.9 \ hashinit.9 hashinit_flags.9 \ hashinit.9 phashinit.9 -MLINKS+=ieee80211.9 ieee80211_attach.9 \ - ieee80211.9 ieee80211_chan2ieee.9 \ - ieee80211.9 ieee80211_chan2mode.9 \ - ieee80211.9 ieee80211_ieee2mhz.9 \ - ieee80211.9 ieee80211_ifattach.9 \ - ieee80211.9 ieee80211_ifdetach.9 \ - ieee80211.9 ieee80211_media2rate.9 \ - ieee80211.9 ieee80211_media_change.9 \ - ieee80211.9 ieee80211_media_init.9 \ - ieee80211.9 ieee80211_media_status.9 \ - ieee80211.9 ieee80211_mhz2ieee.9 \ - ieee80211.9 ieee80211_rate2media.9 \ - ieee80211.9 ieee80211_setmode.9 \ - ieee80211.9 ieee80211_watchdog.9 -MLINKS+=ieee80211_crypto.9 ieee80211_crypto_attach.9 \ - ieee80211_crypto.9 ieee80211_crypto_detach.9 \ - ieee80211_crypto.9 ieee80211_wep_crypt.9 -MLINKS+=ieee80211_input.9 ieee80211_decap.9 \ - ieee80211_input.9 ieee80211_recv_mgmt.9 -MLINKS+=ieee80211_ioctl.9 ieee80211_cfgget.9 \ - ieee80211_ioctl.9 ieee80211_cfgset.9 -MLINKS+=ieee80211_node.9 ieee80211_alloc_node.9 \ - ieee80211_node.9 ieee80211_begin_scan.9 \ - ieee80211_node.9 ieee80211_create_ibss.9 \ - ieee80211_node.9 ieee80211_dup_bss.9 \ - ieee80211_node.9 ieee80211_end_scan.9 \ - ieee80211_node.9 ieee80211_find_node.9 \ - ieee80211_node.9 ieee80211_free_allnodes.9 \ +MLINKS+=ieee80211.9 ieee80211_ifattach.9 \ + ieee80211.9 ieee80211_ifdetach.9 +MLINKS+=ieee80211_amrr.9 ieee80211_amrr_init.9 \ + ieee80211_amrr.9 ieee80211_amrr_cleanup.9 \ + ieee80211_amrr.9 ieee80211_amrr_setinterval.9 \ + ieee80211_amrr.9 ieee80211_amrr_node_init.9 \ + ieee80211_amrr.9 ieee80211_amrr_tx_complete.9 \ + ieee80211_amrr.9 ieee80211_amrr_tx_update.9 +MLINKS+=ieee80211_beacon.9 ieee80211_beacon_alloc.9 \ + ieee80211_beacon.9 ieee80211_beacon_update.9 \ + ieee80211_beacon.9 ieee80211_beacon_notify.9 +MLINKS+=ieee80211_bmiss.9 ieee80211_beacon_miss.9 +MLINKS+=ieee80211_crypto.9 ieee80211_key_update_begin.9 \ + ieee80211_crypto.9 ieee80211_key_update_end.9 \ + ieee80211_crypto.9 ieee80211_crypto_newkey.9 \ + ieee80211_crypto.9 ieee80211_crypto_setkey.9 \ + ieee80211_crypto.9 ieee80211_crypto_delglobalkeys.9 \ + ieee80211_crypto.9 ieee80211_crypto_reload_keys.9 \ + ieee80211_crypto.9 ieee80211_crypto_decap.9 \ + ieee80211_crypto.9 ieee80211_crypto_encap.9 \ + ieee80211_crypto.9 ieee80211_crypto_demic.9 \ + ieee80211_crypto.9 ieee80211_crypto_enmic.9 \ + ieee80211_crypto.9 ieee80211_notify_michael_failure.9 \ + ieee80211_crypto.9 ieee80211_notify_replay_failure.9 \ + ieee80211_crypto.9 ieee80211_crypto_register.9 \ + ieee80211_crypto.9 ieee80211_crypto_unregister.9 \ + ieee80211_crypto.9 ieee80211_crypto_available.9 +MLINKS+=ieee80211_input.9 ieee80211_input_all.9 +MLINKS+=ieee80211_node.9 ieee80211_find_rxnode.9 \ + ieee80211_node.9 ieee80211_find_rxnode_withkey.9 \ + ieee80211_node.9 ieee80211_ref_node.9 \ + ieee80211_node.9 ieee80211_unref_node.9 \ ieee80211_node.9 ieee80211_free_node.9 \ ieee80211_node.9 ieee80211_iterate_nodes.9 \ - ieee80211_node.9 ieee80211_lookup_node.9 \ - ieee80211_node.9 ieee80211_next_scan.9 \ - ieee80211_node.9 ieee80211_node_attach.9 \ - ieee80211_node.9 ieee80211_node_detach.9 \ - ieee80211_node.9 ieee80211_node_lateattach.9 \ - ieee80211_node.9 ieee80211_timeout_nodes.9 -MLINKS+=ieee80211_output.9 ieee80211_add_rates.9 \ - ieee80211_output.9 ieee80211_add_xrates.9 \ - ieee80211_output.9 ieee80211_encap.9 \ - ieee80211_output.9 ieee80211_send_mgmt.9 -MLINKS+=ieee80211_proto.9 ieee80211_dump_pkt.9 \ - ieee80211_proto.9 ieee80211_fix_rate.9 \ - ieee80211_proto.9 ieee80211_print_essid.9 \ - ieee80211_proto.9 ieee80211_proto_attach.9 \ - ieee80211_proto.9 ieee80211_proto_detach.9 -MLINKS+=ieee80211_radiotap.9 radiotap.9 + ieee80211_node.9 ieee80211_dump_node.9 \ + ieee80211_node.9 ieee80211_dump_nodes.9 +MLINKS+=ieee80211_output.9 M_WME_GETAC.9 \ + ieee80211_output.9 M_SEQNO_GET.9 \ + ieee80211_output.9 ieee80211_process_callback.9 +MLINKS+=ieee80211_proto.9 ieee80211_new_state.9 \ + ieee80211_proto.9 ieee80211_start_all.9 \ + ieee80211_proto.9 ieee80211_stop_all.9 \ + ieee80211_proto.9 ieee80211_suspend_all.9 \ + ieee80211_proto.9 ieee80211_resume_all.9 \ + ieee80211_proto.9 ieee80211_waitfor_parent.9 +MLINKS+=ieee80211_radiotap.9 radiotap.9 \ + ieee80211_radiotap.9 ieee80211_radiotap_attach.9 \ + ieee80211_radiotap.9 ieee80211_radiotap_active_vap.9 \ + ieee80211_radiotap.9 ieee80211_radiotap_active.9 \ + ieee80211_radiotap.9 ieee80211_radiotap_tx.9 +MLINKS+=ieee80211_regdomain.9 ieee80211_init_channels.9 \ + ieee80211_regdomain.9 ieee80211_sort_channels.9 \ + ieee80211_regdomain.9 ieee80211_alloc_countryie.9 +MLINKS+=ieee80211_vap.9 ieee80211_vap_setup.9 \ + ieee80211_vap.9 ieee80211_vap_attach.9 \ + ieee80211_vap.9 ieee80211_vap_detach.9 MLINKS+=ifnet.9 ifaddr.9 \ ifnet.9 if_data.9 \ ifnet.9 ifqueue.9 ==== //depot/projects/smpng/share/man/man9/ieee80211.9#2 (text+ko) ==== @@ -1,6 +1,5 @@ .\" -.\" Copyright (c) 2004 Bruce M. Simpson -.\" Copyright (c) 2004 Darron Broad +.\" Copyright (c) 2009 Sam Leffler, Errno Consulting .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -24,237 +23,539 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man9/ieee80211.9,v 1.4 2005/06/28 20:15:18 hmp Exp $ -.\" $Id: ieee80211.9,v 1.5 2004/03/04 12:33:27 bruce Exp $ +.\" $FreeBSD: src/share/man/man9/ieee80211.9,v 1.5 2009/08/12 21:03:16 sam Exp $ .\" -.Dd March 2, 2004 -.Dt IEEE80211 9 +.Dd August 4, 2009 +.Dt NET80211 9 .Os .Sh NAME -.Nm ieee80211_ifattach , ieee80211_ifdetach , -.Nm ieee80211_mhz2ieee , ieee80211_chan2ieee , ieee80211_ieee2mhz , -.Nm ieee80211_media_init , ieee80211_media_change , ieee80211_media_status , -.Nm ieee80211_watchdog , -.Nm ieee80211_setmode , ieee80211_chan2mode , -.Nm ieee80211_rate2media , ieee80211_media2rate -.Nd core 802.11 network stack functions +.Nm net80211 +.Nd 802.11 network layer .Sh SYNOPSIS .In net80211/ieee80211_var.h -.In net80211/ieee80211_proto.h .Ft void -.Fn ieee80211_ifattach "struct ifnet *ifp" +.Fn ieee80211_ifattach "struct ieee80211com *ic" "const uint8_t macaddr[IEEE80211_ADDR_LEN]" .Ft void -.Fn ieee80211_ifdetach "struct ifnet *ifp" -.Ft u_int -.Fn ieee80211_mhz2ieee "u_int freq" "u_int flags" -.Ft u_int -.Fn ieee80211_chan2ieee "struct ieee80211com *ic" "struct ieee80211_channel *c" -.Ft u_int -.Fn ieee80211_ieee2mhz "u_int chan" "u_int flags" -.Ft void -.Fo ieee80211_media_init -.Fa "struct ifnet *ifp" "ifm_change_cb_t media_change" -.Fa "ifm_stat_cb_t media_stat" -.Fc -.Fa int -.Fn ieee80211_media_change "struct ifnet *ifp" -.Fa void -.Fn ieee80211_media_status "struct ifnet *ifp" "struct ifmediareq *imr" -.Ft void -.Fn ieee80211_watchdog "struct ifnet *ifp" -.Ft int -.Fn ieee80211_setmode "struct ieee80211com *ic" "enum ieee80211_phymode mode" -.Ft enum ieee80211_phymode -.Fo ieee80211_chan2mode -.Fa "struct ieee80211com *ic" "struct ieee80211_channel *chan" -.Fc -.Ft int -.Fo ieee80211_rate2media -.Fa "struct ieee80211com *ic" "int rate" "enum ieee80211_phymode mode" -.Fc -.Ft int -.Fn ieee80211_media2rate "int mword" +.Fn ieee80211_ifdetach "struct ieee80211com *ic" .Sh DESCRIPTION +IEEE 802.11 device drivers are written to use the infrastructure provided +by the +.Nm +software layer. +This software provides a support framework for drivers that includes +ifnet cloning, state management, and a user management API by which +applications interact with 802.11 devices. +Most drivers depend on the +.Nm +layer for protocol services but devices that off-load functionality +may bypass the layer to connect directly to the device +(e.g. the +.Xr ndis 4 +emulation support does this). +.Pp +A +.Nm +device driver implements a virtual radio API that is exported to +users through network interfaces (aka vaps) that are cloned from the +underlying device. +These interfaces have an operating mode +(station, adhoc, hostap, wds, monitor, etc.) +that is fixed for the lifetime of the interface. +Devices that can support multiple concurrent interfaces allow +multiple vaps to be cloned. +This enables construction of interesting applications such as +an AP vap and one or more WDS vaps +or multiple AP vaps, each with a different security model. The -.Nm ieee80211 -collection of functions are used to manage wireless network interfaces in the -system which use the system's software 802.11 network stack. -Most of these functions require that attachment to the stack is performed -before calling. -Several utility functions are also provided; these are safe to call from -any driver without prior initialization. +.Nm +layer virtualizes most 802.11 state +and coordinates vap state changes including scheduling multiple vaps. +State that is not virtualized includes the current channel and +WME/WMM parameters. +Protocol processing is typically handled entirely in the +.Nm +layer with drivers responsible purely for moving data between the host +and device. +Similarly, +.Nm +handles most +.Xr ioctl 2 +requests without entering the driver; +instead drivers are notified of state changes that +require their involvement. .Pp -.\" +The virtual radio interface defined by the +.Nm +layer means that drivers must be structured to follow specific rules. +Drivers that support only a single interface at any time must still +follow these rules. +.Sh DATA STRUCTURES +The virtual radio architecture splits state between a single per-device +.Vt ieee80211com +structure and one or more +.Vt ieee80211vap +structures. +Drivers are expected to setup various shared state in these structures +at device attach and during vap creation but otherwise should treat them +as read-only. The -.Fn ieee80211_ifattach -function attaches the network interface -.Fa ifp -to the 802.11 network stack layer. -This function must be called before using any of the -.Nm ieee80211 -functions which need to store driver state across invocations; +.Vt ieee80211com +structure is allocated by the +.Nm +layer as adjunct data to a device's +.Vt ifnet ; +it is accessed through the +.Vt if_l2com +structure member. The -.Vt struct ifnet -instance pointed to by -.Fa ifp -MUST be an instance of -.Vt struct ieee80211com , -with various fields initialized to tell -.Nm ieee80211 -about its capabilities. -This function performs Ethernet and BPF attachment (by calling -.Fn ether_ifattach -and -.Fn bpfattach2 ) -on behalf of the caller. -It also implements the -.Vt ifmedia -interface. +.Vt ieee80211vap +structure is allocated by the driver in the +.Dq vap create +method +and should be extended with any driver-private state. +This technique of giving the driver control to allocate data structures +is used for other +.Nm +data structures and should be exploited to maintain driver-private state +together with public +.Nm +state. .Pp -.\" -The -.Fn ieee80211_ifdetach -function frees any -.Nm ieee80211 -structures associated with the driver, and performs Ethernet and BPF -detachment on behalf of the caller. +The other main data structures are the station, or node, table +that tracks peers in the local BSS, and the channel table that defines +the current set of available radio channels. +Both tables are bound to the +.Vt ieee80211com +structure and shared by all vaps. +Long-lasting references to a node are counted to guard against +premature reclamation. +In particular every packet sent/received holds a node reference +(either explicitly for transmit or implicitly on receive). .Pp -.\" The -.Fn ieee80211_mhz2ieee -utility function converts the frequency -.Fa freq -(specified in MHz) to an IEEE 802.11 channel number. +.Vt ieee80211com +and +.Vt ieee80211vap +structures also hold a collection of method pointers that drivers +fill-in and/or override to take control of certain operations. +These methods are the primary way drivers are bound to the +.Nm +layer and are described below. +.Sh DRIVER ATTACH/DETACH +Drivers attach to the +.Nm +layer with the +.Fn ieee80211_ifattach +function. +The driver is expected to allocate and setup any device-private +data structures before passing control. The -.Fa flags -argument is a hint which specifies whether the frequency is in -the 2GHz ISM band -.Pq Vt IEEE80211_CHAN_2GHZ -or the 5GHz band -.Pq Vt IEEE80211_CHAN_5GHZ ; -appropriate clipping of the result is then performed. +.Vt ieee80211com +structure must be pre-initialized with state required to setup the +.Nm +layer: +.Bl -tag -width ic_channels +.It Dv ic_ifp +Backpointer to the physical device's ifnet. +.It Dv ic_caps +Device/driver capabilities; see below for a complete description. +.It Dv ic_channels +Table of channels the device is capable of operating on. +This is initially provided by the driver but may be changed +through calls that change the regulatory state. +.It Dv ic_nchan +Number of entries in +.Dv ic_channels . +.El .Pp -.\" -The -.Fn ieee80211_chan2ieee -function converts the channel specified in -.Fa *c -to an IEEE channel number for the driver -.Fa ic . -If the conversion would be invalid, an error message is printed to the -system console. -This function REQUIRES that the driver is hooked up to the -.Nm ieee80211 -subsystem. +On return from +.Fn ieee80211_ifattach +the driver is expected to override default callback functions in the +.Vt ieee80211com +structure to register it's private routines. +Methods marked with a +.Dq * +must be provided by the driver. +.Bl -tag -width ic_channels +.It Dv ic_vap_create* +Create a vap instance of the specified type (operating mode). +Any fixed BSSID and/or MAC address is provided. +Drivers that support multi-bssid operation may honor the requested BSSID +or assign their own. +.It Dv ic_vap_delete* +Destroy a vap instance created with +.Dv ic_vap_create . +.It Dv ic_getradiocaps +Return the list of calibrated channels for the radio. +The default method returns the current list of channels +(space permitting). +.It Dv ic_setregdomain +Process a request to change regulatory state. +The routine may reject a request or constrain changes (e.g. reduce +transmit power caps). +The default method accepts all proposed changes. +.It Dv ic_send_mgmt +Send an 802.11 management frame. +The default method fabricates the frame using +.Nm +state and passes it to the driver through the +.Dv ic_raw_xmit +method. +.It Dv ic_raw_xmit +Transmit a raw 802.11 frame. +The default method drops the frame and generates a message on the console. +.It Dv ic_updateslot +Update hardware state after an 802.11 IFS slot time change, +There is no default method; the pointer may be NULL in which case +it will not be used. +.It Dv ic_update_mcast +Update hardware for a change in the multicast packet filter, +The default method prints a console message. +.It Dv ic_update_promisc +Update hardware for a change in the promiscuous mode setting. +The default method prints a console message. +.It Dv ic_newassoc +Update driver/device state for association to a new AP (in station mode) +or when a new station associates (e.g. in AP mode). +There is no default method; the pointer may be NULL in which case +it will not be used. +.It Dv ic_node_alloc +Allocate and initialize a +.Vt ieee80211_node +structure. +This method cannot sleep. +The default method allocates zero'd memory using +.Xr malloc 9. +Drivers should override this method to allocate extended storage +for their own needs. +Memory allocated by the driver must be tagged with +.Dv M_80211_NODE +to balance the memory allocation statistics. +.It Dv ic_node_free +Reclaim storage of a node allocated by +.Dv ic_node_alloc . +Drivers are expected to +.Em interpose +their own method to cleanup private state but must call through +this method to allow +.Nm +to reclaim it's private state. +.It Dv ic_node_cleanup +Cleanup state in a +.Vt ieee80211_node +created by +.Dv ic_node_alloc . +This operation is distinguished from +.Dv ic_node_free +in that it may be called long before the node is actually reclaimed +to cleanup adjunct state. +This can happen, for example, when a node must not be reclaimed +due to references held by packets in the transmit queue. +Drivers typically interpose +.Dv ic_node_cleanup +instead of +.Dv ic_node_free . +.It Dv ic_node_age +Age, and potentially reclaim, resources associated with a node. +The default method ages frames on the power-save queue (in AP mode) +and pending frames in the receive reorder queues (for stations using A-MPDU). +.It Dv ic_node_drain +Reclaim all optional resources associated with a node. +This call is used to free up resources when they are in short supply, +.It Dv ic_node_getrssi +Return the Receive Signal Strength Indication (RSSI) in .5 dBm units for +the specified node. +This interface returns a subset of the information +returned by +.Dv ic_node_getsignal , +The default method calculates a filtered average over the last ten +samples passed in to +.Xr ieee80211_input 9 +or +.Xr ieee80211_input_all 9 . +.It Dv ic_node_getsignal +Return the RSSI and noise floor (in .5 dBm units) for a station. +The default method calculates RSSI as described above; +the noise floor returned is the last value supplied to +.Xr ieee80211_input 9 +or +.Xr ieee80211_input_all 9 . +.It Dv ic_node_getmimoinfo +Return MIMO radio state for a station in support of the +.Dv IEEE80211_IOC_STA_INFO +ioctl request. +The default method returns nothing. +.It Dv ic_scan_start* +Prepare driver/hardware state for scanning. +This callback is done in a sleepable context. +.It Dv ic_scan_end* +Restore driver/hardware state after scanning completes. +This callback is done in a sleepable context. +.It Dv ic_set_channel* +Set the current radio channel using +.Vt ic_curchan . +This callback is done in a sleepable context. +.It Dv ic_scan_curchan +Start scanning on a channel. +This method is called immediately after each channel change +and must initiate the work to scan a channel and schedule a timer +to advance to the next channel in the scan list. +This callback is done in a sleepable context. +The default method handles active scan work (e.g. sending ProbRequest +frames), and schedules a call to +.Xr ieee80211_scan_next 9 +according to the maximum dwell time for the channel. +Drivers that off-load scan work to firmware typically use this method +to trigger per-channel scan activity. +.It Dv ic_scan_mindwell +Handle reaching the minimum dwell time on a channel when scanning. +This event is triggered when one or more stations have been found on +a channel and the minimum dwell time has been reached. +This callback is done in a sleepable context. +The default method signals the scan machinery to advance +to the next channel as soon as possible. +Drivers can use this method to preempt further work (e.g. if scanning +is handled by firmware) or ignore the request to force maximum dwell time +on a channel. +.It Dv ic_recv_action +Process a received Action frame. +The default method points to +.Xr ieee80211_recv_action 9 +which provides a mechanism for setting up handlers for each Action frame class. +.It Dv ic_send_action +Transmit an Action frame. +The default method points to +.Xr ieee80211_send_action 9 +which provides a mechanism for setting up handlers for each Action frame class. +.It Dv ic_ampdu_enable +Check if transmit A-MPDU should be enabled for the specified station and AC. +The default method checks a per-AC traffic rate against a per-vap +threshold to decide if A-MPDU should be enabled. +This method also rate-limits ADDBA requests so that requests are not +made too frequently when a receiver has limited resources. +.It Dv ic_addba_request +Request A-MPDU transmit aggregation. +The default method sets up local state and issues an +ADDBA Request Action frame. +Drivers may interpose this method if they need to setup private state +for handling transmit A-MPDU. +.It Dv ic_addb_response +Process a received ADDBA Response Action frame and setup resources as +needed for doing transmit A-MPDU, +.It Dv ic_addb_stop +Shutdown an A-MPDU transmit stream for the specified station and AC. +The default method reclaims local state after sending a DelBA Action frame. +.It Dv ic_bar_response +Process a response to a transmitted BAR control frame. +.It Dv ic_ampdu_rx_start +Prepare to receive A-MPDU data from the specified station for the TID. +.It Dv ic_ampdu_rx_stop +Terminate receipt of A-MPDU data from the specified station for the TID. +.El .Pp -.\" -The -.Fn ieee80211_ieee2mhz -utility function converts the IEEE channel number -.Ft chan -to a frequency (in MHz). -The -.Fa flags -argument is a hint which specifies whether the frequency is in -the 2GHz ISM band -.Pq Vt IEEE80211_CHAN_2GHZ -or the 5GHz band -.Pq Vt IEEE80211_CHAN_5GHZ ; -appropriate clipping of the result is then performed. +Once the +.Nm +layer is attached to a driver there are two more steps typically done +to complete the work: +.Bl -enum +.It +Setup +.Dq radiotap support +for capturing raw 802.11 packets that pass through the device. +This is done with a call to +.Xr ieee80211_radiotap_attach 9 . +.It +Do any final device setup like enabling interrupts. +.El .Pp -.\" +State is torn down and reclaimed with a call to +.Fn ieee80211_ifdetach . +Note this call may result in multiple callbacks into the driver +so it should be done before any critical driver state is reclaimed. +On return from +.Fn ieee80211_ifdetach +all associated vaps and ifnet structures are reclaimed or inaccessible +to user applications so it is safe to teardown driver state without +worry about being re-entered. +The driver is responsible for calling +.Xr if_free 9 +on the ifnet it allocated for the physical device. +.Sh DRIVER CAPABILITIES +Driver/device capabilities are specified using several sets of flags +in the +.Vt ieee80211com +structure. +General capabilities are specified by +.Vt ic_caps . +Hardware cryptographic capabilities are specified by +.Vt ic_cryptocaps . +802.11n capabilities, if any, are specified by +.Vt ic_htcaps . The -.Fn ieee80211_media_init -function initializes media data structures used by the -.Vt ifmedia -interface, for the driver -.Fa ifp . -It must be called by the driver after calling -.Fn ieee80211_attach -and before calling most -.Nm ieee80211 -functions. -The -.Fa media_change +.Nm +layer propagates a subset of these capabilities to each vap through +the equivalent fields: +.Vt iv_caps , +.Vt iv_cryptocaps , and -.Fa media_stat -arguments specify helper functions which will be invoked by the -.Vt ifmedia -framework when the user changes or queries media options, -using a command such as -.Xr ifconfig 8 . +.Vt iv_htcaps . +The following general capabilities are defined: +.Bl -tag -width IEEE80211_C_8023ENCAP +.It Dv IEEE80211_C_STA +Device is capable of operating in station (aka Infrastructure) mode. +.It Dv IEEE80211_C_8023ENCAP +Device requires 802.3-encapsulated frames be passed for transmit. +By default +.Nm +will encapsulate all outbound frames as 802.11 frames (without a PLCP header). +.It Dv IEEE80211_C_FF +Device supports Atheros Fast-Frames. +.It Dv IEEE80211_C_TURBOP +Device supports Atheros Dynamic Turbo mode. +.It Dv IEEE80211_C_IBSS +Device is capable of operating in adhoc/IBSS mode. +.It Dv IEEE80211_C_PMGT +Device supports dynamic power-management (aka power save) in station mode. +.It Dv IEEE80211_C_HOSTAP +Device is capable of operating as an Access Point in Infrastructure mode. +.It Dv IEEE80211_C_AHDEMO +Device is capable of operating in Adhoc Demo mode. +In this mode the device is used purely to send/receive raw 802.11 frames. +.It Dv IEEE80211_C_SWRETRY +Device supports software retry of transmitted frames. +.It Dv IEEE80211_C_TXPMGT +Device support dynamic transmit power changes on transmitted frames; +also known as Transmit Power Control (TPC). +.It Dv IEEE80211_C_SHSLOT +Device supports short slot time operation (for 802.11g). +.It Dv IEEE80211_C_SHPREAMBLE +Device supports short preamble operation (for 802.11g). +.It Dv IEEE80211_C_MONITOR +Device is capable of operating in monitor mode. +.It Dv IEEE80211_C_DFS >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Fri Aug 14 19:53:12 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 01A48106568D; Fri, 14 Aug 2009 19:53:12 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B9A88106568B for ; Fri, 14 Aug 2009 19:53:11 +0000 (UTC) (envelope-from mav@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id A74038FC15 for ; Fri, 14 Aug 2009 19:53:11 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7EJrB6q024615 for ; Fri, 14 Aug 2009 19:53:11 GMT (envelope-from mav@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7EJrBKF024613 for perforce@freebsd.org; Fri, 14 Aug 2009 19:53:11 GMT (envelope-from mav@freebsd.org) Date: Fri, 14 Aug 2009 19:53:11 GMT Message-Id: <200908141953.n7EJrBKF024613@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to mav@freebsd.org using -f From: Alexander Motin To: Perforce Change Reviews Cc: Subject: PERFORCE change 167335 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Aug 2009 19:53:12 -0000 http://perforce.freebsd.org/chv.cgi?CH=167335 Change 167335 by mav@mav_mavbook on 2009/08/14 19:52:18 IFC Affected files ... .. //depot/projects/scottl-camlock/src/UPDATING#13 integrate .. //depot/projects/scottl-camlock/src/contrib/bzip2/FREEBSD-vendor#2 integrate .. //depot/projects/scottl-camlock/src/contrib/netcat/FREEBSD-vendor#2 integrate .. //depot/projects/scottl-camlock/src/contrib/openpam/FREEBSD-vendor#2 integrate .. //depot/projects/scottl-camlock/src/crypto/openssh/FREEBSD-vendor#2 integrate .. //depot/projects/scottl-camlock/src/crypto/openssl/apps/md4.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/bftest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/bntest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/casttest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/destest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/dhtest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/dsatest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/ecdhtest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/ecdsatest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/ectest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/enginetest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/evp_test.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/exptest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/fips_aesavs.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/fips_desmovs.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/fips_dsatest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/fips_dssvs.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/fips_hmactest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/fips_randtest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/fips_rngvs.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/fips_rsagtest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/fips_rsastest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/fips_rsavtest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/fips_shatest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/fips_test_suite.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/hmactest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/ideatest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/jpaketest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/md2test.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/md4test.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/md5test.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/mdc2test.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/randtest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/rc2test.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/rc4test.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/rc5test.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/rmdtest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/rsa_test.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/sha1test.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/sha256t.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/sha512t.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/shatest.c#2 delete .. //depot/projects/scottl-camlock/src/crypto/openssl/test/ssltest.c#2 delete .. //depot/projects/scottl-camlock/src/etc/mtree/BSD.include.dist#6 integrate .. //depot/projects/scottl-camlock/src/include/Makefile#7 integrate .. //depot/projects/scottl-camlock/src/lib/libc/posix1e/Makefile.inc#5 integrate .. //depot/projects/scottl-camlock/src/lib/libc/posix1e/mac.3#2 integrate .. //depot/projects/scottl-camlock/src/lib/libc/posix1e/mac_free.3#2 integrate .. //depot/projects/scottl-camlock/src/lib/libc/posix1e/mac_get.3#2 integrate .. //depot/projects/scottl-camlock/src/lib/libc/posix1e/mac_set.3#2 integrate .. //depot/projects/scottl-camlock/src/lib/libc/posix1e/mac_text.3#2 integrate .. //depot/projects/scottl-camlock/src/lib/libc/posix1e/posix1e.3#3 integrate .. //depot/projects/scottl-camlock/src/lib/libkvm/kvm_vnet.c#3 integrate .. //depot/projects/scottl-camlock/src/share/man/man9/Makefile#7 integrate .. //depot/projects/scottl-camlock/src/share/man/man9/ieee80211.9#2 integrate .. //depot/projects/scottl-camlock/src/share/man/man9/ieee80211_amrr.9#1 branch .. //depot/projects/scottl-camlock/src/share/man/man9/ieee80211_beacon.9#1 branch .. //depot/projects/scottl-camlock/src/share/man/man9/ieee80211_bmiss.9#1 branch .. //depot/projects/scottl-camlock/src/share/man/man9/ieee80211_crypto.9#2 integrate .. //depot/projects/scottl-camlock/src/share/man/man9/ieee80211_ddb.9#1 branch .. //depot/projects/scottl-camlock/src/share/man/man9/ieee80211_input.9#2 integrate .. //depot/projects/scottl-camlock/src/share/man/man9/ieee80211_ioctl.9#3 delete .. //depot/projects/scottl-camlock/src/share/man/man9/ieee80211_node.9#2 integrate .. //depot/projects/scottl-camlock/src/share/man/man9/ieee80211_output.9#2 integrate .. //depot/projects/scottl-camlock/src/share/man/man9/ieee80211_proto.9#2 integrate .. //depot/projects/scottl-camlock/src/share/man/man9/ieee80211_radiotap.9#3 integrate .. //depot/projects/scottl-camlock/src/share/man/man9/ieee80211_regdomain.9#1 branch .. //depot/projects/scottl-camlock/src/share/man/man9/ieee80211_scan.9#1 branch .. //depot/projects/scottl-camlock/src/share/man/man9/ieee80211_vap.9#1 branch .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/local_apic.c#21 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/mp_machdep.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/amd64/trap.c#19 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/conf/GENERIC#26 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/conf/NOTES#18 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/conf/XENHVM#3 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/include/apicvar.h#16 integrate .. //depot/projects/scottl-camlock/src/sys/amd64/include/smp.h#13 integrate .. //depot/projects/scottl-camlock/src/sys/arm/arm/pmap.c#23 integrate .. //depot/projects/scottl-camlock/src/sys/cddl/compat/opensolaris/kern/opensolaris.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/conf/options.amd64#10 integrate .. //depot/projects/scottl-camlock/src/sys/conf/options.i386#11 integrate .. //depot/projects/scottl-camlock/src/sys/conf/options.pc98#12 integrate .. //depot/projects/scottl-camlock/src/sys/dev/drm/drm_pciids.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/dev/drm/r600_cp.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/dev/drm/radeon_drv.h#11 integrate .. //depot/projects/scottl-camlock/src/sys/dev/isp/isp_freebsd.c#27 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mfi/mfi_ioctl.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/dev/mfi/mfireg.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/i386/conf/GENERIC#25 integrate .. //depot/projects/scottl-camlock/src/sys/i386/conf/NOTES#22 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/local_apic.c#22 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/mp_machdep.c#20 integrate .. //depot/projects/scottl-camlock/src/sys/i386/i386/trap.c#17 integrate .. //depot/projects/scottl-camlock/src/sys/i386/include/apicvar.h#16 integrate .. //depot/projects/scottl-camlock/src/sys/i386/include/smp.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/i386/xen/mp_machdep.c#5 integrate .. //depot/projects/scottl-camlock/src/sys/ia64/ia64/interrupt.c#13 integrate .. //depot/projects/scottl-camlock/src/sys/ia64/include/smp.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_jail.c#22 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_shutdown.c#17 integrate .. //depot/projects/scottl-camlock/src/sys/kern/kern_sysctl.c#20 integrate .. //depot/projects/scottl-camlock/src/sys/kern/subr_kdb.c#10 integrate .. //depot/projects/scottl-camlock/src/sys/kern/subr_pcpu.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/kern/subr_smp.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/kern/vfs_cache.c#16 integrate .. //depot/projects/scottl-camlock/src/sys/mips/include/smp.h#2 integrate .. //depot/projects/scottl-camlock/src/sys/mips/mips/mp_machdep.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/net/bpf.c#24 integrate .. //depot/projects/scottl-camlock/src/sys/net/bpf_buffer.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/net/bpf_zerocopy.c#3 integrate .. //depot/projects/scottl-camlock/src/sys/net/bpfdesc.h#11 integrate .. //depot/projects/scottl-camlock/src/sys/net/rtsock.c#22 integrate .. //depot/projects/scottl-camlock/src/sys/net/vnet.c#4 integrate .. //depot/projects/scottl-camlock/src/sys/net/vnet.h#10 integrate .. //depot/projects/scottl-camlock/src/sys/net80211/ieee80211.c#22 integrate .. //depot/projects/scottl-camlock/src/sys/netatalk/at_control.c#11 integrate .. //depot/projects/scottl-camlock/src/sys/netinet/ipfw/ip_fw2.c#7 integrate .. //depot/projects/scottl-camlock/src/sys/netinet6/in6.c#25 integrate .. //depot/projects/scottl-camlock/src/sys/nfsclient/nfs_subs.c#15 integrate .. //depot/projects/scottl-camlock/src/sys/pc98/conf/NOTES#15 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/include/smp.h#4 integrate .. //depot/projects/scottl-camlock/src/sys/powerpc/powerpc/mp_machdep.c#9 integrate .. //depot/projects/scottl-camlock/src/sys/security/audit/audit.h#12 integrate .. //depot/projects/scottl-camlock/src/sys/sparc64/include/smp.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/sun4v/include/smp.h#7 integrate .. //depot/projects/scottl-camlock/src/sys/sys/jail.h#13 integrate .. //depot/projects/scottl-camlock/src/sys/sys/lock.h#13 integrate .. //depot/projects/scottl-camlock/src/sys/sys/pcpu.h#15 integrate .. //depot/projects/scottl-camlock/src/sys/sys/smp.h#9 integrate .. //depot/projects/scottl-camlock/src/sys/sys/sysctl.h#20 integrate .. //depot/projects/scottl-camlock/src/sys/ufs/ffs/ffs_softdep.c#21 integrate .. //depot/projects/scottl-camlock/src/sys/xdr/xdr_mbuf.c#3 integrate .. //depot/projects/scottl-camlock/src/tools/regression/priv/Makefile#3 integrate .. //depot/projects/scottl-camlock/src/tools/regression/priv/main.c#3 integrate .. //depot/projects/scottl-camlock/src/tools/regression/priv/priv_netinet_ipsec.c#2 integrate .. //depot/projects/scottl-camlock/src/tools/regression/priv/priv_vfs_extattr_system.c#3 integrate .. //depot/projects/scottl-camlock/src/usr.bin/procstat/procstat.1#2 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/Makefile#5 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/arp/arp.c#4 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/jls/jls.c#8 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/mfiutil/Makefile#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mfiutil/README#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mfiutil/mfi_cmd.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mfiutil/mfi_config.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mfiutil/mfi_drive.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mfiutil/mfi_evt.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mfiutil/mfi_flash.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mfiutil/mfi_patrol.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mfiutil/mfi_show.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mfiutil/mfi_volume.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mfiutil/mfiutil.1#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mfiutil/mfiutil.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mfiutil/mfiutil.h#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mptutil/Makefile#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mptutil/mpt_cam.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mptutil/mpt_cmd.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mptutil/mpt_config.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mptutil/mpt_drive.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mptutil/mpt_evt.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mptutil/mpt_show.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mptutil/mpt_volume.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mptutil/mptutil.8#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mptutil/mptutil.c#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/mptutil/mptutil.h#1 branch .. //depot/projects/scottl-camlock/src/usr.sbin/ntp/scripts/mkver#3 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/devices.c#6 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/install.c#4 integrate .. //depot/projects/scottl-camlock/src/usr.sbin/sysinstall/sysinstall.8#3 integrate Differences ... ==== //depot/projects/scottl-camlock/src/UPDATING#13 (text+ko) ==== @@ -22,6 +22,12 @@ to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20090813: + Remove the option STOP_NMI. The default action is now to use NMI + only for KDB via the newly introduced function stop_cpus_hard() + and maintain stop_cpus() to just use a normal IPI_STOP on ia32 + and amd64. + 20090719: Bump the shared library version numbers for all libraries that do not use symbol versioning as part of the 8.0-RELEASE cycle. @@ -1665,4 +1671,4 @@ Contact Warner Losh if you have any questions about your use of this document. -$FreeBSD: src/UPDATING,v 1.632 2009/07/26 20:12:06 kib Exp $ +$FreeBSD: src/UPDATING,v 1.633 2009/08/13 17:09:45 attilio Exp $ ==== //depot/projects/scottl-camlock/src/contrib/bzip2/FREEBSD-vendor#2 (text+ko) ==== @@ -1,7 +1,5 @@ -# $FreeBSD: src/contrib/bzip2/FREEBSD-vendor,v 1.1 2008/03/20 02:45:32 delphij Exp $ +# $FreeBSD: src/contrib/bzip2/FREEBSD-vendor,v 1.2 2009/08/13 06:07:38 des Exp $ Project: bzip2 ProjectURL: http://www.bzip.org/ Version: 1.0.5 -VendorTag: BZIP2 -VersionTag: v1_0_5 License: BSD ==== //depot/projects/scottl-camlock/src/contrib/netcat/FREEBSD-vendor#2 (text+ko) ==== @@ -1,7 +1,5 @@ -# $FreeBSD: src/contrib/netcat/FREEBSD-vendor,v 1.2 2008/12/19 23:00:23 delphij Exp $ +# $FreeBSD: src/contrib/netcat/FREEBSD-vendor,v 1.3 2009/08/13 06:07:38 des Exp $ Project: netcat (aka src/usr.bin/nc in OpenBSD) ProjectURL: http://www.openbsd.org/ Version: 4.4 -VendorTag: OPENBSD -VersionTag: OPENBSD_4_4 License: BSD ==== //depot/projects/scottl-camlock/src/contrib/openpam/FREEBSD-vendor#2 (text) ==== @@ -1,8 +1,6 @@ -# $FreeBSD: src/contrib/openpam/FREEBSD-vendor,v 1.1 2008/02/06 23:06:23 des Exp $ +# $FreeBSD: src/contrib/openpam/FREEBSD-vendor,v 1.2 2009/08/13 06:07:38 des Exp $ Project: OpenPAM ProjectURL: http://www.openpam.org/ Version: Hydrangea (20071221) -VendorTag: OPENPAM -VersionTag: OPENPAM_HYDRANGEA License: BSD Maintainer: des ==== //depot/projects/scottl-camlock/src/crypto/openssh/FREEBSD-vendor#2 (text+ko) ==== @@ -1,8 +1,6 @@ -# $FreeBSD: src/crypto/openssh/FREEBSD-vendor,v 1.2 2008/08/01 02:48:36 des Exp $ +# $FreeBSD: src/crypto/openssh/FREEBSD-vendor,v 1.3 2009/08/13 06:07:38 des Exp $ Project: Portable OpenSSH ProjectURL: http://www.openssh.com/portable.html -Version: 5.1p1 -VendorTag: OPENSSH -VersionTag: OpenSSH_5_1p1 +Version: 5.2p1 License: BSD Maintainer: des ==== //depot/projects/scottl-camlock/src/etc/mtree/BSD.include.dist#6 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/etc/mtree/BSD.include.dist,v 1.131 2009/07/10 08:18:08 scottl Exp $ +# $FreeBSD: src/etc/mtree/BSD.include.dist,v 1.132 2009/08/13 23:18:45 scottl Exp $ # # Please see the file src/etc/mtree/README before making changes to this file. # @@ -104,6 +104,8 @@ .. lmc .. + mfi + .. mpt mpilib .. ==== //depot/projects/scottl-camlock/src/include/Makefile#7 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile 8.2 (Berkeley) 1/4/94 -# $FreeBSD: src/include/Makefile,v 1.290 2009/07/10 08:18:08 scottl Exp $ +# $FreeBSD: src/include/Makefile,v 1.291 2009/08/13 23:18:45 scottl Exp $ # # Doing a "make install" builds /usr/include. @@ -40,7 +40,7 @@ LSUBDIRS= cam/ata cam/scsi \ dev/acpica dev/an dev/bktr dev/firewire dev/hwpmc \ - dev/ic dev/iicbus ${_dev_ieee488} dev/lmc dev/ofw \ + dev/ic dev/iicbus ${_dev_ieee488} dev/lmc dev/mfi dev/ofw \ dev/pbio ${_dev_powermac_nvram} dev/ppbus dev/smbus \ dev/speaker dev/usb dev/utopia dev/vkbd dev/wi \ fs/devfs fs/fdescfs fs/fifofs fs/msdosfs fs/nfs fs/ntfs fs/nullfs \ ==== //depot/projects/scottl-camlock/src/lib/libc/posix1e/Makefile.inc#5 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/lib/libc/posix1e/Makefile.inc,v 1.22 2009/07/14 19:37:53 trasz Exp $ +# $FreeBSD: src/lib/libc/posix1e/Makefile.inc,v 1.23 2009/08/12 10:46:48 rwatson Exp $ .PATH: ${.CURDIR}/posix1e @@ -106,14 +106,16 @@ mac_get.3 mac_get_fd.3 \ mac_get.3 mac_get_file.3 \ mac_get.3 mac_get_link.3 \ + mac_get.3 mac_get_peer.3 \ mac_get.3 mac_get_pid.3 \ mac_get.3 mac_get_proc.3 \ mac_prepare.3 mac_prepare_file_label.3 \ mac_prepare.3 mac_prepare_ifnet_label.3 \ mac_prepare.3 mac_prepare_process_label.3 \ - mac_set.3 mac_set_link.3 \ + mac_prepare.3 mac_prepare_type.3 \ mac_set.3 mac_set_fd.3 \ mac_set.3 mac_set_file.3 \ + mac_set.3 mac_set_link.3 \ mac_set.3 mac_set_proc.3 \ mac_text.3 mac_from_text.3 \ mac_text.3 mac_to_text.3 ==== //depot/projects/scottl-camlock/src/lib/libc/posix1e/mac.3#2 (text+ko) ==== @@ -1,4 +1,5 @@ .\" Copyright (c) 2001, 2003 Networks Associates Technology, Inc. +.\" Copyright (c) 2009 Robert N. M. Watson .\" All rights reserved. .\" .\" This software was developed for the FreeBSD Project by Chris @@ -28,9 +29,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac.3,v 1.15 2005/07/31 03:30:44 keramida Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac.3,v 1.16 2009/08/12 10:46:48 rwatson Exp $ .\" -.Dd April 19, 2003 +.Dd August 7, 2009 .Dt MAC 3 .Os .Sh NAME @@ -44,81 +45,82 @@ In the kernel configuration file: .Cd "options MAC" .Sh DESCRIPTION -.Fx -permits administrators to define Mandatory Access Control labels -defining levels for the privacy and integrity of data, -overriding discretionary policies -for those objects. -Not all objects currently provide support for MAC labels, -and MAC support must be explicitly enabled by the administrator. -The library calls include routines to retrieve, duplicate, -and set MAC labels associated with files and processes. +Mandatory Access Control labels describe confidentiality, integrity, and +other security attributes of operating system objects, overriding +discretionary access control. +Not all system objects support MAC labeling, and MAC policies must be +explicitly enabled by the administrator. +This API, based on POSIX.1e, includes routines to retrieve, manipulate, set, +and convert to and from text the MAC labels on files and processes. +.Pp +MAC labels consist of a set of (name, value) tuples, representing security +attributes from MAC policies. +For example, this label contains security labels defined by two policies, +.Xr mac_biba 4 +and +.Xr mac_mls 4 : +.Bd -literal -offset indent +biba/low,mls/low +.Ed +.Pp +Further syntax and semantics of MAC labels may be found in +.Xr maclabel 7 . +.Pp +Applications operate on labels stored in +.Vt mac_t , +but can convert between this internal format and a text format for the +purposes of presentation to uses or external storage. +When querying a label on an object, a +.Vt mac_t +must first be prepared using the interfaces described in +.Xr mac_prepare 3 , +allowing the application to declare which policies it wishes to interogate. +The application writer can also rely on default label names declared in +.Xr mac.conf 5 . .Pp -POSIX.1e describes a set of MAC manipulation routines -to manage the contents of MAC labels, -as well as their relationships with -files and processes; -almost all of these support routines -are implemented in -.Fx . +When finished with a +.Vt mac_t , +the application must call +.Xr mac_free 3 +to release its storage. .Pp -Available functions, sorted by behavior, include: +The following functions are defined: .Bl -tag -width indent -.It Fn mac_get_fd -This function is described in +.It Fn mac_is_present +This function, described in +.Xr mac_is_present 3 , +allows applications to test whether MAC is configured, as well as whether +specific policies are configured. +.It Fn mac_get_fd , Fn mac_get_file , Fn mac_get_link , Fn mac_get_peer +These functions, described in .Xr mac_get 3 , -and may be used to retrieve the -MAC label associated with -a specific file descriptor. -.It Fn mac_get_file -This function is described in +retrieve the MAC labels associated with file descriptors, files, and socket +peers. +.It Fn mac_get_pid , Fn mac_get_proc +These functions, described in .Xr mac_get 3 , -and may be used to retrieve the -MAC label associated with -a named file. -.It Fn mac_get_proc -This function is described in -.Xr mac_get 3 , -and may be used to retrieve the -MAC label associated with -the calling process. -.It Fn mac_set_fd -This function is described in +retrieve the MAC labels associated with processes. +.It Fn mac_set_fd , Fn mac_set_file , Fn mac_set_link +These functions, described in .Xr mac_set 3 , -and may be used to set the -MAC label associated with -a specific file descriptor. -.It Fn mac_set_file -This function is described in -.Xr mac_set 3 , -and may be used to set the -MAC label associated with -a named file. +set the MAC labels associated with file descriptors and files. .It Fn mac_set_proc -This function is described in +This function, described in .Xr mac_set 3 , -and may be used to set the -MAC label associated with -the calling process. +sets the MAC label associated with the current process. .It Fn mac_free -This function is described in +This function, desribed in .Xr mac_free 3 , -and may be used to free -userland working MAC label storage. +frees working MAC label storage. .It Fn mac_from_text -This function is described in +This function, described in .Xr mac_text 3 , -and may be used to convert -a text-form MAC label -into a working +converts a text-form MAC label into working MAC label storage, .Vt mac_t . -.It Fn mac_prepare -.It Fn mac_prepare_file_label -.It Fn mac_prepare_ifnet_label -.It Fn mac_prepare_process_label -These functions are described in +.It Fn mac_prepare , Fn mac_prepare_file_label , Fn mac_prepare_ifnet_label , Fn mac_prepare_process_label , Fn mac_prepare_type +These functions, described in .Xr mac_prepare 3 , -and may be used to preallocate storage for MAC label retrieval. +allocate working storage for MAC label operations. .Xr mac_prepare 3 prepares a label based on caller-specified label names; the other calls rely on the default configuration specified in @@ -130,15 +132,6 @@ .Vt mac_t into a text-form MAC label. .El -The behavior of some of these calls is influenced by the configuration -settings found in -.Xr mac.conf 5 , -the MAC library run-time configuration file. -.Sh IMPLEMENTATION NOTES -.Fx Ns 's -support for POSIX.1e interfaces and features -is -.Ud . .Sh FILES .Bl -tag -width ".Pa /etc/mac.conf" -compact .It Pa /etc/mac.conf @@ -150,24 +143,20 @@ .Sh SEE ALSO .Xr mac_free 3 , .Xr mac_get 3 , +.Xr mac_is_present 3 , .Xr mac_prepare 3 , .Xr mac_set 3 , .Xr mac_text 3 , +.Xr posix1e 3 , .Xr mac 4 , .Xr mac.conf 5 , .Xr mac 9 .Sh STANDARDS -These APIs are loosely based on the APIs described in POSIX.1e. -POSIX.1e is described in IEEE POSIX.1e draft 17. -Discussion of the draft -continues on the cross-platform POSIX.1e implementation mailing list. -To join this list, see the -.Fx -POSIX.1e implementation page -for more information. -However, the resemblance of these APIs to the POSIX APIs is only loose, -as the POSIX APIs were unable to express many notions required for -flexible and extensible access control. +These APIs are loosely based on the APIs described in POSIX.1e, as described +in IEEE POSIX.1e draft 17. +However, the resemblence of these APIS to the POSIX APIs is loose, as the +PSOXI APIS were unable to express some notinos required for flexible and +extensible access control. .Sh HISTORY Support for Mandatory Access Control was introduced in .Fx 5.0 ==== //depot/projects/scottl-camlock/src/lib/libc/posix1e/mac_free.3#2 (text+ko) ==== @@ -31,7 +31,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac_free.3,v 1.6 2003/08/22 18:01:03 rwatson Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac_free.3,v 1.7 2009/08/12 10:46:48 rwatson Exp $ .\" .Dd December 21, 2001 .Dt MAC_FREE 3 @@ -64,6 +64,7 @@ .Xr mac_prepare 3 , .Xr mac_set 3 , .Xr mac_text 3 , +.Xr posix1e 3 , .Xr mac 4 , .Xr mac 9 .Sh STANDARDS @@ -91,8 +92,8 @@ .Tn TrustedBSD implementation, .Fn mac_free -is specific to that type, and must not be used to free the character -strings returned from +is specific to +.Vt mac_3 , +and must not be used to free the character strings returned from .Fn mac_to_text . -Doing so may result in undefined behavior, -including application failure. +Doing so may result in undefined behavior. ==== //depot/projects/scottl-camlock/src/lib/libc/posix1e/mac_get.3#2 (text+ko) ==== @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac_get.3,v 1.10 2004/06/30 20:09:09 ru Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac_get.3,v 1.11 2009/08/12 10:46:48 rwatson Exp $ .\" .Dd December 21, 2001 .Dt MAC_GET 3 @@ -133,6 +133,7 @@ .Xr mac_prepare 3 , .Xr mac_set 3 , .Xr mac_text 3 , +.Xr posix1e 3 , .Xr mac 4 , .Xr mac 9 .Sh STANDARDS ==== //depot/projects/scottl-camlock/src/lib/libc/posix1e/mac_set.3#2 (text+ko) ==== @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac_set.3,v 1.11 2006/07/07 14:02:17 rwatson Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac_set.3,v 1.12 2009/08/12 10:46:48 rwatson Exp $ .\" .Dd January 14, 2003 .Dt MAC_SET 3 @@ -138,6 +138,7 @@ .Xr mac_is_present 3 , .Xr mac_prepare 3 , .Xr mac_text 3 , +.Xr posix1e 3 , .Xr mac 4 , .Xr mac 9 .Sh HISTORY ==== //depot/projects/scottl-camlock/src/lib/libc/posix1e/mac_text.3#2 (text+ko) ==== @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/mac_text.3,v 1.12 2006/07/07 14:02:17 rwatson Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/mac_text.3,v 1.13 2009/08/12 10:46:48 rwatson Exp $ .\" .Dd December 21, 2001 .Dt MAC_TEXT 3 @@ -98,6 +98,7 @@ .Xr mac_is_present 3 , .Xr mac_prepare 3 , .Xr mac_set 3 , +.Xr posix1e 3 , .Xr mac 4 , .Xr maclabel 7 .Sh STANDARDS ==== //depot/projects/scottl-camlock/src/lib/libc/posix1e/posix1e.3#3 (text+ko) ==== @@ -1,5 +1,5 @@ .\"- -.\" Copyright (c) 2000 Robert N. M. Watson +.\" Copyright (c) 2000, 2009 Robert N. M. Watson .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -23,9 +23,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/lib/libc/posix1e/posix1e.3,v 1.28 2009/05/19 22:28:33 brueffer Exp $ +.\" $FreeBSD: src/lib/libc/posix1e/posix1e.3,v 1.29 2009/08/12 10:46:48 rwatson Exp $ .\" -.Dd May 20, 2009 +.Dd August 7, 2009 .Dt POSIX1E 3 .Os .Sh NAME @@ -36,99 +36,77 @@ .Sh SYNOPSIS .In sys/types.h .In sys/acl.h -.\" .In sys/capability.h .In sys/mac.h .Sh DESCRIPTION -The IEEE POSIX.1e specification never left draft form, but the interfaces -it describes are now widely used despite inherent limitations. -Currently, only a few of the interfaces and features are implemented in -.Fx , -although efforts are underway to complete the integration at this time. +POSIX.1e describes five security extensions to the POSIX.1 API: Access +Control Lists (ACLs), Auditing, Capabilities, Mandatory Access Control, and +Information Flow Labels. +While IEEE POSIX.1e D17 specification has not been standardized, several of +its interfaces are widely used. .Pp -POSIX.1e describes five security extensions to the base POSIX.1 API: -Access Control Lists (ACLs), Auditing, Capabilities, Mandatory Access -Control, and Information Flow Labels. .Fx -supports POSIX.1e ACL interfaces, as well as POSIX.1e-like MAC -interfaces. -The TrustedBSD Project has produced but not integrated an implementation -of POSIX.1e Capabilities. +implements POSIX.1e interface for access control lists, described in +.Xr acl 3 , +and supports ACLs on the +.Xr ffs 7 +file system; ACLs must be administratively enabled using +.Xr tunefs 8 . .Pp -POSIX.1e defines both syntax and semantics for these features, but fairly -substantial changes are required to implement these features in the -operating system. +.Fx +implements a POSIX.1e-like mandatory access control interface, described in +.Xr mac 3 , +although with a number of extensions and important semantic differences. .Pp -As shipped, -.Fx 4.0 -provides API and VFS support for ACLs, but not an implementation on any -native file system. -.Fx 5.0 -includes support for ACLs as part of UFS1 and UFS2, as well as necessary -VFS support for additional file systems to export ACLs as appropriate. -Available API calls relating to ACLs are described in detail in -.Xr acl 3 . -.Pp -As shipped, -.Fx 5.0 -includes support for Mandatory Access Control as well as POSIX.1e-like -APIs for label management. -More information on API calls relating to MAC is available in -.Xr mac 3 . -.Pp -Additional patches supporting POSIX.1e features are provided by the -TrustedBSD project: -.Pp -http://www.TrustedBSD.org/ -.Sh IMPLEMENTATION NOTES -.Fx Ns 's -support for POSIX.1e interfaces and features is still under -development at this time, and many of these features are considered new -or experimental. +.Fx +does not implement the POSIX.1e audit, privilege (capability), or information +flow label APIs. +However, +.Fx +does implement the +.Xr libbsm +audit API. .Sh ENVIRONMENT -POSIX.1e assigns security labels to all objects, extending the security +POSIX.1e assigns security attributes to all objects, extending the security functionality described in POSIX.1. -These additional labels provide -fine-grained discretionary access control, fine-grained capabilities, -and labels necessary for mandatory access control. +These additional attributes store fine-grained discretionary access control +information and mandatory access control labels; for files, they are stored +in extended attributes, described in +.Xr extattr 3 . +.Pp POSIX.2c describes -a set of userland utilities for manipulating these labels. -.Pp -Many of these services are supported by extended attributes, documented -in -.Xr extattr 2 +a set of userland utilities for manipulating these attributes, including +.Xr getfacl 1 +and +.Xr setfacl 1 +for access control lists, and +.Xr getfmac 8 and -.Xr extattr 9 . -While these APIs are not documented in POSIX.1e, they are similar in -structure. +.Xr setfmac 8 +for mandatory access control labels. .Sh SEE ALSO +.Xr getfacl 1 , +.Xr setfacl 1 , .Xr extattr 2 , .Xr acl 3 , +.Xr extattr 3 , .Xr libbsm 3 , .Xr mac 3 , +.Xr ffs 7 , +.Xr getfmac 8 , +.Xr setfmac 8 , +.Xr tunefs 8 , .Xr acl 9 , .Xr extattr 9 , .Xr mac 9 .Sh STANDARDS POSIX.1e is described in IEEE POSIX.1e draft 17. -Discussion of the draft continues -on the cross-platform POSIX.1e implementation -mailing list. -To join this list, see the -.Fx -POSIX.1e implementation -page for more information. .Sh HISTORY POSIX.1e support was introduced in .Fx 4.0 ; -most of the features are available as of +most features were available as of .Fx 5.0 . -Development continues. .Sh AUTHORS .An Robert N M Watson .An Chris D. Faulhaber .An Thomas Moestl .An Ilmar S Habibulin -.Sh BUGS -Many of these features are considered new or experimental in -.Fx 5.0 -and should be deployed with appropriate caution. ==== //depot/projects/scottl-camlock/src/lib/libkvm/kvm_vnet.c#3 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libkvm/kvm_vnet.c,v 1.2 2009/08/01 19:26:27 rwatson Exp $"); +__FBSDID("$FreeBSD: src/lib/libkvm/kvm_vnet.c,v 1.3 2009/08/13 14:59:04 bz Exp $"); #include @@ -195,7 +195,7 @@ kd->vnet_start = nl[NLIST_START_VNET].n_value; kd->vnet_stop = nl[NLIST_STOP_VNET].n_value; kd->vnet_current = (uintptr_t)prison.pr_vnet; - kd->vnet_base = (uintptr_t)vnet.vnet_data_mem - kd->vnet_start; + kd->vnet_base = vnet.vnet_data_base; return (0); } ==== //depot/projects/scottl-camlock/src/share/man/man9/Makefile#7 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/share/man/man9/Makefile,v 1.357 2009/07/11 17:36:59 cperciva Exp $ +# $FreeBSD: src/share/man/man9/Makefile,v 1.358 2009/08/12 21:03:16 sam Exp $ MAN= accept_filter.9 \ accf_data.9 \ @@ -121,13 +121,19 @@ hashinit.9 \ hexdump.9 \ ieee80211.9 \ + ieee80211_amrr.9 \ + ieee80211_beacon.9 \ + ieee80211_bmiss.9 \ ieee80211_crypto.9 \ + ieee80211_ddb.9 \ ieee80211_input.9 \ - ieee80211_ioctl.9 \ ieee80211_node.9 \ ieee80211_output.9 \ ieee80211_proto.9 \ ieee80211_radiotap.9 \ + ieee80211_regdomain.9 \ + ieee80211_scan.9 \ + ieee80211_vap.9 \ ifnet.9 \ inittodr.9 \ insmntque.9 \ @@ -627,52 +633,62 @@ MLINKS+=hashinit.9 hashdestroy.9 \ hashinit.9 hashinit_flags.9 \ hashinit.9 phashinit.9 -MLINKS+=ieee80211.9 ieee80211_attach.9 \ - ieee80211.9 ieee80211_chan2ieee.9 \ - ieee80211.9 ieee80211_chan2mode.9 \ - ieee80211.9 ieee80211_ieee2mhz.9 \ - ieee80211.9 ieee80211_ifattach.9 \ - ieee80211.9 ieee80211_ifdetach.9 \ - ieee80211.9 ieee80211_media2rate.9 \ - ieee80211.9 ieee80211_media_change.9 \ - ieee80211.9 ieee80211_media_init.9 \ - ieee80211.9 ieee80211_media_status.9 \ - ieee80211.9 ieee80211_mhz2ieee.9 \ - ieee80211.9 ieee80211_rate2media.9 \ - ieee80211.9 ieee80211_setmode.9 \ - ieee80211.9 ieee80211_watchdog.9 -MLINKS+=ieee80211_crypto.9 ieee80211_crypto_attach.9 \ - ieee80211_crypto.9 ieee80211_crypto_detach.9 \ - ieee80211_crypto.9 ieee80211_wep_crypt.9 -MLINKS+=ieee80211_input.9 ieee80211_decap.9 \ - ieee80211_input.9 ieee80211_recv_mgmt.9 -MLINKS+=ieee80211_ioctl.9 ieee80211_cfgget.9 \ - ieee80211_ioctl.9 ieee80211_cfgset.9 -MLINKS+=ieee80211_node.9 ieee80211_alloc_node.9 \ - ieee80211_node.9 ieee80211_begin_scan.9 \ - ieee80211_node.9 ieee80211_create_ibss.9 \ - ieee80211_node.9 ieee80211_dup_bss.9 \ - ieee80211_node.9 ieee80211_end_scan.9 \ - ieee80211_node.9 ieee80211_find_node.9 \ - ieee80211_node.9 ieee80211_free_allnodes.9 \ +MLINKS+=ieee80211.9 ieee80211_ifattach.9 \ + ieee80211.9 ieee80211_ifdetach.9 +MLINKS+=ieee80211_amrr.9 ieee80211_amrr_init.9 \ + ieee80211_amrr.9 ieee80211_amrr_cleanup.9 \ + ieee80211_amrr.9 ieee80211_amrr_setinterval.9 \ + ieee80211_amrr.9 ieee80211_amrr_node_init.9 \ + ieee80211_amrr.9 ieee80211_amrr_tx_complete.9 \ + ieee80211_amrr.9 ieee80211_amrr_tx_update.9 +MLINKS+=ieee80211_beacon.9 ieee80211_beacon_alloc.9 \ + ieee80211_beacon.9 ieee80211_beacon_update.9 \ + ieee80211_beacon.9 ieee80211_beacon_notify.9 +MLINKS+=ieee80211_bmiss.9 ieee80211_beacon_miss.9 +MLINKS+=ieee80211_crypto.9 ieee80211_key_update_begin.9 \ + ieee80211_crypto.9 ieee80211_key_update_end.9 \ + ieee80211_crypto.9 ieee80211_crypto_newkey.9 \ + ieee80211_crypto.9 ieee80211_crypto_setkey.9 \ + ieee80211_crypto.9 ieee80211_crypto_delglobalkeys.9 \ + ieee80211_crypto.9 ieee80211_crypto_reload_keys.9 \ + ieee80211_crypto.9 ieee80211_crypto_decap.9 \ + ieee80211_crypto.9 ieee80211_crypto_encap.9 \ + ieee80211_crypto.9 ieee80211_crypto_demic.9 \ + ieee80211_crypto.9 ieee80211_crypto_enmic.9 \ + ieee80211_crypto.9 ieee80211_notify_michael_failure.9 \ + ieee80211_crypto.9 ieee80211_notify_replay_failure.9 \ + ieee80211_crypto.9 ieee80211_crypto_register.9 \ + ieee80211_crypto.9 ieee80211_crypto_unregister.9 \ + ieee80211_crypto.9 ieee80211_crypto_available.9 +MLINKS+=ieee80211_input.9 ieee80211_input_all.9 +MLINKS+=ieee80211_node.9 ieee80211_find_rxnode.9 \ + ieee80211_node.9 ieee80211_find_rxnode_withkey.9 \ + ieee80211_node.9 ieee80211_ref_node.9 \ + ieee80211_node.9 ieee80211_unref_node.9 \ ieee80211_node.9 ieee80211_free_node.9 \ ieee80211_node.9 ieee80211_iterate_nodes.9 \ - ieee80211_node.9 ieee80211_lookup_node.9 \ - ieee80211_node.9 ieee80211_next_scan.9 \ - ieee80211_node.9 ieee80211_node_attach.9 \ - ieee80211_node.9 ieee80211_node_detach.9 \ - ieee80211_node.9 ieee80211_node_lateattach.9 \ - ieee80211_node.9 ieee80211_timeout_nodes.9 -MLINKS+=ieee80211_output.9 ieee80211_add_rates.9 \ - ieee80211_output.9 ieee80211_add_xrates.9 \ - ieee80211_output.9 ieee80211_encap.9 \ - ieee80211_output.9 ieee80211_send_mgmt.9 -MLINKS+=ieee80211_proto.9 ieee80211_dump_pkt.9 \ - ieee80211_proto.9 ieee80211_fix_rate.9 \ - ieee80211_proto.9 ieee80211_print_essid.9 \ - ieee80211_proto.9 ieee80211_proto_attach.9 \ - ieee80211_proto.9 ieee80211_proto_detach.9 -MLINKS+=ieee80211_radiotap.9 radiotap.9 + ieee80211_node.9 ieee80211_dump_node.9 \ + ieee80211_node.9 ieee80211_dump_nodes.9 +MLINKS+=ieee80211_output.9 M_WME_GETAC.9 \ + ieee80211_output.9 M_SEQNO_GET.9 \ + ieee80211_output.9 ieee80211_process_callback.9 +MLINKS+=ieee80211_proto.9 ieee80211_new_state.9 \ + ieee80211_proto.9 ieee80211_start_all.9 \ + ieee80211_proto.9 ieee80211_stop_all.9 \ + ieee80211_proto.9 ieee80211_suspend_all.9 \ + ieee80211_proto.9 ieee80211_resume_all.9 \ + ieee80211_proto.9 ieee80211_waitfor_parent.9 +MLINKS+=ieee80211_radiotap.9 radiotap.9 \ + ieee80211_radiotap.9 ieee80211_radiotap_attach.9 \ + ieee80211_radiotap.9 ieee80211_radiotap_active_vap.9 \ + ieee80211_radiotap.9 ieee80211_radiotap_active.9 \ + ieee80211_radiotap.9 ieee80211_radiotap_tx.9 +MLINKS+=ieee80211_regdomain.9 ieee80211_init_channels.9 \ + ieee80211_regdomain.9 ieee80211_sort_channels.9 \ + ieee80211_regdomain.9 ieee80211_alloc_countryie.9 +MLINKS+=ieee80211_vap.9 ieee80211_vap_setup.9 \ + ieee80211_vap.9 ieee80211_vap_attach.9 \ + ieee80211_vap.9 ieee80211_vap_detach.9 MLINKS+=ifnet.9 ifaddr.9 \ ifnet.9 if_data.9 \ ifnet.9 ifqueue.9 ==== //depot/projects/scottl-camlock/src/share/man/man9/ieee80211.9#2 (text+ko) ==== @@ -1,6 +1,5 @@ .\" -.\" Copyright (c) 2004 Bruce M. Simpson -.\" Copyright (c) 2004 Darron Broad +.\" Copyright (c) 2009 Sam Leffler, Errno Consulting .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -24,237 +23,539 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/share/man/man9/ieee80211.9,v 1.4 2005/06/28 20:15:18 hmp Exp $ -.\" $Id: ieee80211.9,v 1.5 2004/03/04 12:33:27 bruce Exp $ +.\" $FreeBSD: src/share/man/man9/ieee80211.9,v 1.5 2009/08/12 21:03:16 sam Exp $ .\" -.Dd March 2, 2004 -.Dt IEEE80211 9 +.Dd August 4, 2009 +.Dt NET80211 9 .Os .Sh NAME -.Nm ieee80211_ifattach , ieee80211_ifdetach , -.Nm ieee80211_mhz2ieee , ieee80211_chan2ieee , ieee80211_ieee2mhz , -.Nm ieee80211_media_init , ieee80211_media_change , ieee80211_media_status , -.Nm ieee80211_watchdog , -.Nm ieee80211_setmode , ieee80211_chan2mode , -.Nm ieee80211_rate2media , ieee80211_media2rate -.Nd core 802.11 network stack functions +.Nm net80211 +.Nd 802.11 network layer .Sh SYNOPSIS .In net80211/ieee80211_var.h -.In net80211/ieee80211_proto.h .Ft void -.Fn ieee80211_ifattach "struct ifnet *ifp" +.Fn ieee80211_ifattach "struct ieee80211com *ic" "const uint8_t macaddr[IEEE80211_ADDR_LEN]" .Ft void -.Fn ieee80211_ifdetach "struct ifnet *ifp" -.Ft u_int -.Fn ieee80211_mhz2ieee "u_int freq" "u_int flags" -.Ft u_int -.Fn ieee80211_chan2ieee "struct ieee80211com *ic" "struct ieee80211_channel *c" -.Ft u_int -.Fn ieee80211_ieee2mhz "u_int chan" "u_int flags" -.Ft void -.Fo ieee80211_media_init -.Fa "struct ifnet *ifp" "ifm_change_cb_t media_change" >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Fri Aug 14 20:35:02 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D802F106568D; Fri, 14 Aug 2009 20:35:01 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9C6E21065672 for ; Fri, 14 Aug 2009 20:35:01 +0000 (UTC) (envelope-from hselasky@c2i.net) Received: from swip.net (mailfe15.swipnet.se [212.247.155.193]) by mx1.freebsd.org (Postfix) with ESMTP id 330CF8FC57 for ; Fri, 14 Aug 2009 20:35:00 +0000 (UTC) X-Cloudmark-Score: 0.000000 [] X-Cloudmark-Analysis: v=1.0 c=1 a=2JlPtc09_JwA:10 a=MnI1ikcADjEx7bvsp0jZvQ==:17 a=pUBqHPTnkn88JS_rhGcA:9 a=m82kmAYqGN8xLuPle59qY74vAPYA:4 Received: from [188.126.201.140] (account mc467741@c2i.net HELO laptop.adsl.tele2.no) by mailfe15.swip.net (CommuniGate Pro SMTP 5.2.13) with ESMTPA id 550691074; Fri, 14 Aug 2009 21:34:58 +0200 From: Hans Petter Selasky To: Sylvestre Gallon Date: Fri, 14 Aug 2009 21:35:06 +0200 User-Agent: KMail/1.11.4 (FreeBSD/8.0-BETA2; KDE/4.2.4; i386; ; ) References: <200908141911.n7EJBIcS021235@repoman.freebsd.org> In-Reply-To: <200908141911.n7EJBIcS021235@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200908142135.07724.hselasky@c2i.net> Cc: Perforce Change Reviews Subject: Re: PERFORCE change 167332 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Aug 2009 20:35:02 -0000 On Friday 14 August 2009 21:11:18 Sylvestre Gallon wrote: > On Hans Petter advices replace DEFAULT_ROOTHUB by > USB_DCI_DEFAULT_ROOTHUB. Your system should also replace the code for the HCI Root HUB's. --HPS From owner-p4-projects@FreeBSD.ORG Fri Aug 14 21:45:21 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 00DED1065691; Fri, 14 Aug 2009 21:45:21 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B97D8106568F for ; Fri, 14 Aug 2009 21:45:20 +0000 (UTC) (envelope-from marinosi@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id A85C88FC60 for ; Fri, 14 Aug 2009 21:45:20 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7ELjKZL046191 for ; Fri, 14 Aug 2009 21:45:20 GMT (envelope-from marinosi@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7ELjKMS046189 for perforce@freebsd.org; Fri, 14 Aug 2009 21:45:20 GMT (envelope-from marinosi@FreeBSD.org) Date: Fri, 14 Aug 2009 21:45:20 GMT Message-Id: <200908142145.n7ELjKMS046189@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marinosi@FreeBSD.org using -f From: Ilias Marinos To: Perforce Change Reviews Cc: Subject: PERFORCE change 167342 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Aug 2009 21:45:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=167342 Change 167342 by marinosi@marinosi_redrum on 2009/08/14 21:44:39 Debugging code.(Note audit_enabled on for all slices!) Affected files ... .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#23 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.c#10 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.h#16 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_worker.c#9 edit Differences ... ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#23 (text) ==== @@ -759,7 +759,7 @@ * XXX: As M_ZERO flag is used during allocation, some of the * following initilization is pointless and should be removed. */ - as->audit_enabled = 0; + as->audit_enabled = 1; as->audit_suspended = 0; as->audit_panic_on_write_fail = 0; as->audit_fail_stop = 0; @@ -861,12 +861,12 @@ * code. */ int -audit_slice_commit_rec(void *rec, struct audit_slice *as) +audit_slice_commit_rec(struct thread *td, void *rec, struct audit_slice *as) { struct kaudit_record *ar = NULL; int error; - struct thread *td = NULL; + uprintf("IN audit_slice_commit_rec()\n"); /* * XXXRW: This error value seems never to be used? Possibly we * should validate the record before calling audit_new, and return @@ -879,6 +879,7 @@ */ /* Verify the record. */ if (bsm_rec_verify(rec) == 0) { + uprintf("Error in record!\n"); error = EINVAL; return (error); } @@ -906,9 +907,11 @@ * base slice may already be using it to record the write * syscall. */ + uprintf("Calling audit_new().\n"); ar = audit_new(AUE_NULL, td, as); if (ar == NULL) return (1); + uprintf("audit_new() returned a non-NULL ar.\n"); /* * Note: it could be that some records initiated while audit was @@ -937,6 +940,7 @@ as->audit_pre_q_len--; cv_signal(&(as->audit_worker_cv)); mtx_unlock(&(as->audit_mtx)); + uprintf("audit_slice_commit_rec(): Reached the end!\n"); return (0); } ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.c#10 (text+ko) ==== @@ -169,31 +169,31 @@ int c, error = 0; //u_int32_t recsz = 0; //int nbytes = 0; /*Remaining bytes */ - char *audit_slice_dev_buf; + void *audit_slice_dev_buf = NULL; struct audit_slice *as; - void *as_rec = NULL; + //void *as_rec = NULL; as = dev->si_drv1; /* Safe malloc the pagesz of the system.*/ //audit_slice_dev_buf = malloc(sizeof(*audit_slice_dev_buf), // M_TEMP, M_WAITOK); - audit_slice_dev_buf = (void *)malloc(PAGE_SIZE, M_TEMP, - M_WAITOK | M_ZERO); - - uprintf("[DEV_WRITE_METHOD] of slice %s.\n", as->as_name); - - /* Copy the string in from user memory to kernel memory */ - c = MIN(uio->uio_iov->iov_len,PAGE_SIZE); - error = copyin(uio->uio_iov->iov_base, audit_slice_dev_buf, c); - - /* Null terminate it */ - *(audit_slice_dev_buf + c) = 0; - - if (error != 0) - uprintf("Write failed: bad address!\n"); - else - uprintf ("MESSAGE: %s\n", (char *) audit_slice_dev_buf); +// audit_slice_dev_buf = (void *)malloc(PAGE_SIZE, M_TEMP, +// M_WAITOK | M_ZERO); +// +// uprintf("[DEV_WRITE_METHOD] of slice %s.\n", as->as_name); +// +// /* Copy the string in from user memory to kernel memory */ +// c = MIN(uio->uio_iov->iov_len,PAGE_SIZE); +// error = copyin(uio->uio_iov->iov_base, audit_slice_dev_buf, c); +// +// /* Null terminate it */ +// *(audit_slice_dev_buf + c) = 0; +// +// if (error != 0) +// uprintf("Write failed: bad address!\n"); +// else +// uprintf ("MESSAGE: %s\n", (char *) audit_slice_dev_buf); /* * XXXRW: This seems to handle multiple records/system call, but not * multiple system calls/record. To handle the latter, we need to @@ -201,15 +201,19 @@ * into until we have a complete record which we can then submit to * audit. */ -// while (uio->uio_resid > 0) { -// c = MIN((int)uio->uio_resid, sizeof(*audit_slice_dev_buf)); -// if ( c == (int)uio->uio_resid ) -// break; -// -// /* Fetch the bsm record's header */ -// error = uiomove(audit_slice_dev_buf, c, uio); -// if (error) -// break; + while (uio->uio_resid > 0) { + //c = MIN((int)uio->uio_resid, sizeof(*audit_slice_dev_buf)); + //if ( c == (int)uio->uio_resid ) + // break; + + c = (int)uio->uio_resid; + audit_slice_dev_buf = malloc(c, M_TEMP, M_WAITOK | M_ZERO); + + + /* Fetch the bsm record's header */ + error = uiomove(audit_slice_dev_buf, c, uio); + if (error) + break; // // /* // * Store the actual record's size. Add some checks before @@ -232,7 +236,7 @@ // if (error) // break; - //audit_slice_commit_rec( as_rec, as); + audit_slice_commit_rec( uio->uio_td, audit_slice_dev_buf, as); // uprintf("Size to be fetched: %d\n", uio->uio_resid); // c = MIN((int)uio->uio_resid, PAGE_SIZE); @@ -245,14 +249,14 @@ -// } + } /* * XXXRW: Only free as_rec if we allocated it. */ free(audit_slice_dev_buf, M_TEMP); - if (as_rec != NULL) - free(as_rec, M_AUDITBSM); +// if (as_rec != NULL) +// free(as_rec, M_AUDITBSM); return (error); } ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.h#16 (text+ko) ==== @@ -186,15 +186,17 @@ /* * Audit related functions prototypes. */ -void audit_rotate_vnode(struct audit_slice *as, struct ucred *cred, struct vnode *vp); +void audit_rotate_vnode(struct audit_slice *as, struct ucred *cred, + struct vnode *vp); void audit_worker_start(struct audit_slice *as); void audit_slice_init(struct audit_slice *as, char *name); void audit_slice_create(char *name); int audit_slice_destroy(struct audit_slice *as); void audit_slice_cdev_init(struct audit_slice *as); -int audit_slice_commit_rec(void *rec, struct audit_slice *as); +int audit_slice_commit_rec(struct thread *td, void *rec, + struct audit_slice *as); struct audit_slice *audit_slice_lookup(char *as_name); -int auditon_slice_internal(struct thread *td, int cmd, char *as_name, void *data, - u_int length); +int auditon_slice_internal(struct thread *td, int cmd, char *as_name, + void *data, u_int length); #endif /* ! _SECURITY_AUDIT_SLICE_H_ */ ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_worker.c#9 (text) ==== @@ -223,6 +223,7 @@ } } + uprintf("Ready to write record!\n"); error = vn_rdwr(UIO_WRITE, as->audit_vp, data, len, (off_t)0, UIO_SYSSPACE, IO_APPEND|IO_UNIT, as->audit_cred, NULL, NULL, curthread); if (error == ENOSPC) @@ -406,6 +407,7 @@ while (TAILQ_EMPTY(&(as->audit_q))) cv_wait(&(as->audit_worker_cv), &(as->audit_mtx)); + uprintf("audit_worker(): Record in the queue!\n"); /* * If there are records in the global audit record queue, * transfer them to a thread-local queue and process them @@ -427,6 +429,7 @@ mtx_unlock(&(as->audit_mtx)); while ((ar = TAILQ_FIRST(&ar_worklist))) { TAILQ_REMOVE(&ar_worklist, ar, k_q); + uprintf("audit_worker(): Calling audit_worker_process_record()!\n"); audit_worker_process_record(ar, as); audit_free(ar); } From owner-p4-projects@FreeBSD.ORG Fri Aug 14 21:49:25 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9F540106568D; Fri, 14 Aug 2009 21:49:25 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 63FA1106568B for ; Fri, 14 Aug 2009 21:49:25 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 3A0F88FC4B for ; Fri, 14 Aug 2009 21:49:25 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7ELnPPd046475 for ; Fri, 14 Aug 2009 21:49:25 GMT (envelope-from anchie@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7ELnPoo046473 for perforce@freebsd.org; Fri, 14 Aug 2009 21:49:25 GMT (envelope-from anchie@FreeBSD.org) Date: Fri, 14 Aug 2009 21:49:25 GMT Message-Id: <200908142149.n7ELnPoo046473@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anchie@FreeBSD.org using -f From: Ana Kukec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167343 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Aug 2009 21:49:25 -0000 http://perforce.freebsd.org/chv.cgi?CH=167343 Change 167343 by anchie@anchie_desnimis on 2009/08/14 21:48:42 Changes in user land in order to process SEND message appended to rt_msghdr instead of rt_ifannouncemsghdr. Affected files ... .. //depot/projects/soc2009/anchie_send/send_0.2/sendd/net.c#22 edit Differences ... ==== //depot/projects/soc2009/anchie_send/send_0.2/sendd/net.c#22 (text+ko) ==== @@ -69,6 +69,7 @@ { struct sbuff *b; + /* 2048 + rt_msghdr */ if ((b = sbuff_alloc(SND_MAX_PKT + sizeof(struct rt_msghdr))) == NULL) { APPLOG_NOMEM(); return (NULL); @@ -139,27 +140,15 @@ pi = (struct snd_packet_info *)(b->head); DBG(&dbg_snd, "Direction, in = %d", pi->in); -#if 0 - ip6 = sbuff_data(b); - DBG(&dbg_snd, "SRC: %s", inet_ntop(AF_INET6, &ip6->ip6_src, abuf, sizeof (abuf))); - DBG(&dbg_snd, "DST: %s", inet_ntop(AF_INET6, &ip6->ip6_dst, abuf, sizeof (abuf))); - struct nd_neighbor_solicit *ns; - struct in6_addr *tgt; - b->data += sizeof (struct ip6_hdr); - ns = (struct nd_neighbor_solicit *)(b->data); - tgt = &ns->nd_ns_target; - DBG(&dbg_snd, "DST: %s", inet_ntop(AF_INET6, tgt, abuf, sizeof (abuf))); -#endif - DBG(&dbg_snd, "rt_msghdr = %d, if_announcemsghdr = %d\n", sizeof (struct rt_msghdr), sizeof (struct if_announcemsghdr)); /* buffer starts with IPv6 hdr, roll back to include rtm header */ -#if 0 b->data -= sizeof (struct rt_msghdr); b->len += sizeof (struct rt_msghdr); -#endif +#if 0 b->data -= sizeof (struct if_announcemsghdr); b->len += sizeof (struct if_announcemsghdr); +#endif DBG(&dbg_snd, "%d bytes on %s", b->len, pi->ifinfo->name); @@ -295,10 +284,10 @@ case RTM_SND_IN: applog(LOG_ERR, "RTM_SND_IN"); /* n = RTM hdr + SEND message */ + if (sbuff_pull(b, sizeof (struct rt_msghdr)) == NULL) { #if 0 - if (sbuff_pull(b, sizeof (struct rt_msghdr)) == NULL) { + if (sbuff_pull(b, sizeof (struct if_announcemsghdr)) == NULL) { #endif - if (sbuff_pull(b, sizeof (struct if_announcemsghdr)) == NULL) { DBG(&dbg_snd, "invalid pkt (not enough for rtm hedaer"); goto done; } @@ -310,10 +299,10 @@ case RTM_SND_OUT: applog(LOG_ERR, "RTM_SND_OUT"); /* n = RTM hdr + ip6_hdr + icmp6len */ + if (sbuff_pull(b, sizeof (struct rt_msghdr)) == NULL) { #if 0 - if (sbuff_pull(b, sizeof (struct rt_msghdr)) == NULL) { + if (sbuff_pull(b, sizeof (struct if_announcemsghdr)) == NULL) { #endif - if (sbuff_pull(b, sizeof (struct if_announcemsghdr)) == NULL) { DBG(&dbg_snd, "invalid pkt (not enough for rtm header"); goto done; } From owner-p4-projects@FreeBSD.ORG Sat Aug 15 01:16:12 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D076A106568D; Sat, 15 Aug 2009 01:16:11 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 946B2106568C for ; Sat, 15 Aug 2009 01:16:11 +0000 (UTC) (envelope-from alepulver@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4C7458FC41 for ; Sat, 15 Aug 2009 01:16:11 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7F1GBUV075557 for ; Sat, 15 Aug 2009 01:16:11 GMT (envelope-from alepulver@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7F1GB7v075555 for perforce@freebsd.org; Sat, 15 Aug 2009 01:16:11 GMT (envelope-from alepulver@freebsd.org) Date: Sat, 15 Aug 2009 01:16:11 GMT Message-Id: <200908150116.n7F1GB7v075555@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to alepulver@freebsd.org using -f From: Alejandro Pulver To: Perforce Change Reviews Cc: Subject: PERFORCE change 167348 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 01:16:12 -0000 http://perforce.freebsd.org/chv.cgi?CH=167348 Change 167348 by alepulver@alepulver_deimos on 2009/08/15 01:16:05 - Move ask-license to _PATCH_SEQ, and add private cookie to avoid asking twice if patch target fails. - Rework bsd.licenses.mk to include dual/multiple licenses support. - Add dialog based GUI interface, and text interface (similar to NetBSD). - Remove inheritance from groups and leave them as tags for now (otherwise it overcomplicates things unnecessarily) - No more saving for now (there were 3 sources of configuration before). - Rename "redist" to "mirror" to avoid confusing with "dist" (of distfiles). - Add reports with an option to disable. - Replace current bsd.port.mk section for restricted files removal if LICENSE is defined (some clean-* targets). - Some minor changes and fixes. Affected files ... .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.licenses.db.mk#4 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.licenses.mk#9 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.port.mk#8 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/test-license-1/Makefile#4 edit Differences ... ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.licenses.db.mk#4 (text+ko) ==== @@ -18,6 +18,12 @@ # http://en.wikipedia.org/wiki/Comparison_of_free_software_licences # # Probably will be automatically incorporated from FOSSology's software. +# +# IMPORTANT: as this file is going to be included by most ports, we may +# consider having licenses here only as "tags" as most of them will be free, +# to remove some loops and additional variables here. This will not affect the +# rest of bsd.licenses.mk, and anyways restricted licenses that aren't used by +# many ports should be defined in each one's Makefile. # XXX Start of editable section @@ -30,68 +36,60 @@ _LICENSE_LIST= ASL BSD BSL CDDL GPLv2 GPLv3 LGPL MIT MPL _LICENSE_LIST_GROUPS= FSF GPL OSI -# Properties of license/group "xxx" (similar to port's variables, but single) +# List of groups (only names must be present) + +_LICENSE_NAME_FSF= Free Software Foundation Approved + +_LICENSE_NAME_GPL= GPL Compatible + +_LICENSE_NAME_OSI= OSI Approved + +# Default permissions for licenses here, if not defined + +_LICENSE_PERMS_DEFAULT= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept + +# Properties of license "xxx" (similar to port variables, but single) +# # _LICENSE_NAME_xxx - Full name/description of license/group -# _LICENSE_PERMS_xxx - Permissions -# _LICENSE_COMPAT_xxx - Compatibility -# _LICENSE_INCOMPAT_xxx - Incompatibility +# _LICENSE_PERMS_xxx - Permissions (if not defined defaults to +# ${_LICENSE_PERMS_DEFAULT}. +# _LICENSE_GROUPS_xxx - Groups (optional) +# +# Notes: +# - General permissions from groups are added to each license, if not defined. +# -# List of licenses - _LICENSE_NAME_ASL= Apache License +_LICENSE_GROUPS_ASL= FSF OSI _LICENSE_NAME_BSD= BSD license +_LICENSE_GROUPS_BSD= FSF OSI _LICENSE_NAME_BSL= Boost Software License +_LICENSE_GROUPS_BSL= FSF OSI _LICENSE_NAME_CDDL= Common Development and Distribution License +_LICENSE_GROUPS_CDDL= FSF OSI _LICENSE_NAME_GPLv2= GNU General Public License version 2 +_LICENSE_NAME_GPLv2= FSF GPL OSI _LICENSE_NAME_GPLv3= GNU General Public License version 3 -_LICENSE_PERMS_GPLv3= no-pkg +_LICENSE_GROUPS_GPLv3= FSF GPL OSI _LICENSE_NAME_LGPL= GNU Lesser General Public License +_LICENSE_GROUPS_LGPL= FSF GPL OSI _LICENSE_NAME_MIT= MIT license / X11 license +_LICENSE_GROUPS_MIT= FSF GPL OSI _LICENSE_NAME_MPL= Mozilla Public License +_LICENSE_GROUPS_MPL= FSF OSI -# List of groups +# Set default permissions if not defined -_LICENSE_NAME_FSF= Free Software Foundation Approved -_LICENSE_PERMS_FSF= pkg-redist dist-redist pkg-sell dist-sell auto-accept - -_LICENSE_NAME_GPL= GPL Compatible -_LICENSE_PERMS_GPL= pkg-redist dist-redist pkg-sell dist-sell auto-accept - -_LICENSE_NAME_OSI= OSI Approved -_LICENSE_PERMS_OSI= pkg-redist dist-redist pkg-sell dist-sell auto-accept - -# Grouping -# -# - Method 1: -# _LICENSE_LIST_GROUP_xxx - List of licenses under the "xxx" group - -_LICENSE_LIST_GROUP_FSF= ASL BSD BSL CDDL GPLv2 GPLv3 LGPL MIT MPL - -_LICENSE_LIST_GROUP_GPL= GPLv2 GPLv3 LGPL MIT - -_LICENSE_LIST_GROUP_OSI= ASL BSD BSL CDDL GPLv2 GPLv3 LGPL MIT MPL - -# - Method 2: -# _LICENSE_GROUPS_xxx - Groups the license/group belongs to - -# empty - -# XXX End of editable section - -# Method 1 expands to method 2 -.for group in ${_LICENSE_LIST_GROUPS} -. for lic in ${_LICENSE_LIST_GROUP_${group}} -_LICENSE_GROUPS_${lic}?= # -. if ${_LICENSE_GROUPS_${lic}:M${group}} == "" -_LICENSE_GROUPS_${lic}+= ${group} -. endif -. endfor +.for lic in ${_LICENSE_LIST} +. if !defined(_LICENSE_PERMS_${lic}) +_LICENSE_PERMS_${lic}= ${_LICENSE_PERMS_DEFAULT} +. endif .endfor ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.licenses.mk#9 (text+ko) ==== @@ -10,108 +10,117 @@ # Please view me with 4 column tabs! # +# TODO: +# - Bring back save and checksum with new dialog interface (only offers to do +# so if ran by root, otherwise silently remove the options). Also only allow +# saving per-port options (known or unknown), and only when accepted. +# - Add custom restriction targets for better integration (now some files are +# removed from FTP if restricted for CDROM for example, as the old +# behavior). + # The following cases are not considered: # -# - Redistribution of modified distfiles, because is never been done. +# - Redistribution of modified distfiles, because is never done. # - Creating binaries from modified sources, because packages almost always -# contain modifications to the source, and can not be autodetected (i.e. +# contain modifications to the source, can not be autodetected (i.e. # patch-* in ${FILESDIR}, post-* targets, etc), and these licenses tend to -# have more restrictions. +# have more restrictions anyways. # # Integration with target sequences # # _SANITY_SEQ+= check-license (after check-vulnerable) -# _EXTRACT_SEQ+= ask-license (after post-extract-script) +# _PATCH_SEQ+= ask-license (before any other targets) # _INSTALL_SUSEQ+= install-license (after install-desktop-entries) # -# The 'check-license' target will determine if the license was rejected or has -# to be asked later in 'ask-license' (by then LICENSE_FILE should be available -# for presenting to the user). -# The 'install-license' target installs both the application's license and a -# restriction report (to be used by ports scripts and similar tools). +# The 'check-license' target will determine if the license was accepted, +# rejected or has to be asked later to the user in 'ask-license' (by then +# licenses should be extracted). The 'install-license' target installs the +# applications' licenses, a general package license mentioning them, and a +# restriction report (to be used by ports, scripts and similar tools). -# Variables provided to users +# Variables provided to the ports system and users in general, to modify the +# behavior of the framework # -# LICENSES_ACCEPTED - Accepted licenses and groups. -# LICENSES_REJECTED - Rejected licenses and groups. -# LICENSE_ASK - Require explicit user approval for all licenses not -# present in configuration nor LICENSES_ACCEPTED. -# LICENSES_CONFIG - If defined, will ask again when already saved +# NO_LICENSES_INSTALL - Do not install catalog, report and licenses. +# NO_LICENSES_DIALOGS - Disable interactive menus for asking licenses. + +#NO_LICENSES_INSTALL= yes +#NO_LICENSES_DIALOGS= yes + +# Variables provided to users (can be passed to make or set in /etc/make.conf) # -# The components of LICENSES_{ACCEPTED,REJECTED} can be one of: -# - A license code (like "GPLv2"). -# - A license group prefixed by '@' (like "@OSI"). +# LICENSES_ACCEPTED - Accepted licenses. +# LICENSES_REJECTED - Rejected licenses. +# LICENSES_GROUPS_ACCEPTED - Accepted license groups. +# LICENSES_GROUPS_REJECTED - Rejected license groups. +# LICENSES_ASK - Require explicit user approval for all licenses not +# present in previous variables (for example, stock +# accepted licenses will ask confirmation). # -# Note that the framework configuration format is the same (without groups -# syntax), but stored in ${LICENSE_CFG} or ${LICENSE_CFG_PORT}. The user -# variables take precedence (anyways the other configuration is also made by -# the user). -# # Variables provided to ports # # LICENSE - Code of license (short name). # LICENSE_PERMS - Permissions; use "none" if empty. # LICENSE_GROUPS - Groups the license belongs. -# LICENSE_COMPAT - Compatibility with other licenses/groups (default: all). -# LICENSE_INCOMPAT - Incompatibility with other licenses/groups (default: none). # LICENSE_NAME - Full license name (for the reports). -# LICENSE_NOTES - A note about restrictions (not needed), to replace -# RESTRICTED and ports/LEGAL. # LICENSE_FILE - Full path to license (or use LICENSE_TEXT). # LICENSE_TEXT - Text to use as a license, useful when referencing to # another place if it's not in the distfile. -# LICENSE_DISTFILE - Name of licensed files (defaults to ${DISTFILES}). +# LICENSE_DISTFILES - Name of licensed files (defaults to ${_DISTFILES}). +# LICENSE_COMB - Set to "dual" or "multi", for OR/AND behavior +# (defaults to "single" if undefined, the common case) # -# The following cases are supported (see _LICENSE_TYPE): +# The following cases are supported after defining LICENSE: # # Case 1: license defined in the framework (aka "known"). -# Define LICENSE; framework defines license variables, by redefining any of -# them the port falls in Case 2. # -# Case 2: license is based on a defined one (aka "variant"). -# All license variables must be defined by the port (but LICENSE is set to -# a known value). -# XXX This case is being considered, and if it has to inherit properties from -# its base license or just let it fall in Case 3 (as now). +# In this case the only allowed variables to set are LICENSE_FILE and +# LICENSE_DISTFILES. The rest are managed by the framework and are not allowed +# to change. # -# Case 3: license only known by the port (aka "unknown"). -# All license variables must be defined by the port. +# Case 2: license only known by the port (aka "unknown"). # -# Notes: -# - Permissions use a default-deny policy (that's why groups are there). -# - Adding a license to a group makes it inherit their properties (PERMS, -# GROUPS and COMPAT/INCOMPAT). -# - Components can be negated by prefixing them with "no-" (like -# "no-pkg-sell"). Useful for exceptions. -# - For multiple licenses components can be grouped, for example: -# LICENSE= GPLv2 BSD -# LICENSE_PERMS= GPLv2:no-pkg-sell,pkg-redist BSD:no-pkg-sell,pkg-redist -# LICENSE_NOTES= GPLv2:"No sell" BSD:"Allows everything" +# In this case LICENSE_{PERMS,NAME} are mandatory, in addition to +# either LICENSE_FILE or LICENSE_TEXT. Optional variables are +# LICENSE_{GROUPS,NOTES}. # # Available components for LICENSE_PERMS: -# dist-redist - No free redistribution of distfile (like FTP mirroring; RESTRICTED). +# dist-mirror - No free redistribution of distfile (like FTP mirroring; RESTRICTED). # dist-sell - No selling of distfile (like in CD-ROM; NO_CDROM). -# pkg-redist - No free redistribution of package (like FTP upload; NO_PACKAGE). +# pkg-mirror - No free redistribution of package (like FTP upload; NO_PACKAGE). # pkg-sell - No selling of package (like in CD-ROM; NO_CDROM). -# auto-accept - If license is accepted by default, without presented agreement. -# none - Explicit universal restriction (to make sure that is the intention). -# And the following aliases (can also be negated): pkg, dist, sell and redist. +# auto-accept - If license is accepted by default, without presented +# agreement, at least the user defines LICENSES_ASK. +# +# Notes about permissions: +# - Permissions use a default-deny policy. +# - Components can be negated by prefixing them with "no-" (like +# "no-pkg-sell"). +# - In case a component is present and also excluded (i.e. no-dist-sell and +# dist-sell together in LICENSE_PERMS), it will be excluded. +# - XXX Currently there is no point in "no-" prefixes, as permissions are not +# inherited from groups. Maybe it looks more clear that way than leaving the +# variable empty? +# +# Dual/multiple licenses: +# +# If LICENSE_COMB is set to "dual", then LICENSE can (must, actually) have +# more than one component. After that each license "lic" in LICENSE falls in +# previous cases (known or unknown), but their variables are prefixed by +# _LICENSE_ and suffixed by _lic. The main license name, perms and groups will +# be set automatically (following appropiate logic). The idea is that any +# license from LICENSE can be chosen to use the package. +# +# The case when LICENSE_COMB is set to "multi" is similar. But the idea is +# that all of the licenses in LICENSE must be agreed to use the package. # .if defined(_POSTMKINCLUDED) && !defined(BEFOREPORTMK) .if defined(LICENSE) -# Organization -# - Define common license properties. -# - Define internal variables. -# - Check for single or multiple port licenses. -# - Check defined properties and compare with database. -# - Check user and framework configuration. -# - Define targets. - # Include known licenses from database .include "${PORTSDIR}/Mk/bsd.licenses.db.mk" @@ -120,244 +129,418 @@ # # _LICENSE_LIST_PERMS - Valid permission components # _LICENSE_LIST_PORT_VARS - License variables defined by the port -# _LICENSE_LIST_GROUP_VARS - License variables inherited from groups -# _LICENSE_LIST_SAVE_VARS - License variables present in the report -_LICENSE_LIST_PERMS= dist-redist dist-sell pkg-redist pkg-sell auto-accept none -_LICENSE_LIST_PORT_VARS= PERMS GROUPS NAME COMPAT INCOMPAT -_LICENSE_LIST_GROUP_VARS= PERMS COMPAT INCOMPAT -_LICENSE_LIST_SAVE_VARS= _LICENSE _LICENSE_NOTES _LICENSE_DISTFILES \ - _LICENSE_COMPAT _LICENSE_INCOMPAT ${_LICENSE_LIST_PORT_VARS:S/^/_LICENSE_/} - -# Defaults +_LICENSE_LIST_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept none +_LICENSE_LIST_PORT_VARS= PERMS NAME GROUPS -LICENSE_DISTFILE?= ${DISTFILES} -# XXX internal variables will be useful for multiple licenses -_LICENSE= ${LICENSE} -_LICENSE_NOTES= ${LICENSE_NOTES} -_LICENSE_DISTFILE= ${LICENSE_DISTFILE} - # Path variables # # _LICENSE_DIR - Directory to install licenses # _LICENSE_DIR_REL - Same as above, without ${PREFIX} -# _LICENSE_CFG_GLOB - Global license configuration file -# _LICENSE_CFG_PORT - Per port license configuration file -# _LICENSE_REPORT - License report to be created (under ${LICENSE_DIR}) +# _LICENSE_CATALOG - License catalog (make include file) to be created (dst) +# _LICENSE_CATALOG_TMP - Same as above, but in WRKDIR (src) +# _LICENSE_REPORT - License summary, shows licenses and how they are combined (dst) +# _LICENSE_REPORT_TMP - Same as above, but in WRKDIR (src) +# _LICENSE_COOKIE - Set when license is accepted, it is not present in +# bsd.port.mk to avoid creating LICENSE_{REQ,SEQ} for a +# few more targets only. + +_LICENSE_DIR?= ${PREFIX}/share/licenses/${PKGNAME} +_LICENSE_DIR_REL?= share/licenses/${PKGNAME} +_LICENSE_CATALOG?= ${_LICENSE_DIR}/catalog.mk +_LICENSE_CATALOG_TMP?= ${WRKDIR}/.license-catalog.mk +_LICENSE_REPORT?= ${_LICENSE_DIR}/LICENSE +_LICENSE_REPORT_TMP?= ${WRKDIR}/.license-report +_LICENSE_COOKIE?= ${WRKDIR}/.license_done.${PORTNAME}.${PREFIX:S/\//_/g} + +# Defaults (never overriden for now) +# +# _LICENSE - Copy of LICENSE (for now) +# _LICENSE_COMB - Copy of LICENSE_COMB (but "single" instead of empty) -_LICENSE_DIR?= ${PREFIX}/share/licenses/${UNIQUENAME} -_LICENSE_DIR_REL?= share/licenses/${UNIQUENAME} -_LICENSE_CFG_GLOB?= ${PORT_DBDIR}/license-config -_LICENSE_CFG_PORT?= ${PORT_DBDIR}/${UNIQUENAME}/license -_LICENSE_REPORT?= ${_LICENSE_DIR}/report +_LICENSE?= ${LICENSE} +.if !defined(LICENSE_COMB) +_LICENSE_COMB= single +.else +_LICENSE_COMB= ${LICENSE_COMB} +.endif # Check if single or dual/multiple license # -# _LICENSE_SINGLE - Defined for a single license -# _LICENSE_MULTI - Set to "and"/"or"? (XXX Not implemented) +# Make sure LICENSE_COMB is only used with more than one license. + +.if ${_LICENSE_COMB} != "single" && ${_LICENSE_COMB} != "dual" && ${_LICENSE_COMB} != "multi" +_LICENSE_ERROR?= invalid value for LICENSE_COMB: "${_LICENSE_COMB}" (should be "single", "dual" or "multi") +.endif -#.for lic in ${_LICENSE} -#. if defined(_LICENSE_DEFINED) -#_LICENSE_MULTI= yes -#. else -#_LICENSE_DEFINED?= ${lic} -#. endif -#.endfor -#.if !defined(_LICENSE_MULTI) -#_LICENSE_SINGLE= yes -#.endif -#.undef _LICENSE_DEFINED +.for lic in ${_LICENSE} +. if defined(_LICENSE_DEFINED) +. if ${_LICENSE_COMB} == "single" +_LICENSE_ERROR?= multiple licenses in LICENSE, but LICENSE_COMB is set to "single" (or undefined) +. else +_LICENSE_MULTI= yes +. endif +. else +_LICENSE_DEFINED= yes +. endif +.endfor +.if ${_LICENSE_COMB} != "single" && !defined(_LICENSE_MULTI) +_LICENSE_ERROR?= single license in LICENSE, but LICENSE_COMB is set to "${_LICENSE_COMB}" (requires more than one) +.endif +.if !defined(_LICENSE_DEFINED) +_LICENSE_ERROR?= no licenses present in LICENSE (empty string) +.endif +.undef _LICENSE_DEFINED +.undef _LICENSE_MULTI # Evaluate port license groups and permissions # # Available values for _LICENSE_TYPE: +# # Case 1: "known" (license info taken from internal database) -# Case 2: "variant" (LICENSE is known, but info taken from port) -# Case 3: "unknown" (LICENSE is not known, and info taken from port) -# # Make sure required variables are defined, and remove conflicting (positive -# and negative) and duplicated components. +# Case 2: "unknown" (LICENSE is not known, and info taken from port) +# +# Make sure required variables are defined, and remove conflicting (positive +# and negative) duplicated components. -#.if defined(_LICENSE_SINGLE) +.if ${_LICENSE_COMB} == "single" +# Defaults to empty +_LICENSE_GROUPS?= # +# Start . for lic in ${_LICENSE} . if ${_LICENSE_LIST:M${lic}} != "" +# Case 1: license defined in the framework. +_LICENSE_TYPE= known . for var in ${_LICENSE_LIST_PORT_VARS} . if defined(LICENSE_${var}) -_LICENSE_TYPE= variant +_LICENSE_ERROR?= redefining LICENSE_${var} is not allowed for known licenses, to define a custom license try another LICENSE name like ${_LICENSE}-variant . endif -. endfor -_LICENSE_TYPE?= known -. for var in ${_LICENSE_LIST_PORT_VARS} -# Case 1: license defined in the framework. -. if ${_LICENSE_TYPE} == "known" +. if !defined(_LICENSE_${var}_${lic}) +_LICENGE_ERROR?= ERROR: missing _LICENSE_${var}_${lic} in bsd.licenses.db.mk +. else _LICENSE_${var}= ${_LICENSE_${var}_${lic}} -# Case 2: license is based on a defined one. -# XXX Should here be inheritance of non defined values? -. elif ${_LICENSE_TYPE} == "variant" && defined(LICENSE_${var}) -_LICENSE_${var}= ${LICENSE_${var}} . endif . endfor -# Case 3: license only known by the port. +# Check for LICENSE_FILE or at least LICENSE_TEXT (which simulates it) +. if !defined(LICENSE_FILE) +. if !defined(LICENSE_TEXT) +# XXX Until we have a license pool under /usr/ports/Licenses use this +_LICENSE_TEXT= The license: ${_LICENSE} (${_LICENSE_NAME}) is standard, please read from the web. +_LICENSE_FILE= ${WRKDIR}/${lic} +. else +_LICENSE_ERROR?= defining LICENSE_TEXT is not allowed for known licenses +. endif +. else +_LICENSE_FILE= ${LICENSE_FILE} +. endif + . else -_LICENSE_TYPE?= unknown +# Case 2: license only known by the port. +_LICENSE_TYPE= unknown . for var in ${_LICENSE_LIST_PORT_VARS} . if defined(LICENSE_${var}) _LICENSE_${var}= ${LICENSE_${var}} +. else +_LICENSE_ERROR?= for a new/unknown license, defining LICENSE_${var} is mandatory (otherwise use a known LICENSE) . endif . endfor +# Check LICENSE_PERMS for invalid, ambiguous and duplicate components +__LICENSE_PERMS:= # +. for comp in ${_LICENSE_PERMS} +. if ${_LICENSE_LIST_PERMS:M${comp:C/^no-//}} == "" +_LICENSE_ERROR?= invalid LICENSE_PERMS component "${comp}" +. elif ${__LICENSE_PERMS:M${comp}} == "" && \ + ${_LICENSE_PERMS:Mno-${comp:C/^no-//}} == "" +__LICENSE_PERMS+= ${comp} +. endif +. endfor +_LICENSE_PERMS:= ${__LICENSE_PERMS} +. undef __LICENSE_PERMS +# Check for LICENSE_FILE or at least LICENSE_TEXT (which simulates it) +. if !defined(LICENSE_FILE) +. if !defined(LICENSE_TEXT) +_LICENSE_ERROR?= either LICENSE_FILE or LICENSE_TEXT must be defined +. else +_LICENSE_TEXT= ${LICENSE_TEXT} +_LICENSE_FILE= ${WRKDIR}/${lic} +. endif +. else +_LICENSE_FILE= ${LICENSE_FILE} +. endif +. endif + +# Only one is allowed +. if defined(LICENSE_FILE) && defined(LICENSE_TEXT) +_LICENSE_ERROR?= defining both LICENSE_FILE and LICENSE_TEXT is not allowed . endif -# XXX Some defaults (here they do not affect _LICENSE_TYPE). -_LICENSE_COMPAT?= # -_LICENSE_INCOMPAT?= # -_LICENSE_GROUPS?= # -# Check everything needed is defined. -. for var in ${_LICENSE_LIST_PORT_VARS} -. if !defined(_LICENSE_${var}) -. if ${_LICENSE_TYPE} == "variant" -_LICENSE_ERROR?= for a modified license, defining LICENSE_${var} is mandatory (otherwise define LICENSE alone) -. elif ${_LICENSE_TYPE} == "unknown" -_LICENSE_ERROR?= for a new/unknown license, defining LICENSE_${var} is mandatory (otherwise use a known LICENSE) +# Distfiles +. if !defined(LICENSE_DISTFILES) +_LICENSE_DISTFILES= ${_DISTFILES} +. else +_LICENSE_DISTFILES= ${LICENSE_DISTFILES} +. endif +. endfor + +.else +. for lic in ${_LICENSE} +# Defaults to empty +_LICENSE_GROUPS_${lic}?=# +. if ${_LICENSE_LIST:M${lic}} != "" +# Case 1: license defined in the framework. +_LICENSE_TYPE_${lic}= known +. for var in ${_LICENSE_LIST_PORT_VARS} +. if defined(LICENSE_${var}_${lic}) +_LICENSE_ERROR?= redefining LICENSE_${var}_${lic} is not allowed for known licenses, to define a custom license try another LICENSE name for ${lic} like ${lic}-variant +. endif +. if !defined(_LICENSE_${var}_${lic}) +_LICENGE_ERROR?= ERROR: missing _LICENSE_${var}_${lic} in bsd.licenses.db.mk +. endif +. endfor +# Check for LICENSE_FILE or at least LICENSE_TEXT (which simulates it) +. if !defined(LICENSE_FILE_${lic}) +. if !defined(LICENSE_TEXT_${lic}) +# XXX Until we have a license pool under /usr/ports/Licenses use this +_LICENSE_TEXT_${lic}= The license: ${lic} (${_LICENSE_NAME_${lic}}) is standard, please read from the web. +_LICENSE_FILE_${lic}= ${WRKDIR}/${lic} +. else +_LICENSE_ERROR?= defining LICENSE_TEXT_${lic} is not allowed for known licenses . endif +. else +_LICENSE_FILE_${lic}= ${LICENSE_FILE_${lic}} . endif -. endfor -# Groups are always inherited (and were expanded so no recursion) -. for group in ${_LICENSE_LIST_GROUPS} -. for var in ${_LICENSE_LIST_GROUP_VARS} -_LICENSE_${var}+= ${_LICENSE_${var}_${group}} + +. else +# Case 2: license only known by the port. +_LICENSE_TYPE_${lic}= unknown +. for var in ${_LICENSE_LIST_PORT_VARS} +. if defined(LICENSE_${var}_${lic}) +_LICENSE_${var}_${lic}= ${LICENSE_${var}_${lic}} +. else +_LICENSE_ERROR?= for a new/unknown license, defining LICENSE_${var}_${lic} is mandatory (otherwise use a known LICENSE) +. endif . endfor -. endfor -# Expand LICENSE_PERMS aliases -# pkg -> pkg-redist pkg-sell -# dist -> dist-redist dist-sell -# redist -> pkg-redist dist-redist -# sell -> pkg-sell dist-sell -_LICENSE_PERMS:= ${_LICENSE_PERMS:Nno-*:C/^(pkg|dist)$/\1-redist \1-sell/:C/^(sell|redist)$/dist-\1 pkg-\1/} \ - ${_LICENSE_PERMS:Mno-*:C/^(no-)(pkg|dist)$/\1\2-redist \1\2-sell/:C/^(no-)(sell|redist)$/\1dist-\2 \1pkg-\2/} -# XXX Cleaner, but outputs an error when (no-)? is not found but referenced later by \1 -#_LICENSE_PERMS:= ${_LICENSE_PERMS:C/^(no-)?(pkg|dist)$/\1\2-redist \1\2-sell/:C/^(no-)?(sell|redist)$/\1dist-\2 \1pkg-\2/} # Check LICENSE_PERMS for invalid, ambiguous and duplicate components __LICENSE_PERMS:= # -. for comp in ${_LICENSE_PERMS} -. if ${_LICENSE_LIST_PERMS:M${comp:C/^no-//}} == "" -_LICENSE_ERROR?= invalid LICENSE_PERMS component "${comp}" -. elif ${__LICENSE_PERMS:M${comp}} == "" && \ - ${_LICENSE_PERMS:Mno-${comp:C/^no-//}} == "" -__LICENSE_PERMS+= ${comp} -. endif -. endfor -_LICENSE_PERMS:= ${__LICENSE_PERMS} -. undef __LICENSE_PERMS +. for comp in ${_LICENSE_PERMS_${lic}} +. if ${_LICENSE_LIST_PERMS:M${comp:C/^no-//}} == "" +_LICENSE_ERROR?= invalid LICENSE_PERMS_${var} component "${comp}" +. elif ${__LICENSE_PERMS:M${comp}} == "" && \ + ${_LICENSE_PERMS_${lic}:Mno-${comp:C/^no-//}} == "" +__LICENSE_PERMS+= ${comp} +. endif +. endfor +_LICENSE_PERMS_${lic}:= ${__LICENSE_PERMS} +. undef __LICENSE_PERMS # Check for LICENSE_FILE or at least LICENSE_TEXT (which simulates it) -# XXX License file is optional for licenses present in database, maybe an option -# could be added to avoid installing licenses present in the database -. if !defined(LICENSE_FILE) -. if !defined(LICENSE_TEXT) -. if ${_LICENSE_TYPE} == "known" -LICENSE_TEXT= License ${lic} is in internal database, check repository. +. if !defined(LICENSE_FILE_${lic}) +. if !defined(LICENSE_TEXT_${lic}) +_LICENSE_ERROR?= either LICENSE_FILE_${lic} or LICENSE_TEXT_${lic} must be defined . else -_LICENSE_ERROR?= LICENSE_FILE or LICENSE_TEXT must be defined for unknown licenses +_LICENSE_TEXT_${lic}= ${LICENSE_TEXT_${lic}} +_LICENSE_FILE_${lic}= ${WRKDIR}/${lic} . endif +. else +_LICENSE_FILE_${lic}= ${LICENSE_FILE_${lic}} . endif -_LICENSE_FILE= ${WRKDIR}/License-freebsd-port +. endif + +# Only one is allowed +. if defined(LICENSE_FILE_${lic}) && defined(LICENSE_TEXT_${lic}) +_LICENSE_ERROR?= defining both LICENSE_FILE_${lic} and LICENSE_TEXT_${lic}is not allowed +. endif +# Distfiles +. if !defined(LICENSE_DISTFILES_${lic}) +_LICENSE_DISTFILES_${lic}= ${_DISTFILES} . else -_LICENSE_FILE= ${LICENSE_FILE} +_LICENSE_DISTFILES_${lic}= ${LICENSE_DISTFILES_${lic}} . endif . endfor -#.else -# XXX dual/multiple licenses -#.endif +.endif # Check if the user agrees with the license -# -# _LICENSE_CFG - Path to cfg file (either global or per port) -# _LICENSE_CFG_TYPE - "global" or "port", according to the previous -# -# LICENSES_ACCEPTED - List of accepted licenses (user version) -# LICENSES_REJECTED - List of rejected licenses (user version) -# _LICENSES_ACCEPTED - List of accepted licenses (configuration file) -# _LICENSES_REJECTED - List of rejected licenses (configuration file) + +# Make sure these are defined + +LICENSES_ACCEPTED?= # +LICENSES_REJECTED?= # +LICENSES_GROUPS_ACCEPTED?= # +LICENSES_GROUPS_REJECTED?= # + +# Evaluate per-license status -# If _LICENSE_TYPE is "known", configuration is global, otherwise per port. +.if ${_LICENSE_COMB} == "single" +. for lic in ${_LICENSE} +. if ${LICENSES_REJECTED:M${lic}} != "" +_LICENSE_STATUS?= rejected +. endif +. for group in ${_LICENSE_GROUPS} +. if ${LICENSES_GROUPS_REJECTED:M${group}} != "" +_LICENSE_STATUS?= rejected +. endif +. if ${LICENSES_GROUPS_ACCEPTED:M${group}} != "" +_LICENSE_STATUS?= accepted +. endif +. endfor +. if ${LICENSES_ACCEPTED:M${lic}} != "" +_LICENSE_STATUS?= accepted +. endif +. if ${_LICENSE_PERMS:Mauto-accept} != "" && !defined(LICENSES_ASK) +_LICENSE_STATUS?= accepted +. endif +_LICENSE_STATUS?= ask +. endfor -.if ${_LICENSE_TYPE} == "known" -_LICENSE_CFG= ${_LICENSE_CFG_GLOB} -_LICENSE_CFG_TYPE= global .else -_LICENSE_CFG= ${_LICENSE_CFG_PORT} -_LICENSE_CFG_TYPE= port +. for lic in ${_LICENSE} +. if ${LICENSES_REJECTED:M${lic}} != "" +_LICENSE_STATUS_${lic}?= rejected +. endif +. for group in ${_LICENSE_GROUPS_${lic}} +. if ${LICENSES_GROUPS_REJECTED:M${group}} != "" +_LICENSE_STATUS_${lic}?= rejected +. endif +. if ${LICENSES_GROUPS_ACCEPTED:M${group}} != "" +_LICENSE_STATUS_${lic}?= accepted +. endif +. endfor +. if ${LICENSES_ACCEPTED:M${lic}} != "" +_LICENSE_STATUS_${lic}?= accepted +. endif +. if ${_LICENSE_PERMS_${lic}:Mauto-accept} != "" && !defined(LICENSES_ASK) +_LICENSE_STATUS_${lic}?= accepted +. endif +_LICENSE_STATUS_${lic}?= ask +. endfor .endif -.if exists(${_LICENSE_CFG}) -. include "${_LICENSE_CFG}" -.endif +# Evaluate general status -# Make sure these are defined -LICENSES_ACCEPTED?= # -LICENSES_REJECTED?= # -_LICENSES_ACCEPTED?= # -_LICENSES_REJECTED?= # +.if ${_LICENSE_COMB} == "dual" +. for lic in ${_LICENSE} +. if ${_LICENSE_STATUS_${lic}} == "accepted" +_LICENSE_STATUS= accepted +. elif ${_LICENSE_STATUS_${lic}} == "ask" +_LICENSE_STATUS?= ask +_LICENSE_TO_ASK+= ${lic} +. endif +_LICENSE_STATUS?= rejected +. endfor -# Evaluate status (accepted, rejected or ask) -# -# _LICENSE_STATUS - Status: "accepted", "rejected" or "ask" -# _LICENSE_STATUS_FROM - Status origin: "user", "config" or "default" -# _LICENSE_STATUS_REASON - Text reason of license status (XXX Required?) +.elif ${_LICENSE_COMB} == "multi" +. for lic in ${_LICENSE} +. if ${_LICENSE_STATUS_${lic}} == "rejected" +_LICENSE_STATUS= rejected +. elif ${_LICENSE_STATUS_${lic}} == "ask" +_LICENSE_STATUS?= ask +_LICENSE_TO_ASK+= ${lic} +. endif +. endfor +_LICENSE_STATUS?= accepted +.endif -_LICENSE_TYPE_PAIRS_known= LICENSES,user _LICENSES,config -_LICENSE_TYPE_PAIRS_variant= _LICENSES,config -_LICENSE_TYPE_PAIRS_unknown= _LICENSES,config +# For dual/multi licenses, after processing all sub-licenses, the following +# must be determined: _LICENSE_NAME, _LICENSE_PERMS and _LICENSE_GROUPS. -#.if defined(_LICENSE_SINGLE) -# User and saved configuration +.if ${_LICENSE_COMB} == "dual" +_LICENSE_NAME= Dual (any of): ${_LICENSE} +# Calculate least restrictive permissions (union) +_LICENSE_PERMS:= # +. for lic in ${_LICENSE} +. for comp in ${_LICENSE_LIST_PERMS} +. if ${_LICENSE_PERMS_${lic}:M${comp}} != "" && \ + ${_LICENSE_PERMS:M${comp}} == "" +_LICENSE_PERMS+= ${comp} +. endif +. endfor +. endfor +# Calculate least restrictive groups (union) +_LICENSE_GROUPS:= # . for lic in ${_LICENSE} -. for pair in ${_LICENSE_TYPE_PAIRS_${_LICENSE_TYPE}} -_LC_VAR:= ${pair:C/,.*//} -_LC_TYPE:= ${pair:C/.*,//} -. if ${${_LC_VAR}_REJECTED:M${lic}} != "" && !defined(_LICENSE_STATUS) -_LICENSE_STATUS= rejected -_LICENSE_STATUS_FROM:= ${_LC_TYPE} -. elif ${${_LC_VAR}_ACCEPTED:M${lic}} != "" && !defined(_LICENSE_STATUS) -_LICENSE_STATUS= accepted -_LICENSE_STATUS_FROM:= ${_LC_TYPE} +. for comp in ${_LICENSE_LIST_GROUPS} +. if ${_LICENSE_GROUPS_${lic}:M${comp}} != "" && \ + ${_LICENSE_GROUPS:M${comp}} == "" +_LICENSE_GROUPS+= ${comp} . endif . endfor +. endfor -# Automatic configuration -. if !defined(_LICENSE_STATUS) -# Check groups (only available for user configuration) -. for group in ${_LICENSE_LIST_GROUPS} -. if ${LICENSES_REJECTED:M\@${group}} != "" -_LICENSE_STATUS?= rejected -_LICENSE_STATUS_FROM?= user -. endif -. if ${LICENSES_ACCEPTED:M\@${group}} != "" -_LICENSE_STATUS?= accepted -_LICENSE_STATUS_FROM?= user -. endif -. endfor -# Auto-accept if LICENSE_PERMS has auto-accept, and !LICENSES_ASK -. if ${_LICENSE_PERMS:Mauto-accept} != "" -. if !defined(LICENSES_ASK) -_LICENSE_STATUS?= accepted -_LICENSE_STATUS_FROM?= default -. else -_LICENSE_STATUS?= ask -_LICENSE_STATUS_FROM?= user -. endif +.elif ${_LICENSE_COMB} == "multi" +_LICENSE_NAME= Multiple (all of): ${_LICENSE} +# Calculate most restrictive permissions (intersection) +_LICENSE_PERMS:= ${_LICENSE_LIST_PERMS} +. for lic in ${_LICENSE} +. for comp in ${_LICENSE_LIST_PERMS} +. if ${_LICENSE_PERMS_${lic}:M${comp}} == "" +_LICENSE_PERMS:= ${_LICENSE_PERMS:N${comp}} . endif -# If defined BATCH and need to ask, it fails -. if defined(BATCH) -_LICENSE_STATUS?= rejected -_LICENSE_STATUS_FROM?= user +. endfor +. endfor +# Calculate most restrictive groups (intersection) +_LICENSE_GROUPS:= ${_LICENSE_LIST_GROUPS} +. for lic in ${_LICENSE} +. for comp in ${_LICENSE_LIST_GROUPS} +. if ${_LICENSE_GROUPS_${lic}:M${comp}} == "" +_LICENSE_GROUPS:= ${_LICENSE_GROUPS:N${comp}} . endif -# Otherwise ask to the user -_LICENSE_STATUS?= ask -_LICENSE_STATUS_FROM?= default +. endfor +. endfor +.endif + +# Prepare information for asking license to the user + +.if ${_LICENSE_STATUS} == "ask" && ${_LICENSE_COMB} != "single" +_LICENSE_ASK_DATA!= mktemp -t portslicense +.endif + +# Calculate restrictions and set RESTRICTED_FILES when +# appropiate, together with cleaning targets. +# +# XXX For multiple licenses restricted distfiles are always removed from both +# CDROM and FTP, but the current framework supports separating them (would +# require better/new delete-package and delete-distfiles targets) + +.if ${_LICENSE_PERMS:Mpkg-mirror} == "" +_LICENSE_RESTRICTED+= delete-package +.elif ${_LICENSE_PERMS:Mpkg-sell} == "" +_LICENSE_CDROM+= delete-package +.endif + +.if ${_LICENSE_COMB} == "multi" +. for lic in ${_LICENSE} +. if ${_LICENSE_PERMS_${lic}:Mdist-mirror} == "" || ${_LICENSE_PERMS_${lic}:Mdist-sell} == "" +RESTRICTED_FILES+= ${_LICENSE_DISTFILES_${lic}} . endif . endfor +. if defined(RESTRICTED_FILES) +RESTRICTED_FILES+= ${_PATCHFILES} +_LICENSE_RESTRICTED+= delete-distfiles +_LICENSE_CDROM+= delete-distfiles +. endif +.else +. if ${_LICENSE_PERMS:Mdist-mirror} == "" +_LICENSE_RESTRICTED+= delete-distfiles +RESTRICTED_FILES= ${_PATCHFILES} ${_DISTFILES} +. elif ${_LICENSE_PERMS:Mdist-sell} == "" +_LICENSE_CDROM+= delete-distfiles +RESTRICTED_FILES= ${_PATCHFILES} ${_DISTFILES} +. endif +.endif -#.else -# XXX dual/multiple licenses -#.endif +.if defined(_LICENSE_RESTRICTED) +clean-restricted: ${_LICENSE_RESTRICTED} +clean-restricted-list: ${_LICENSE_RESTRICTED:C/$/-list/} +.else +clean-restricted: +clean-restricted-list: +.endif + +.if defined(_LICENSE_CDROM) +clean-cdrom: ${_LICENSE_CDROM} +clean-cdrom-list: ${_LICENSE_CDROM:C/$/-list/} +.else +clean-cdrom: +clean-cdrom-list: +.endif # Check variables are correctly defined and print status up to here @@ -366,160 +549,206 @@ @${ECHO_MSG} "===> License not correctly defined: ${_LICENSE_ERROR}" @exit 1 .endif -#.if defined(_LICENSE_SINGLE) . if ${_LICENSE_STATUS} == "rejected" - @${ECHO_MSG} "===> License ${_LICENSE} rejected by the user (by ${_LICENSE_STATUS_FROM})" + @${ECHO_MSG} "===> License rejected by the user" + @${ECHO_MSG} + @${ECHO_MSG} "If you want to install this port make sure the following license/s are not present in LICENSES_REJECTED, either in make arguments or /etc/make.conf: ${_LICENSE}. Also check LICENSES_GROUPS_REJECTED in case they contain a group this license/s belong to." | ${FMT} + @${ECHO_MSG} @exit 1 . elif ${_LICENSE_STATUS} == "accepted" - @${ECHO_MSG} "===> License ${_LICENSE} accepted by the user (by ${_LICENSE_STATUS_FROM})" + @${ECHO_MSG} "===> License accepted by the user" . elif ${_LICENSE_STATUS} == "ask" - @${ECHO_MSG} "===> License ${_LICENSE} needs agreement, will ask later (by ${_LICENSE_STATUS_FROM})" +. if defined(BATCH) + @${ECHO_MSG} "===> License needs confirmation, but BATCH is defined" + @exit 1 +. else + @${ECHO_MSG} "===> License needs confirmation, will ask later" +. endif . endif -#.else -# XXX dual/multiple licenses -#.endif + +# Display, ask and save preference if requested + +ask-license: ${_LICENSE_COOKIE} -.if defined(LICENSES_CONFIG) -_LICENSES_CONFIG= yes +${_LICENSE_COOKIE}: +# Make sure all required license files exist +.if ${_LICENSE_COMB} == "single" +. if !defined(LICENSE_FILE) && defined(_LICENSE_TEXT) + @test -f ${_LICENSE_FILE} || ${ECHO_CMD} "${_LICENSE_TEXT}" | ${FMT} > ${_LICENSE_FILE} +. endif + @test -f ${_LICENSE_FILE} || \ + (${ECHO_MSG} "===> Missing license file for ${_LICENSE} in ${_LICENSE_FILE}"; exit 1) .else -_LICENSES_CONFIG= no +. for lic in ${_LICENSE} +. if !defined(LICENSE_FILE_${lic}) && defined(_LICENSE_TEXT_${lic}) + @test -f ${_LICENSE_FILE_${lic}} || ${ECHO_CMD} "${_LICENSE_TEXT_${lic}}" | ${FMT} > ${_LICENSE_FILE_${lic}} +. endif + @test -f ${_LICENSE_FILE_${lic}} || \ + (${ECHO_MSG} "===> Missing license file for ${lic} in ${_LICENSE_FILE_${lic}}"; exit 1) +. endfor .endif -# For config when user accepts -_LICENSES_ACCEPTED_YES= ${_LICENSES_ACCEPTED} ${_LICENSE} -.for lic in ${_LICENSE} -_LICENSES_REJECTED_YES= ${_LICENSES_REJECTED:N${lic}} -.endfor -# For config when user rejects -.for lic in ${_LICENSE} -_LICENSES_ACCEPTED_NO= ${_LICENSES_ACCEPTED:N${lic}} -.endfor -_LICENSES_REJECTED_NO= ${_LICENSES_REJECTED} ${_LICENSE} +.if ${_LICENSE_STATUS} == "ask" +. if !defined(NO_LICENSES_DIALOGS) +# Dialog interface +. if ${_LICENSE_COMB} == "single" + @while true; do \ + tmpfile=$$(mktemp -t portlicenses); \ + ${DIALOG} --menu "License for ${PKGNAME} (${_LICENSE})" 21 70 15 accept "Accept license" reject "Reject license" view "View license" 2>"$${tmpfile}"; \ + result=`${CAT} $${tmpfile}`; \ + case $${result} in \ + accept) break ;; \ + reject) exit 1;; \ + view) ${DIALOG} --textbox "${_LICENSE_FILE}" 21 70 ;; \ + esac; \ + done -# Display, ask and save preference if requested +. elif ${_LICENSE_COMB} == "dual" + @${RM} -f ${_LICENSE_ASK_DATA} +. for lic in ${_LICENSE_TO_ASK} >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat Aug 15 01:22:18 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5AA411065692; Sat, 15 Aug 2009 01:22:18 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1D6B4106568C for ; Sat, 15 Aug 2009 01:22:18 +0000 (UTC) (envelope-from alepulver@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 0A39D8FC45 for ; Sat, 15 Aug 2009 01:22:18 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7F1MILc076042 for ; Sat, 15 Aug 2009 01:22:18 GMT (envelope-from alepulver@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7F1MHgU076040 for perforce@freebsd.org; Sat, 15 Aug 2009 01:22:17 GMT (envelope-from alepulver@freebsd.org) Date: Sat, 15 Aug 2009 01:22:17 GMT Message-Id: <200908150122.n7F1MHgU076040@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to alepulver@freebsd.org using -f From: Alejandro Pulver To: Perforce Change Reviews Cc: Subject: PERFORCE change 167349 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 01:22:18 -0000 http://perforce.freebsd.org/chv.cgi?CH=167349 Change 167349 by alepulver@alepulver_deimos on 2009/08/15 01:21:34 - Integrate latest CVS changes. Affected files ... .. //depot/projects/soc2008/alepulver-portslicense/ports/GIDs#6 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.autotools.mk#2 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.commands.mk#2 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.database.mk#5 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.fpc.mk#3 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.gcc.mk#6 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.gecko.mk#4 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.kde4.mk#4 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.ldap.mk#3 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.linux-apps.mk#4 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.octave.mk#2 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.openssl.mk#4 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.port.mk#9 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.qt.mk#4 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.ruby.mk#7 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.scons.mk#3 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.sdl.mk#2 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.sites.mk#6 integrate .. //depot/projects/soc2008/alepulver-portslicense/ports/UIDs#6 integrate Differences ... ==== //depot/projects/soc2008/alepulver-portslicense/ports/GIDs#6 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: ports/GIDs,v 1.74 2009/06/19 17:16:01 mezz Exp $ +# $FreeBSD: ports/GIDs,v 1.77 2009/08/05 01:38:44 vanilla Exp $ # Please keep this file sorted by GID! smmsp:*:25: bind:*:53: @@ -84,6 +84,7 @@ postgrey:*:225: aprsd:*:240: tnc:*:241: +prosody:*:242: fcron:*:247: _tor:*:256: _dns-proxy-tor:*:257: @@ -113,6 +114,7 @@ nullmail:*:522: dkimproxy:*:525: pgbouncer:*:534: +redis:*:535: ejabberd:*:543: qtss:*:554: ircdru:*:555: ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.autotools.mk#2 (text+ko) ==== @@ -1,7 +1,7 @@ #-*- mode: makefile; tab-width: 4; -*- # ex:ts=4 # -# $FreeBSD: ports/Mk/bsd.autotools.mk,v 1.30 2007/07/28 06:33:42 ade Exp $ +# $FreeBSD: ports/Mk/bsd.autotools.mk,v 1.31 2009/08/02 19:32:04 mezz Exp $ # # Please view me with 4 column tabs! # @@ -175,10 +175,10 @@ #--------------------------------------------------------------------------- # Convenience function to save people having to depend directly on -# devel/libltdl15 +# devel/libltdl22 # .if defined(AUTOTOOL_libltdl) -LIB_DEPENDS+= ltdl.4:${PORTSDIR}/devel/libltdl15 +LIB_DEPENDS+= ltdl.7:${PORTSDIR}/devel/libltdl22 .endif .if defined(AUTOTOOL_libtool) @@ -202,7 +202,7 @@ LIBTOOL_LIBEXECDIR= ${LOCALBASE}/libexec/libtool LIBTOOL_SHAREDIR= ${LOCALBASE}/share/libtool LIBTOOL_M4= ${LOCALBASE}/share/aclocal/libtool.m4 -LTMAIN= ${LIBTOOL_SHAREDIR}/ltmain.sh +LTMAIN= ${LIBTOOL_SHAREDIR}/config/ltmain.sh LIBTOOL_VARS= LIBTOOL=${LIBTOOL} LIBTOOLIZE=${LIBTOOLIZE} LIBTOOL_M4=${LIBTOOL_M4} LIBTOOL_DEPENDS= ${LIBTOOL}:${PORTSDIR}/devel/libtool${LIBTOOL_VERSION} ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.commands.mk#2 (text+ko) ==== @@ -5,7 +5,7 @@ # # Created by: Gabor Kovesdan # -# $FreeBSD: ports/Mk/bsd.commands.mk,v 1.3 2008/04/14 16:46:41 pav Exp $ +# $FreeBSD: ports/Mk/bsd.commands.mk,v 1.4 2009/08/03 15:36:58 miwi Exp $ # # DO NOT COMMIT CHANGES TO THIS FILE BY YOURSELF, EVEN IF YOU DID NOT GET # A RESPONSE FROM THE MAINTAINER(S) WITHIN A REASONABLE TIMEFRAME! ALL @@ -41,6 +41,7 @@ FALSE?= false # Shell builtin FILE?= /usr/bin/file FIND?= /usr/bin/find +FLEX?= /usr/bin/flex FMT?= /usr/bin/fmt GMAKE?= gmake GREP?= /usr/bin/grep @@ -113,4 +114,18 @@ # Used to print all the '===>' style prompts - override this to turn them off. ECHO_MSG?= ${ECHO_CMD} +.if exists(${LOCALBASE}/sbin/pkg_info) +PKG_CMD?= ${LOCALBASE}/sbin/pkg_create +PKG_ADD?= ${LOCALBASE}/sbin/pkg_add +PKG_DELETE?= ${LOCALBASE}/sbin/pkg_delete +PKG_INFO?= ${LOCALBASE}/sbin/pkg_info +PKG_VERSION?= ${LOCALBASE}/sbin/pkg_version +.else +PKG_CMD?= /usr/sbin/pkg_create +PKG_ADD?= /usr/sbin/pkg_add +PKG_DELETE?= /usr/sbin/pkg_delete +PKG_INFO?= /usr/sbin/pkg_info +PKG_VERSION?= /usr/sbin/pkg_version +.endif + .endif ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.database.mk#5 (text+ko) ==== @@ -1,7 +1,7 @@ # -*- mode: Makefile; tab-width: 4; -*- # ex: ts=4 # -# $FreeBSD: ports/Mk/bsd.database.mk,v 1.36 2009/07/08 06:54:19 girgen Exp $ +# $FreeBSD: ports/Mk/bsd.database.mk,v 1.37 2009/07/21 08:02:18 ale Exp $ # .if defined(_POSTMKINCLUDED) && !defined(Database_Post_Include) @@ -111,6 +111,7 @@ MYSQL41_LIBVER= 14 MYSQL50_LIBVER= 15 MYSQL51_LIBVER= 16 +MYSQL54_LIBVER= 16 MYSQL60_LIBVER= 16 # Setting/finding MySQL version we want. ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.fpc.mk#3 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: ports/Mk/bsd.fpc.mk,v 1.9 2009/05/24 06:12:44 acm Exp $ +# $FreeBSD: ports/Mk/bsd.fpc.mk,v 1.10 2009/07/13 19:29:53 acm Exp $ # # bsd.fpc.mk - Support for FreePascal based ports. # @@ -47,6 +47,7 @@ fpc-check-install: check-makevars:: +.if defined(UNITPREFIX) && defined(PKGNAMESUFFIX) @${ECHO_CMD} "#################################################################" @${ECHO_CMD} "" @${ECHO_CMD} " The following freepascal unit will be installed in your system: " @@ -54,6 +55,7 @@ @${ECHO_CMD} " * ${UNITPREFIX}${PKGNAMESUFFIX:S/-//} " @${ECHO_CMD} "" @${ECHO_CMD} "#################################################################" +.endif _FPC_ALL_UNITS= aspell bfd cairo chm fcl-async fcl-base fcl-db fcl-fpcunit fcl-image \ fcl-json fcl-net fcl-passrc fcl-process fcl-registry fcl-web fcl-xml fftw \ ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.gcc.mk#6 (text+ko) ==== @@ -13,15 +13,15 @@ # USE_FORTRAN knob. # # For example: -# USE_GCC= 4.2+ # port requires GCC 4.2 or later to build with. -# USE_GCC= 4.3 # port requires GCC 4.3 to build with. +# USE_GCC= 4.2+ # port requires GCC 4.2 or later. +# USE_GCC= 4.3 # port requires GCC 4.3. # # If your port needs a Fortran compiler, please specify that with the # USE_FORTRAN= knob. Here is the list of options for that knob: # -# USE_FORTRAN= yes # use gfortran43 (/lang/gcc43) -# USE_FORTRAN= g77 # use g77-34 (lang/gcc34; FreeBSD>=7) -# # or system f77 (/usr/bin/f77; FreeBSD<=6) +# USE_FORTRAN= yes # use gfortran43 (lang/gcc43) +# USE_FORTRAN= g77 # use g77-34 (lang/gcc34; FreeBSD>=7) +# # or system f77 (/usr/bin/f77; FreeBSD<=6) # USE_FORTRAN= ifort # use the Intel compiler (lang/ifc) # # Due to object file incompatiblity between Fortran compilers, we strongly @@ -30,7 +30,7 @@ # If you are wondering what your port exactly does, use "make test-gcc" # to see some debugging. # -# $FreeBSD: ports/Mk/bsd.gcc.mk,v 1.30 2009/06/19 17:48:47 gerald Exp $ +# $FreeBSD: ports/Mk/bsd.gcc.mk,v 1.31 2009/07/12 22:35:13 gerald Exp $ # GCC_Include_MAINTAINER= gerald@FreeBSD.org ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.gecko.mk#4 (text+ko) ==== @@ -4,7 +4,7 @@ # Date created: 12 Nov 2005 # Whom: Michael Johnson # -# $FreeBSD: ports/Mk/bsd.gecko.mk,v 1.12 2009/05/04 19:23:41 miwi Exp $ +# $FreeBSD: ports/Mk/bsd.gecko.mk,v 1.14 2009/07/18 11:10:10 dinoex Exp $ # $MCom: ports/Mk/bsd.gecko.mk,v 1.10 2009/04/04 19:54:48 marcus Exp $ # # 4 column tabs prevent hair loss and tooth decay! @@ -320,7 +320,7 @@ dbm_EXTRACT_AFTER_ARGS= --exclude mozilla/dbm -jpeg_LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg +jpeg_LIB_DEPENDS= jpeg.10:${PORTSDIR}/graphics/jpeg jpeg_MOZ_OPTIONS= --with-system-jpeg=${LOCALBASE} jpeg_EXTRACT_AFTER_ARGS= --exclude mozilla/jpeg @@ -532,10 +532,6 @@ @${REINPLACE_CMD} -e 's|/usr/local/netscape|${LOCALBASE}|g ; \ s|/usr/local/lib/netscape|${LOCALBASE}/lib|g' \ ${WRKSRC}/xpcom/*/SpecialSystemDirectory.cpp - @if [ -n "`${PKG_INFO} -xI '^bind[0-9]*-base-[0-9]'`" ]; then \ - ${ECHO_CMD} "${PKGNAME}: bind installed with PORT_REPLACES_BASE_BIND causes build problems."; \ - ${FALSE}; \ - fi # handles mozilla pis scripts. gecko-moz-pis-patch: ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.kde4.mk#4 (text+ko) ==== @@ -1,7 +1,7 @@ #-*- mode: Makefile; tab-width: 4; -*- # ex:ts=4 # -# $FreeBSD: ports/Mk/bsd.kde4.mk,v 1.85 2009/06/03 11:01:50 miwi Exp $ +# $FreeBSD: ports/Mk/bsd.kde4.mk,v 1.87 2009/08/10 11:47:29 makc Exp $ # .if !defined(_POSTMKINCLUDED) && !defined(Kde_Pre_Include) @@ -34,9 +34,12 @@ # kdelibs - The base set of KDE4 libraries # kdeprefix - If set, port will be installed into ${KDE4_PREFIX} instead of ${LOCALBASE} # pimlibs - KDE4 PIM libraries +# pimruntime - KDE4 PIM runtime services # runtime - More KDE applications # sharedmime - share-mime-info wrapper for KDE4 ports # workspace - More KDE applications (Plasma, kwin, etc.) +# kdeexp - experimental libraries (with non-stable ABI/API) +# oxygen - icon themes # # These read-only variables can be used in port Makefile: # @@ -49,7 +52,7 @@ # but this could be changed in a future. # -KDE4_VERSION= 4.2.4 +KDE4_VERSION= 4.3.0 KDE4_BRANCH?= stable # @@ -72,7 +75,7 @@ # KDE4 modules # _USE_KDE4_ALL= akonadi automoc4 kdebase kdehier kdelibs kdeprefix \ - pimlibs runtime sharedmime workspace + pimlibs pimruntime runtime sharedmime workspace kdeexp oxygen akonadi_LIB_DEPENDS= akonadiprotocolinternals.1:${PORTSDIR}/databases/akonadi @@ -88,6 +91,8 @@ pimlibs_LIB_DEPENDS= kpimutils.5:${PORTSDIR}/deskutils/kdepimlibs4 +pimruntime_LIB_DEPENDS= kdepim-copy.5:${PORTSDIR}/deskutils/kdepim4-runtime + runtime_BUILD_DEPENDS= ${KDE4_PREFIX}/bin/kdebugdialog:${PORTSDIR}/x11/kdebase4-runtime runtime_RUN_DEPENDS= ${KDE4_PREFIX}/bin/kdebugdialog:${PORTSDIR}/x11/kdebase4-runtime @@ -96,6 +101,10 @@ workspace_LIB_DEPENDS= kscreensaver.5:${PORTSDIR}/x11/kdebase4-workspace +kdeexp_LIB_DEPENDS= knotificationitem-1.1:${PORTSDIR}/x11/kdelibs4-experimental + +oxygen_RUN_DEPENDS= ${KDE4_PREFIX}/share/icons/oxygen/index.theme:${PORTSDIR}/x11-themes/kde4-icons-oxygen + # # Common build related stuff for kde4 ports. It's not intended for usage # in KDE4-dependent ports @@ -122,14 +131,15 @@ USE_LDCONFIG= yes USE_CMAKE= yes -# TODO: bsd.cmake.mk should be fixed first -# CMAKE_SOURCE_PATH= ${WRKSRC} -# CONFIGURE_WRKSRC?= ${WRKDIR}/${PORTNAME}-${PORTVERSION}/build -# BUILD_WRKSRC?= ${CONFIGURE_WRKSRC} -# INSTALL_WRKSRC?= ${CONFIGURE_WRKSRC} +CMAKE_SOURCE_PATH= ${WRKSRC} +CONFIGURE_WRKSRC?= ${BUILD_WRKSRC} +BUILD_WRKSRC?= ${WRKSRC}/build +INSTALL_WRKSRC?= ${BUILD_WRKSRC} + +post-extract: kde-create-builddir -WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}/build -CMAKE_SOURCE_PATH= .. +kde-create-builddir: + ${MKDIR} ${BUILD_WRKSRC} .endif # KDE4_BUILDENV ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.ldap.mk#3 (text+ko) ==== @@ -1,21 +1,19 @@ # -*- mode: Makefile; tab-width: 4; -*- # ex: ts=4 # -# $FreeBSD: ports/Mk/bsd.ldap.mk,v 1.4 2009/02/17 02:54:37 delphij Exp $ +# $FreeBSD: ports/Mk/bsd.ldap.mk,v 1.6 2009/07/20 08:13:11 delphij Exp $ # .if defined(_POSTMKINCLUDED) && !defined(Ldap_Post_Include) -Ldap_Post_Include= bsd.ldap.mk -Database_Include_MAINTAINER= ports@FreeBSD.org +Ldap_Post_Include= bsd.ldap.mk +Database_Include_MAINTAINER= ports@FreeBSD.org -# This file contains some routines to interact with different databases, such -# as mysql, postgresql and berkley DB. For including this file define macro -# USE_[LDAP], for example USE_OPENLDAP. Defining macro like USE_[LDAP]_VER or -# WANT_[LDAP]_VER will include this file too. +# For including this file define macro USE_OPENLDAP. Defining macro like +# USE_OPENLDAP_VER or WANT_OPENLDAP_VER will include this file too. # ## -# USE_OPENLDAP - Add OpenLDAP client dependency. +# USE_OPENLDAP - Add OpenLDAP client dependency. # If no version is given (by the maintainer via the port or # by the user via defined variable), try to find the # currently installed version. Fall back to default if @@ -37,7 +35,7 @@ DEFAULT_OPENLDAP_VER?= 24 # OpenLDAP client versions currently supported OPENLDAP23_LIBVER= 2.3.2 -OPENLDAP24_LIBVER= 2.4.6 +OPENLDAP24_LIBVER= 2.4.7 .if exists(${LOCALBASE}/bin/ldapwhoami) _OPENLDAP_VER!= ${LOCALBASE}/bin/ldapwhoami -VV 2>&1 | ${GREP} ldapwhoami | ${SED} -E 's/.*OpenLDAP: ldapwhoami (2)\.(3|4).*/\1\2/' ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.linux-apps.mk#4 (text+ko) ==== @@ -1,7 +1,7 @@ #-*- mode: Makefile; tab-width: 4; -*- # ex:ts=4 # -# $FreeBSD: ports/Mk/bsd.linux-apps.mk,v 1.24 2009/07/03 20:58:54 nox Exp $ +# $FreeBSD: ports/Mk/bsd.linux-apps.mk,v 1.29 2009/08/03 21:53:13 bsam Exp $ # # Please view me with 4 column tabs! @@ -70,7 +70,7 @@ _LINUX_APPS_ALL+= # 2.6.16 components -_LINUX_26_APPS= cyrus-sasl2 libidn libssh2 nspr nss openldap \ +_LINUX_26_APPS= cyrus-sasl2 dbusglib dbuslibs libidn libssh2 nspr nss openldap \ sqlite3 tcl84 tk84 _LINUX_APPS_ALL+= ${_LINUX_26_APPS} @@ -146,6 +146,19 @@ cyrus-sasl2_DETECT= ${cyrus-sasl2${LINUX_DIST_SUFFIX:S/-/_/}_FILE} cyrus-sasl2_PORT= ${PORTSDIR}/security/linux${LINUX_DIST_SUFFIX}-cyrus-sasl2 +# no dbusglib_FILE +# no dbusglib_f8_FILE +dbusglib_f10_FILE= ${LINUXBASE}/usr/lib/libdbus-glib-1.so.2 +dbusglib_DETECT= ${dbusglib${LINUX_DIST_SUFFIX:S/-/_/}_FILE} +dbusglib_PORT= ${PORTSDIR}/devel/linux${LINUX_DIST_SUFFIX}-dbus-glib +dbusglib_DEPENDS= dbuslibs expat + +# no dbuslibs_FILE +# no dbuslibs_f8_FILE +dbuslibs_f10_FILE= ${LINUXBASE}/lib/libdbus-1.so.3 +dbuslibs_DETECT= ${dbuslibs${LINUX_DIST_SUFFIX:S/-/_/}_FILE} +dbuslibs_PORT= ${PORTSDIR}/devel/linux${LINUX_DIST_SUFFIX}-dbus-libs + dri_FILE= ${LINUXBASE}/usr/X11R6/lib/libGL.so.1 dri_f8_FILE= ${LINUXBASE}/usr/lib/libGL.so.1 dri_f10_FILE= ${LINUXBASE}/usr/lib/libGL.so.1.2 @@ -426,11 +439,15 @@ sqlite3_PORT= ${PORTSDIR}/databases/linux${LINUX_DIST_SUFFIX}-sqlite3 # no tcl84_FILE -tcl84_f8_FILE= ${LINUXBASE}/usr/lib/tcl8.4 +tcl84_f8_FILE= ${LINUXBASE}/usr/lib/libtcl8.4.so # XXX: tcl85!!! tcl84_f10_FILE= ${LINUXBASE}/usr/lib/libtcl8.5.so tcl84_DETECT= ${tcl84${LINUX_DIST_SUFFIX:S/-/_/}_FILE} +. if ${LINUX_DIST_SUFFIX} == "-f8" tcl84_PORT= ${PORTSDIR}/lang/linux${LINUX_DIST_SUFFIX}-tcl84 +. else +tcl84_PORT= ${PORTSDIR}/lang/linux${LINUX_DIST_SUFFIX}-tcl85 +. endif tiff_FILE= ${LINUXBASE}/usr/lib/libtiff.so.3.7.1 tiff_f8_FILE= ${LINUXBASE}/usr/lib/libtiff.so.3.8.2 @@ -444,7 +461,11 @@ # XXX: tk85!!! tk84_f10_FILE= ${LINUXBASE}/usr/lib/libtk8.5.so tk84_DETECT= ${tk84${LINUX_DIST_SUFFIX:S/-/_/}_FILE} +. if ${LINUX_DIST_SUFFIX} == "-f8" tk84_PORT= ${PORTSDIR}/x11-toolkits/linux${LINUX_DIST_SUFFIX}-tk84 +. else +tk84_PORT= ${PORTSDIR}/x11-toolkits/linux${LINUX_DIST_SUFFIX}-tk85 +. endif tk84_DEPENDS= xorglibs xorglibs_FILE= ${LINUXBASE}/usr/X11R6/lib/libXrandr.so.2.0 @@ -497,7 +518,7 @@ . if defined(${component}${LINUX_DIST_SUFFIX:S/-/_/}_FILE) IGNORE= bsd.linux-apps.mk test failed: The component ${component} is empty for LINUX_DIST_SUFFIX=${LINUX_DIST_SUFFIX} (the corresponding variable ${component}${LINUX_DIST_SUFFIX:S/-/_/}_FILE is empty) . else -IGNORE= bsd.linux-apps.mk test failed: The component ${component} is not defined for LINUX_DIST_SUFFIX=${LINUX_DIST_SUFFIX} (the corresponding variable ${component}${LINUX_DIST_SUFFIX:S/-/_/}_FILE is not defined) +IGNORE= bsd.linux-apps.mk test failed: The component ${component} is not defined for LINUX_DIST_SUFFIX=${LINUX_DIST_SUFFIX} (the corresponding variable ${component}${LINUX_DIST_SUFFIX:S/-/_/}_FILE is not defined). This usually means that the current port should be used with non default linux base and/or infrastructure port(s) . endif . endif . endfor ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.octave.mk#2 (text+ko) ==== @@ -1,7 +1,7 @@ #-*- mode: makefile; tab-width: 4; -*- # ex:ts=4 # -# $FreeBSD: ports/Mk/bsd.octave.mk,v 1.3 2009/04/05 20:50:36 dhn Exp $ +# $FreeBSD: ports/Mk/bsd.octave.mk,v 1.4 2009/08/14 11:06:55 miwi Exp $ # # bsd.octave.mk - Octave related macro # Common code to install octave-forge packages. @@ -29,6 +29,8 @@ MAKE_ENV+= PACKAGE=${WRKDIR}/${DISTNAME}.tar.gz +BROKEN= does not compile + do-install: ${MKDIR} ${TARBALLS_DIR} ${INSTALL_DATA} ${WRKDIR}/${DISTNAME}.tar.gz ${TARBALLS_DIR}/. ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.openssl.mk#4 (text+ko) ==== @@ -2,7 +2,7 @@ # Date created: 31 May 2002 # Whom: dinoex # -# $FreeBSD: ports/Mk/bsd.openssl.mk,v 1.43 2009/05/07 08:19:02 dinoex Exp $ +# $FreeBSD: ports/Mk/bsd.openssl.mk,v 1.44 2009/07/21 17:51:43 dinoex Exp $ # # Use of 'USE_OPENSSL=yes' includes this Makefile after bsd.ports.pre.mk # @@ -114,11 +114,19 @@ .else # PKG_DBDIR was not found, default OPENSSL_PORT?= security/openssl +.if ( ${OSVERSION} >= 800105 ) +OPENSSL_SHLIBVER?= 6 +.else OPENSSL_SHLIBVER?= 5 .endif .endif +.endif OPENSSL_PORT?= security/openssl +.if ( ${OSVERSION} >= 800105 ) +OPENSSL_SHLIBVER?= 6 +.else OPENSSL_SHLIBVER?= 5 +.endif OPENSSLDIR= ${OPENSSLBASE}/openssl BUILD_DEPENDS+= ${LOCALBASE}/lib/libcrypto.so.${OPENSSL_SHLIBVER}:${PORTSDIR}/${OPENSSL_PORT} ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.port.mk#9 (text+ko) ==== @@ -1,7 +1,7 @@ #-*- mode: makefile; tab-width: 4; -*- # ex:ts=4 # -# $FreeBSD: ports/Mk/bsd.port.mk,v 1.624 2009/06/26 17:03:48 bsam Exp $ +# $FreeBSD: ports/Mk/bsd.port.mk,v 1.625 2009/08/03 15:36:58 miwi Exp $ # $NetBSD: $ # # bsd.port.mk - 940820 Jordan K. Hubbard. @@ -2377,20 +2377,6 @@ PKGORIGIN?= ${PKGCATEGORY}/${PORTDIRNAME} -.if exists(${LOCALBASE}/sbin/pkg_info) -PKG_CMD?= ${LOCALBASE}/sbin/pkg_create -PKG_ADD?= ${LOCALBASE}/sbin/pkg_add -PKG_DELETE?= ${LOCALBASE}/sbin/pkg_delete -PKG_INFO?= ${LOCALBASE}/sbin/pkg_info -PKG_VERSION?= ${LOCALBASE}/sbin/pkg_version -.else -PKG_CMD?= /usr/sbin/pkg_create -PKG_ADD?= /usr/sbin/pkg_add -PKG_DELETE?= /usr/sbin/pkg_delete -PKG_INFO?= /usr/sbin/pkg_info -PKG_VERSION?= /usr/sbin/pkg_version -.endif - .if !defined(PKG_ARGS) PKG_ARGS= -v -c -${COMMENT:Q} -d ${DESCR} -f ${TMPPLIST} -p ${PREFIX} -P "`cd ${.CURDIR} && ${MAKE} actual-package-depends | ${GREP} -v -E ${PKG_IGNORE_DEPENDS} | ${SORT} -u -t : -k 2`" ${EXTRA_PKG_ARGS} $${_LATE_PKG_ARGS} .if !defined(NO_MTREE) ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.qt.mk#4 (text+ko) ==== @@ -21,11 +21,12 @@ .if defined(QT_DIST) #CONFLICTS+= Currently there are no conflicts \o/ -CONFIGURE_ARGS+=-fast ${CUPS} -platform ${QMAKESPEC} \ +CONFIGURE_ARGS+=-fast -platform ${QMAKESPEC} \ -L${PREFIX}/${QT_LIBDIR_REL} \ -qt-gif -system-libjpeg -system-libpng \ -system-libmng -system-libtiff -system-zlib \ - -confirm-license \ + -opensource -confirm-license \ + -no-pch \ -prefix ${PREFIX} \ -bindir ${PREFIX}/bin \ -libdir ${PREFIX}/${QT_LIBDIR_REL} \ @@ -42,9 +43,9 @@ CONFIGURE_ARGS+=-no-mmx -no-3dnow -no-sse -no-sse2 .endif #defined(PACKAGE_BUILDING) -.if defined(PORTNAME) && ${PORTNAME} != "xmlpatterns" -CONFIGURE_ARGS+=-no-exceptions -.endif +# .if defined(PORTNAME) && ${PORTNAME} != "xmlpatterns" +# CONFIGURE_ARGS+=-no-exceptions +# .endif .if defined(WANT_QT_DEBUG) CONFIGURE_ARGS+=-debug @@ -94,14 +95,14 @@ # QT4 version # Don't forget to update ${PORTSDIR}/devel/qt4/files/configure ! # -QT4_VERSION?= 4.4.3 +QT4_VERSION?= 4.5.2 _QT_COMPONENTS_ALL= accessible assistant assistant-adp assistantclient \ clucene codecs-cn codecs-jp codecs-kr codecs-tw corelib \ dbus designer doc help help-tools gui iconengines imageformats \ inputmethods linguist l10n makeqpf moc network opengl \ pixeltool porting phonon phonon-gst qdbusviewer \ - qmake qt3support qtconfig qtestlib qvfb rcc script \ + qmake qt3support qtconfig qtestlib qvfb rcc script scripttools \ sql svg uic uic3 webkit xml xmlpatterns xmlpatterns-tool accessible_DEPENDS= accessibility/qt4-accessible @@ -142,6 +143,7 @@ qvfb_DEPENDS= devel/qt4-qvfb rcc_DEPENDS= devel/qt4-rcc script_DEPENDS= devel/qt4-script +scripttools_DEPENDS= devel/qt4-scripttools sql_DEPENDS= databases/qt4-sql svg_DEPENDS= graphics/qt4-svg uic_DEPENDS= devel/qt4-uic @@ -151,104 +153,12 @@ xmlpatterns_DEPENDS= textproc/qt4-xmlpatterns xmlpatterns-tool_DEPENDS= textproc/qt4-xmlpatterns-tool -accessible_build_DEPENDS= ${accessible_DEPENDS} -assistant_build_DEPENDS= ${assistant_DEPENDS} -assistant-adp_build_DEPENDS= ${assistant-adp_DEPENDS} -assistantclient_build_DEPENDS= ${assistantclient_DEPENDS} -assistantclient_build_NAME= ${assistantclient_NAME} -clucene_build_DEPENDS= ${clucene_DEPENDS} -codecs-cn_build_DEPENDS= ${codecs-cn_DEPENDS} -codecs-jp_build_DEPENDS= ${codecs-jp_DEPENDS} -codecs-kr_build_DEPENDS= ${codecs-kr_DEPENDS} -codecs-tw_build_DEPENDS= ${codecs-tw_DEPENDS} -corelib_build_DEPENDS= ${corelib_DEPENDS} -dbus_build_DEPENDS= ${dbus_DEPENDS} -designer_build_DEPENDS= ${designer_DEPENDS} -doc_build_DEPENDS= ${doc_DEPENDS} -gui_build_DEPENDS= ${gui_DEPENDS} -help_build_DEPENDS= ${help_DEPENDS} -help-tools_build_DEPENDS= ${help-tools_DEPENDS} -iconengines_build_DEPENDS= ${iconengines_DEPENDS} -imageformats_build_DEPENDS= ${imageformats_DEPENDS} -inputmethods_build_DEPENDS= ${inputmethods_DEPENDS} -linguist_build_DEPENDS= ${linguist_DEPENDS} -l10n_build_DEPENDS= ${l10n_DEPENDS} -makeqpf_build_DEPENDS= ${makeqpf_DEPENDS} -moc_build_DEPENDS= ${moc_DEPENDS} -network_build_DEPENDS= ${network_DEPENDS} -opengl_build_DEPENDS= ${opengl_DEPENDS} -pixeltool_build_DEPENDS= ${pixeltool_DEPENDS} -phonon_build_DEPENDS= ${phonon_DEPENDS} -phonon-gst_build_DEPENDS= ${phonon-gst_DEPENDS} -porting_build_DEPENDS= ${porting_DEPENDS} -qdbusviewer_build_DEPENDS= ${qdbusviewer_DEPENDS} -qmake_build_DEPENDS= ${qmake_DEPENDS} -qt3support_build_DEPENDS= ${qt3support_DEPENDS} -qtconfig_build_DEPENDS= ${qtconfig_DEPENDS} -qtestlib_build_DEPENDS= ${qtestlib_DEPENDS} -qvfb_build_DEPENDS= ${qvfb_DEPENDS} -rcc_build_DEPENDS= ${rcc_DEPENDS} -script_build_DEPENDS= ${script_DEPENDS} -sql_build_DEPENDS= ${sql_DEPENDS} -svg_build_DEPENDS= ${svg_DEPENDS} -uic_build_DEPENDS= ${uic_DEPENDS} -uic3_build_DEPENDS= ${uic3_DEPENDS} -webkit_build_DEPENDS= ${webkit_DEPENDS} -xml_build_DEPENDS= ${xml_DEPENDS} -xmlpatterns_build_DEPENDS= ${xmlpatterns_DEPENDS} -xmlpatterns-tool_build_DEPENDS= ${xmlpatterns-tool_DEPENDS} - -accessible_run_DEPENDS= ${accessible_DEPENDS} -assistant_run_DEPENDS= ${assistant_DEPENDS} -assistant-adp_run_DEPENDS= ${assistant-adp_DEPENDS} -assistantclient_run_DEPENDS= ${assistantclient_DEPENDS} -assistantclient_run_NAME= ${assistantclient_NAME} -clucene_run_DEPENDS= ${clucene_DEPENDS} -codecs-cn_run_DEPENDS= ${codecs-cn_DEPENDS} -codecs-jp_run_DEPENDS= ${codecs-jp_DEPENDS} -codecs-kr_run_DEPENDS= ${codecs-kr_DEPENDS} -codecs-tw_run_DEPENDS= ${codecs-tw_DEPENDS} -corelib_run_DEPENDS= ${corelib_DEPENDS} -dbus_run_DEPENDS= ${dbus_DEPENDS} -designer_run_DEPENDS= ${designer_DEPENDS} -doc_run_DEPENDS= ${doc_DEPENDS} -gui_run_DEPENDS= ${gui_DEPENDS} -help_run_DEPENDS= ${help_DEPENDS} -help-tools_run_DEPENDS= ${help-tools_DEPENDS} -iconengines_run_DEPENDS= ${iconengines_DEPENDS} -imageformats_run_DEPENDS= ${imageformats_DEPENDS} -inputmethods_run_DEPENDS= ${inputmethods_DEPENDS} -linguist_run_DEPENDS= ${linguist_DEPENDS} -l10n_run_DEPENDS= ${l10n_DEPENDS} -makeqpf_run_DEPENDS= ${makeqpf_DEPENDS} -moc_run_DEPENDS= ${moc_DEPENDS} -network_run_DEPENDS= ${network_DEPENDS} -opengl_run_DEPENDS= ${opengl_DEPENDS} -pixeltool_run_DEPENDS= ${pixeltool_DEPENDS} -phonon_run_DEPENDS= ${phonon_DEPENDS} -phonon-gst_run_DEPENDS= ${phonon-gst_DEPENDS} -porting_run_DEPENDS= ${porting_DEPENDS} -qdbusviewer_run_DEPENDS= ${qdbusviewer_DEPENDS} -qmake_run_DEPENDS= ${qmake_DEPENDS} -qt3support_run_DEPENDS= ${qt3support_DEPENDS} -qtconfig_run_DEPENDS= ${qtconfig_DEPENDS} -qtestlib_run_DEPENDS= ${qtestlib_DEPENDS} -qvfb_run_DEPENDS= ${qvfb_DEPENDS} -rcc_run_DEPENDS= ${rcc_DEPENDS} -script_run_DEPENDS= ${script_DEPENDS} -sql_run_DEPENDS= ${sql_DEPENDS} -svg_run_DEPENDS= ${svg_DEPENDS} -uic_run_DEPENDS= ${uic_DEPENDS} -uic3_run_DEPENDS= ${uic3_DEPENDS} -webkit_run_DEPENDS= ${webkit_DEPENDS} -xml_run_DEPENDS= ${xml_DEPENDS} -xmlpatterns_run_DEPENDS= ${xmlpatterns_DEPENDS} -xmlpatterns-tool_run_DEPENDS= ${xmlpatterns-tool_DEPENDS} - .if defined(_POSTMKINCLUDED) && !defined(Qt_Post_Include) Qt_Post_Include= bsd.qt.mk .for component in ${_QT_COMPONENTS_ALL} +${component}_build_DEPENDS= ${${component}_DEPENDS} +${component}_run_DEPENDS= ${${component}_DEPENDS} _QT_COMPONENTS_SUFFIXED+=${component} ${component}_build ${component}_run .endfor ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.ruby.mk#7 (text+ko) ==== @@ -3,7 +3,7 @@ # # Created by: Akinori MUSHA # -# $FreeBSD: ports/Mk/bsd.ruby.mk,v 1.185 2009/06/19 12:42:44 stas Exp $ +# $FreeBSD: ports/Mk/bsd.ruby.mk,v 1.186 2009/07/19 16:43:37 stas Exp $ # .if !defined(Ruby_Include) @@ -170,7 +170,7 @@ # Ruby 1.8 # RUBY_RELVERSION= 1.8.7 -RUBY_PORTREVISION= 3 +RUBY_PORTREVISION= 4 RUBY_PORTEPOCH= 1 RUBY_PATCHLEVEL= 160 ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.scons.mk#3 (text+ko) ==== @@ -1,7 +1,7 @@ #-*- mode: Makefile; tab-width: 4; -*- # ex:ts=4 # -# $FreeBSD: ports/Mk/bsd.scons.mk,v 1.11 2009/05/15 12:01:39 pav Exp $ +# $FreeBSD: ports/Mk/bsd.scons.mk,v 1.13 2009/08/14 11:34:57 miwi Exp $ # # bsd.scons.mk - Python-based SCons build system interface. # Author: Alexander Botero-Lowry @@ -9,7 +9,7 @@ # Please view me with 4 column tabs! # Please make sure all changes to this file are passed through the maintainer. -SCONS_MAINTAINER= alexbl@FreeBSD.org +SCONS_MAINTAINER= python@FreeBSD.org # # SCONS_BIN is the location where the scons port installs the scons @@ -45,11 +45,11 @@ # same for any scons port to scons. Things like CCFLAGS, and LINKFLAGS # go here. # -# SCONS_ARG is where you pass port specific scons flags to the scons -# enviornment. +# SCONS_ARGS is where you pass port specific scons flags to the scons +# environment. # # SCONS_BUILDENV is where you pass variables you want to be in the -# System Enviornment instead of the SCons Enviornment. +# System Environment instead of the SCons Environment. # # SCONS_TARGET is the same as MAKE_TARGET it is passed as the last # argument to scons. ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.sdl.mk#2 (text+ko) ==== @@ -29,7 +29,7 @@ # # -# $FreeBSD: ports/Mk/bsd.sdl.mk,v 1.14 2008/04/28 23:20:54 edwin Exp $ +# $FreeBSD: ports/Mk/bsd.sdl.mk,v 1.15 2009/08/02 08:35:30 mva Exp $ # SDL_Include_MAINTAINER= edwin@FreeBSD.org @@ -53,7 +53,7 @@ _LIB_console= SDL_console-2.1 _REQUIRES_console= sdl -_VERSION_gfx= 0 +_VERSION_gfx= 18 _SUBDIR_gfx= graphics _REQUIRES_gfx= sdl ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.sites.mk#6 (text+ko) ==== @@ -20,7 +20,7 @@ # # Note: all entries should terminate with a slash. # -# $FreeBSD: ports/Mk/bsd.sites.mk,v 1.476 2009/06/10 16:08:34 amdmi3 Exp $ +# $FreeBSD: ports/Mk/bsd.sites.mk,v 1.479 2009/08/12 19:46:41 erwin Exp $ # # Where to put distfiles that don't have any other master site @@ -921,10 +921,17 @@ .if !defined(IGNORE_MASTER_SITE_PACKETSTORM) MASTER_SITE_PACKETSTORM+= \ http://packetstormsecurity.nl/%SUBDIR%/ \ - http://packetstorm.troop218.org/%SUBDIR%/ \ http://packetstorm.linuxsecurity.com/%SUBDIR%/ \ - http://packetstorm.digital-network.net/%SUBDIR%/ \ - http://packetstorm.icx.fr/%SUBDIR%/ + http://packetstorm.setnine.com/%SUBDIR%/ \ + http://packetstorm.austin2600.net/%SUBDIR%/ \ + http://packetstorm.foofus.com/%SUBDIR%/ \ + http://packetstorm.codar.com.br/%SUBDIR%/ \ + http://packetstorm.rlz.cl/%SUBDIR%/ \ + http://packetstorm.wowhacker.com/%SUBDIR%/ \ + http://packetstorm.offensive-security.com/%SUBDIR%/ \ + http://packetstorm.igor.onlinedirect.bg/%SUBDIR%/ \ + http://packetstorm.unixteacher.org/%SUBDIR%/ \ + http://packetstorm.orion-hosting.co.uk/%SUBDIR%/ .endif .if !defined(IGNORE_MASTER_SITE_PERL_CPAN) @@ -1165,12 +1172,19 @@ .endif .if !defined(IGNORE_MASTER_SITE_SOURCEFORGE) -.for mirror in superb-east nchc kent easynews ufpr mesh heanet # garr +.for mirror in garr superb-east nchc kent easynews ufpr mesh heanet MASTER_SITE_SOURCEFORGE+= \ http://${mirror}.dl.sourceforge.net/sourceforge/%SUBDIR%/ .endfor .endif +.if !defined(IGNORE_MASTER_SITE_SOURCEFORGE_PROJECT) +.for mirror in garr superb-east nchc kent easynews ufpr mesh heanet +MASTER_SITE_SOURCEFORGE_PROJECT+= \ + http://${mirror}.dl.sourceforge.net/project/%SUBDIR%/ +.endfor +.endif + # official sf.net mirrors that don't mirror all projects, check # http://prdownloads.sourceforge.net/%SUBDIR%/ .if !defined(IGNORE_MASTER_SITE_SOURCEFORGE_EXTENDED) @@ -1486,7 +1500,7 @@ # Macro magic -MASTER_SITES_ABBREVS= CPAN:PERL_CPAN SF:SOURCEFORGE SFE:SOURCEFORGE_EXTENDED \ +MASTER_SITES_ABBREVS= CPAN:PERL_CPAN SF:SOURCEFORGE SFP:SOURCEFORGE_PROJECT SFE:SOURCEFORGE_EXTENDED \ SFJP:SOURCEFORGE_JP RF:RUBYFORGE MASTER_SITES_SUBDIRS= \ APACHE_JAKARTA:${PORTNAME:S,-,/,}/source \ @@ -1507,6 +1521,7 @@ RUBY_GNOME:${RUBY_GNOME_MASTER_SITE_SUBDIR} \ SAVANNAH:${PORTNAME:L} \ SOURCEFORGE:${PORTNAME:L} \ + SOURCEFORGE_PROJECT:${PORTNAME:L} \ SOURCEFORGE_EXTENDED:${PORTNAME:L} \ RUBYFORGE:${PORTNAME:L} ==== //depot/projects/soc2008/alepulver-portslicense/ports/UIDs#6 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: ports/UIDs,v 1.85 2009/06/19 17:16:01 mezz Exp $ +# $FreeBSD: ports/UIDs,v 1.89 2009/08/05 01:38:44 vanilla Exp $ # Please keep this file sorted by UID! smmsp:*:25:25::0:0:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin bind:*:53:53::0:0:Bind Sandbox:/:/usr/sbin/nologin @@ -33,7 +33,7 @@ vpopmail:*:89:89::0:0:VPop Mail User:/usr/local/vpopmail:/nonexistent firebird:*:90:90::0:0:Firebird Database Administrator:/var/db/firebird:/bin/sh mailman:*:91:91::0:0:Mailman User:/usr/local/mailman:/usr/sbin/nologin -gdm:*:92:92::0:0:GNOME Display Manager:/usr/local/etc/gdm/home:/sbin/nologin +gdm:*:92:92::0:0:GNOME Display Manager:/usr/local/etc/gdm/home:/usr/sbin/nologin jabber:*:93:93::0:0:Jabber Daemon:/nonexistent:/nonexistent p4admin:*:94:94::0:0:Perforce admin:/usr/local/perforce:/usr/sbin/nologin interch:*:95:95::0:0:Interchange user:/usr/local/interchange:/usr/sbin/nologin @@ -94,6 +94,7 @@ postgrey:*:225:225::0:0:Postgrey Owner:/nonexistent:/usr/sbin/nologin aprsd:*:240:240::0:0:aprsd:/nonexistent:/bin/sh tnc:*:241:241::0:0:aprsd:/nonexistent:/bin/sh +prosody:*:242:242::0:0:Prosody Jabber Server:/nonexistent:/usr/sbin/nologin fcron:*:247:247::0:0:fcron pseudo-user:/nonexistent:/usr/sbin/nologin _tor:*:256:256::0:0:Tor anonymising router:/var/db/tor:/bin/sh _dns-proxy-tor:*:257:257::0:0:dns-proxy-tor user:/nonexistent:/usr/sbin/nologin @@ -110,7 +111,7 @@ prelude:*:281:281::0:0:Prelude user:/nonexistent:/usr/sbin/nologin _sphinx:*:312:312::0:0:Sphinxsearch Owner:/nonexistent:/usr/sbin/nologin dkfilter:*:325:325::0:0:DK Filter Owner:/nonexistent:/usr/sbin/nologin -_pma:*:336:80::0:0:phpMyAdmin Owner:/nonexistent:/sbin/nologin +_pma:*:336:80::0:0:phpMyAdmin Owner:/nonexistent:/usr/sbin/nologin wildfire:*:340:340::0:0:Wildfire Daemon:/nonexistent:/usr/sbin/nologin stunnel:*:341:341::0:0:Stunnel Daemon:/nonexistent:/usr/sbin/nologin openfire:*:342:342::0:0:Openfire IM Daemon:/nonexistent:/usr/sbin/nologin @@ -123,7 +124,8 @@ _bbstored:*:505:505::0:0:BoxBackup Store Daemon:/nonexistent:/bin/sh nullmail:*:522:522::0:0:Nullmailer Mail System:/var/spool/nullmailer:/bin/sh dkimproxy:*:525:525::0:0:DKIM Proxy Owner:/nonexistent:/usr/sbin/nologin -pgbouncer:*:534:534::0:0:Pgbouncer Daemon:/nonexistent:/sbin/nologin +pgbouncer:*:534:534::0:0:Pgbouncer Daemon:/nonexistent:/usr/sbin/nologin +redis:*:535:535::0:0:Redis Daemon:/nonexistent:/usr/sbin/nologin ejabberd:*:543:543::0:0:ejabberd pseudo user:/var/spool/ejabberd:/bin/sh qtss:*:554:554::0:0:Darwin Streaming Server:/nonexistent:/usr/sbin/nologin ircdru:*:555:555::0:0:Russian hybrid IRC server:/nonexistent:/bin/sh @@ -138,7 +140,7 @@ bnetd:*:700:700::0:0:Bnetd user:/nonexistent:/usr/sbin/nologin bopm:*:717:717::0:0:Blitzed Open Proxy Monitor:/nonexistent:/bin/sh openxpki:*:777:777::0:0:OpenXPKI Owner:/nonexistent:/usr/sbin/nologin -puppet:*:814:814::0:0:Puppet Daemon:/nonexistent:/sbin/nologin +puppet:*:814:814::0:0:Puppet Daemon:/nonexistent:/usr/sbin/nologin openacs:*:820:820::0:0:OpenACS Daemon User:/nonexistent:/usr/sbin/nologin dotlrn:*:821:821::0:0:.LRN Daemon User:/nonexistent:/usr/sbin/nologin netdisco:*:840:840::0:0:netdisco daemon:/nonexistent:/usr/sbin/nologin @@ -147,10 +149,10 @@ iserv:*:911:911::0:0:Iserv Daemon:/nonexistent:/usr/sbin/nologin _sj3:*:912:912::0:0:SJ3 Daemon:/nonexistent:/usr/sbin/nologin _relayd:*:913:913::0:0:Relay Daemon:/var/empty:/usr/sbin/nologin -bitlbee:*:914:914::0:0:Bitlbee pseudo-user:/nonexistent:/sbin/nologin +bitlbee:*:914:914::0:0:Bitlbee pseudo-user:/nonexistent:/usr/sbin/nologin logcheck:*:915:915::0:0:Logcheck system account:/var/lib/logcheck:/usr/local/bin/bash -_prayer:*:917:917:daemon:0:0:Prayer Account:/nonexistent:/sbin/nologin -nefu:*:918:918::0:0:Nefu daemon:/var/db/nefu:/sbin/nologin +_prayer:*:917:917:daemon:0:0:Prayer Account:/nonexistent:/usr/sbin/nologin +nefu:*:918:918::0:0:Nefu daemon:/var/db/nefu:/usr/sbin/nologin couchdb:*:919:919:daemon:0:0:CouchDB Account:/var/empty:/usr/sbin/nologin -vboxusers:*:920:920::0:0:Virtualbox user:/nonexistent:/sbin/nologin +vboxusers:*:920:920::0:0:Virtualbox user:/nonexistent:/usr/sbin/nologin transmission:*:921:921::0:0:Transmission Daemon User:/usr/local/etc/transmission/home:/usr/sbin/nologin From owner-p4-projects@FreeBSD.ORG Sat Aug 15 03:13:20 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B28BA106568E; Sat, 15 Aug 2009 03:13:19 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6AE8B106568B for ; Sat, 15 Aug 2009 03:13:19 +0000 (UTC) (envelope-from anchie@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 405C48FC3D for ; Sat, 15 Aug 2009 03:13:19 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7F3DJDU086051 for ; Sat, 15 Aug 2009 03:13:19 GMT (envelope-from anchie@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7F3DJOU086049 for perforce@freebsd.org; Sat, 15 Aug 2009 03:13:19 GMT (envelope-from anchie@FreeBSD.org) Date: Sat, 15 Aug 2009 03:13:19 GMT Message-Id: <200908150313.n7F3DJOU086049@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to anchie@FreeBSD.org using -f From: Ana Kukec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167350 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 03:13:20 -0000 http://perforce.freebsd.org/chv.cgi?CH=167350 Change 167350 by anchie@anchie_desnimis on 2009/08/15 03:13:00 Use rtm->rtm_seq field instead of ifan->ifan_what. Affected files ... .. //depot/projects/soc2009/anchie_send/send_0.2/sendd/net.c#23 edit Differences ... ==== //depot/projects/soc2009/anchie_send/send_0.2/sendd/net.c#23 (text+ko) ==== @@ -279,8 +279,11 @@ DBG(&dbg_snd, "RTM_IFANNOUNCE"); break; case RTM_SND: +#if 0 ifan = sbuff_data(b); switch (ifan->ifan_what) { +#endif + switch (rtm->rtm_seq) { case RTM_SND_IN: applog(LOG_ERR, "RTM_SND_IN"); /* n = RTM hdr + SEND message */ From owner-p4-projects@FreeBSD.ORG Sat Aug 15 07:31:01 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1FA65106568F; Sat, 15 Aug 2009 07:31:01 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CB8D7106568D for ; Sat, 15 Aug 2009 07:31:00 +0000 (UTC) (envelope-from fangwang@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id BAF228FC5B for ; Sat, 15 Aug 2009 07:31:00 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7F7V0B9018672 for ; Sat, 15 Aug 2009 07:31:00 GMT (envelope-from fangwang@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7F7V0KR018670 for perforce@freebsd.org; Sat, 15 Aug 2009 07:31:00 GMT (envelope-from fangwang@FreeBSD.org) Date: Sat, 15 Aug 2009 07:31:00 GMT Message-Id: <200908150731.n7F7V0KR018670@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fangwang@FreeBSD.org using -f From: Fang Wang To: Perforce Change Reviews Cc: Subject: PERFORCE change 167351 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 07:31:01 -0000 http://perforce.freebsd.org/chv.cgi?CH=167351 Change 167351 by fangwang@fangwang_utobsd on 2009/08/15 07:30:22 Remove debug information. Affected files ... .. //depot/projects/soc2009/tcputo/src/contrib/tcpdump/print-tcp.c#4 edit Differences ... ==== //depot/projects/soc2009/tcputo/src/contrib/tcpdump/print-tcp.c#4 (text+ko) ==== @@ -618,7 +618,6 @@ datalen = 2; LENCHECK(datalen); uint utoval = EXTRACT_16BITS(cp); - (void)printf("0x%x", utoval); if (utoval & 0x0001) utoval = (utoval >> 1) * 60; else From owner-p4-projects@FreeBSD.ORG Sat Aug 15 07:49:21 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 94784106568D; Sat, 15 Aug 2009 07:49:21 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 40B1B106568B for ; Sat, 15 Aug 2009 07:49:21 +0000 (UTC) (envelope-from fangwang@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id EEF9A8FC4D for ; Sat, 15 Aug 2009 07:49:20 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7F7nKu5020021 for ; Sat, 15 Aug 2009 07:49:20 GMT (envelope-from fangwang@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7F7nK6u020019 for perforce@freebsd.org; Sat, 15 Aug 2009 07:49:20 GMT (envelope-from fangwang@FreeBSD.org) Date: Sat, 15 Aug 2009 07:49:20 GMT Message-Id: <200908150749.n7F7nK6u020019@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fangwang@FreeBSD.org using -f From: Fang Wang To: Perforce Change Reviews Cc: Subject: PERFORCE change 167352 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 07:49:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=167352 Change 167352 by fangwang@fangwang_utobsd on 2009/08/15 07:48:56 Fix style. Fix bug in decrease timeout value. Affected files ... .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_timer.c#8 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_timer.h#7 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_var.h#14 edit Differences ... ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_timer.c#8 (text+ko) ==== @@ -494,6 +494,7 @@ if (tp->t_rxtshift == 0) { TCPT_RESOLVE_UTO(tp); tp->t_uto_left = tp->t_uto_impl / hz; + tp->t_uto_left -= tcp_backoff[0]; } /* * Retransmission timer went off. Message has not @@ -533,18 +534,26 @@ if (tp->t_state == TCPS_SYN_SENT) rexmt = TCP_REXMTVAL(tp) * tcp_syn_backoff[tp->t_rxtshift]; else - if ((tp->uto_flags & TCPUTO_IMPL) == 0) + if ((tp->uto_flags & TCPUTO_IMPL) == 0) { rexmt = TCP_REXMTVAL(tp) * tcp_backoff[tp->t_rxtshift]; - else { - int rxtshift; + TCPT_RANGESET(tp->t_rxtcur, rexmt, + tp->t_rttmin, TCPTV_REXMTMAX); + } else { + int rxtshift, interval; rxtshift = min(TCP_MAXRXTSHIFT, tp->t_rxtshift); - tp->t_uto_left -= min(tp->t_uto_left, - min(TCP_REXMTMAX, tcp_backoff[rxtshift])); + interval = min(TCP_REXMTMAX, tcp_backoff[rxtshift]); rexmt = TCP_REXMTVAL(tp) * tcp_backoff[rxtshift]; + TCPT_RANGESET(tp->t_rxtcur, rexmt, + tp->t_rttmin, TCPTV_REXMTMAX); + if (tp->t_uto_left < interval) { + tp->t_rxtcur = (tp->t_rxtcur * tp->t_uto_left) / interval; + /* Prevent t_rxtcur to be zero */ + TCPT_RANGESET(tp->t_rxtcur, tp->t_rxtcur, + tp->t_rttmin, TCPTV_REXMTMAX); + } + tp->t_uto_left -= min(tp->t_uto_left, interval); } - TCPT_RANGESET(tp->t_rxtcur, rexmt, - tp->t_rttmin, TCPTV_REXMTMAX); /* * Disable rfc1323 if we havn't got any response to * our third SYN to work-around some broken terminal servers ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_timer.h#7 (text+ko) ==== @@ -93,7 +93,7 @@ #define TCPTV_UTO_MIN ( 120*hz) /* min user timeout */ #define TCPTV_UTO_MAX (1020*hz) /* max user timeout */ -#define TCPTV_UTO_DEFAULT ( 447*hz) /* default user timeout */ +#define TCPTV_UTO_DEFAULT ( 511*hz) /* default user timeout */ /* * Minimum retransmit timer is 3 ticks, for algorithmic stability. ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_var.h#14 (text+ko) ==== @@ -254,19 +254,19 @@ /* * Resolve user timeout value(ticks). */ -#define TCPT_RESOLVE_UTO(tp) do { \ - if ((tp)->uto_flags & TCPUTO_ENABLE && \ - (tp)->uto_flags & TCPUTO_RCVD && \ - (tp)->uto_flags & TCPUTO_CHANGEABLE) { \ - (tp)->t_uto_impl = (tp)->rcv_uto >> 1; \ - if ((tp)->rcv_uto & 1) \ - (tp)->t_uto_impl *= 60; \ - (tp)->t_uto_impl *= hz; \ - (tp)->t_uto_impl = min(tcp_uto_max, \ - max((tp)->t_uto_adv, max((tp)->t_uto_impl, tcp_uto_min))); \ - (tp)->uto_flags &= ~TCPUTO_RCVD; \ - (tp)->uto_flags |= TCPUTO_IMPL; \ - } \ +#define TCPT_RESOLVE_UTO(tp) do { \ + if ((tp)->uto_flags & TCPUTO_ENABLE && \ + (tp)->uto_flags & TCPUTO_RCVD && \ + (tp)->uto_flags & TCPUTO_CHANGEABLE) { \ + (tp)->t_uto_impl = (tp)->rcv_uto >> 1; \ + if ((tp)->rcv_uto & 1) \ + (tp)->t_uto_impl *= 60; \ + (tp)->t_uto_impl *= hz; \ + (tp)->t_uto_impl = min(tcp_uto_max, \ + max((tp)->t_uto_adv, max((tp)->t_uto_impl, tcp_uto_min))); \ + (tp)->uto_flags &= ~TCPUTO_RCVD; \ + (tp)->uto_flags |= TCPUTO_IMPL; \ + } \ } while(0) #ifdef TCP_SIGNATURE From owner-p4-projects@FreeBSD.ORG Sat Aug 15 08:02:36 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E6F7D106568E; Sat, 15 Aug 2009 08:02:35 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AB071106568C for ; Sat, 15 Aug 2009 08:02:35 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 9890C8FC16 for ; Sat, 15 Aug 2009 08:02:35 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7F82Zeh020935 for ; Sat, 15 Aug 2009 08:02:35 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7F82ZKA020933 for perforce@freebsd.org; Sat, 15 Aug 2009 08:02:35 GMT (envelope-from trasz@freebsd.org) Date: Sat, 15 Aug 2009 08:02:35 GMT Message-Id: <200908150802.n7F82ZKA020933@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167353 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 08:02:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=167353 Change 167353 by trasz@trasz_anger on 2009/08/15 08:01:52 IFC and a small world build fix. Affected files ... .. //depot/projects/soc2009/trasz_limits/release/Makefile#3 integrate .. //depot/projects/soc2009/trasz_limits/release/svnbranch.awk#1 branch .. //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/local_apic.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/amd64/include/apicvar.h#3 integrate .. //depot/projects/soc2009/trasz_limits/sys/amd64/include/pmc_mdep.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/conf/options#10 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/hwpmc/hwpmc_core.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/hwpmc/hwpmc_piv.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/hwpmc/hwpmc_ppro.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/dev/hwpmc/hwpmc_x86.c#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/i386/i386/local_apic.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/i386/include/apicvar.h#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/i386/include/pmc_mdep.h#2 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_mutex.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_rwlock.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_sx.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/kern/vfs_cache.c#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/if.c#10 integrate .. //depot/projects/soc2009/trasz_limits/sys/net/vnet.h#10 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet/ip_output.c#9 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet/ipfw/ip_fw2.c#6 integrate .. //depot/projects/soc2009/trasz_limits/sys/netinet/sctp_os_bsd.h#5 integrate .. //depot/projects/soc2009/trasz_limits/sys/nfsclient/nfs_subs.c#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/sys/lock.h#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/sys/systm.h#4 integrate .. //depot/projects/soc2009/trasz_limits/sys/ufs/ffs/ffs_softdep.c#4 integrate .. //depot/projects/soc2009/trasz_limits/usr.bin/id/id.c#5 edit .. //depot/projects/soc2009/trasz_limits/usr.sbin/Makefile#7 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/arp/arp.c#3 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/mfiutil/mfi_drive.c#2 integrate .. //depot/projects/soc2009/trasz_limits/usr.sbin/mptutil/Makefile#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mptutil/mpt_cam.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mptutil/mpt_cmd.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mptutil/mpt_config.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mptutil/mpt_drive.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mptutil/mpt_evt.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mptutil/mpt_show.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mptutil/mpt_volume.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mptutil/mptutil.8#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mptutil/mptutil.c#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/mptutil/mptutil.h#1 branch .. //depot/projects/soc2009/trasz_limits/usr.sbin/sysinstall/devices.c#4 integrate Differences ... ==== //depot/projects/soc2009/trasz_limits/release/Makefile#3 (text+ko) ==== @@ -1,7 +1,8 @@ -# $FreeBSD: src/release/Makefile,v 1.943 2009/06/28 08:59:46 blackend Exp $ +# $FreeBSD: src/release/Makefile,v 1.944 2009/08/14 20:35:42 jhb Exp $ # # make release [BUILDNAME=somename] CHROOTDIR=/some/dir CVSROOT=/cvs/dir \ -# [RELEASETAG=tag] +# [RELEASETAG=tag] [SVNROOT=svn://svn.freebsd.org/base] \ +# [SVNBRANCH=some/branch] # # Where "/some/dir" is the pathname of a directory on a some filesystem with # at least 1000MB of free space, "somename" is what you want the release to @@ -9,6 +10,11 @@ # which CVS "tag" name should be used when checking out the sources to build # the release (default is HEAD). # +# Please note the support for building from SVN is preliminary and there +# are still questions about things like how to handle updates of +# /usr/src on production systems (csup(1) replacement). It is a work +# in progress and may change as the other issues get worked out. +# # Please note: the md(4) driver must be present in the kernel # (either by being compiled in or available as a kld(4) module), # otherwise the target 'release.8' and possibly others will fail. @@ -49,12 +55,25 @@ # To add other options to the CVS command, set #CVSARGS="-lfq" # -# To prefix the cvs command +# To prefix the CVS command #CVSPREFIX="/usr/bin/time" # # Where the CVS repository is #CVSROOT="/home/ncvs" # +# To add other options to the Subversion subcommands (co,up), set +#SVNCMDARGS="-r '{ 01/01/2002 00:00:00 UTC }'" +# +# To prefix the Subversion command +#SVNPREFIX="/usr/bin/time" +# +# Where the Subversion repository is +#SVNROOT=svn://svn.freebsd.org/base +# +# Subversion branch to build for src. If this is not set then it is +# automatically computed from RELEASETAG. +#SVNBRANCH=stable/7 +# # Non-zero if ${RELEASETAG} is in the form "RELENG_ver_RELEASE"; we # are building an official release. Otherwise, we are building for # a branch. @@ -68,6 +87,16 @@ .endif .endif +# Determine the Subversion source branch that corresponds to the requested +# RELEASETAG. +.if !defined(SVNBRANCH) +.if defined(RELEASETAG) +SVNBRANCH!= echo "${RELEASETAG}" | awk -f ${.CURDIR}/svnbranch.awk +.else +SVNBRANCH= head +.endif +.endif + # If you want to pass flags to the world build such as -j X, use # WORLD_FLAGS. Similarly, you can specify make flags for kernel # builds via KERNEL_FLAGS. @@ -341,8 +370,17 @@ WORLDDIR?= ${.CURDIR}/.. release rerelease: -.if !defined(CHROOTDIR) || !defined(BUILDNAME) || !defined(CVSROOT) - @echo "To make a release you must set CHROOTDIR, BUILDNAME and CVSROOT" && false +.if !defined(CHROOTDIR) || !defined(BUILDNAME) + @echo "To make a release you must set CHROOTDIR and BUILDNAME" && false +.endif +.if !defined(NOPORTSATALL) && !defined(EXTPORTSDIR) && !defined(CVSROOT) + @echo "Building ports requires CVSROOT or EXTPORTSDIR" && false +.endif +.if !defined(NODOC) && !defined(EXTDOCDIR) && !defined(CVSROOT) + @echo "Building docs requires CVSROOT or EXTDOCDIR" && false +.endif +.if !defined(EXTSRCDIR) && !defined(CVSROOT) && !defined(SVNROOT) + @echo "The source tree requires SVNROOT, CVSROOT, or EXTSRCDIR" && false .endif .if defined(NOPORTSATALL) && !defined(NODOC) @echo "Ports are required for building the release docs. Either set NODOC or" @@ -387,6 +425,10 @@ .if defined(EXTSRCDIR) cd ${CHROOTDIR}/usr && \ cp -R -H ${EXTSRCDIR} src +.elif defined(SVNROOT) + cd ${CHROOTDIR}/usr && \ + ${SVNPREFIX} svn co ${SVNCMDARGS} ${SVNROOT}/${SVNBRANCH} \ + ${RELEASESRCMODULE} .else cd ${CHROOTDIR}/usr && \ ${CVSPREFIX} cvs -R ${CVSARGS} -d ${CVSROOT} \ @@ -432,7 +474,10 @@ .endif .if make(rerelease) .if !defined(RELEASENOUPDATE) && !defined(EXTSRCDIR) -.if !defined(RELEASETAG) +.if defined(SVNROOT) + cd ${CHROOTDIR}/usr/src && ${SVNPREFIX} svn switch ${SVNCMDARGS} \ + ${SVNROOT}/${SVNBRANCH} +.elif !defined(RELEASETAG) cd ${CHROOTDIR}/usr/src && ${CVSPREFIX} cvs -R ${CVSARGS} -q \ update ${CVSCMDARGS} -P -d -A .else ==== //depot/projects/soc2009/trasz_limits/sys/amd64/amd64/local_apic.c#5 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.59 2009/08/13 17:09:45 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.60 2009/08/14 21:05:08 jhb Exp $"); #include "opt_hwpmc_hooks.h" #include "opt_kdtrace.h" @@ -123,7 +123,7 @@ { 1, 1, 0, 1, APIC_LVT_DM_NMI, 0 }, /* LINT1: NMI */ { 1, 1, 1, 1, APIC_LVT_DM_FIXED, APIC_TIMER_INT }, /* Timer */ { 1, 1, 1, 1, APIC_LVT_DM_FIXED, APIC_ERROR_INT }, /* Error */ - { 1, 1, 0, 1, APIC_LVT_DM_NMI, 0 }, /* PMC */ + { 1, 1, 1, 1, APIC_LVT_DM_NMI, 0 }, /* PMC */ { 1, 1, 1, 1, APIC_LVT_DM_FIXED, APIC_THERMAL_INT }, /* Thermal */ }; @@ -305,11 +305,9 @@ lapic->lvt_lint0 = lvt_mode(la, LVT_LINT0, lapic->lvt_lint0); lapic->lvt_lint1 = lvt_mode(la, LVT_LINT1, lapic->lvt_lint1); -#ifdef HWPMC_HOOKS /* Program the PMC LVT entry if present. */ if (maxlvt >= LVT_PMC) lapic->lvt_pcint = lvt_mode(la, LVT_PMC, lapic->lvt_pcint); -#endif /* Program timer LVT and setup handler. */ lapic->lvt_timer = lvt_mode(la, LVT_TIMER, lapic->lvt_timer); @@ -332,6 +330,88 @@ intr_restore(eflags); } +void +lapic_reenable_pmc(void) +{ +#ifdef HWPMC_HOOKS + uint32_t value; + + value = lapic->lvt_pcint; + value &= ~APIC_LVT_M; + lapic->lvt_pcint = value; +#endif +} + +#ifdef HWPMC_HOOKS +static void +lapic_update_pmc(void *dummy) +{ + struct lapic *la; + + la = &lapics[lapic_id()]; + lapic->lvt_pcint = lvt_mode(la, LVT_PMC, lapic->lvt_pcint); +} +#endif + +int +lapic_enable_pmc(void) +{ +#ifdef HWPMC_HOOKS + u_int32_t maxlvt; + + /* Fail if the local APIC is not present. */ + if (lapic == NULL) + return (0); + + /* Fail if the PMC LVT is not present. */ + maxlvt = (lapic->version & APIC_VER_MAXLVT) >> MAXLVTSHIFT; + if (maxlvt < LVT_PMC) + return (0); + + lvts[LVT_PMC].lvt_masked = 0; + +#ifdef SMP + /* + * If hwpmc was loaded at boot time then the APs may not be + * started yet. In that case, don't forward the request to + * them as they will program the lvt when they start. + */ + if (smp_started) + smp_rendezvous(NULL, lapic_update_pmc, NULL, NULL); + else +#endif + lapic_update_pmc(NULL); + return (1); +#else + return (0); +#endif +} + +void +lapic_disable_pmc(void) +{ +#ifdef HWPMC_HOOKS + u_int32_t maxlvt; + + /* Fail if the local APIC is not present. */ + if (lapic == NULL) + return; + + /* Fail if the PMC LVT is not present. */ + maxlvt = (lapic->version & APIC_VER_MAXLVT) >> MAXLVTSHIFT; + if (maxlvt < LVT_PMC) + return; + + lvts[LVT_PMC].lvt_masked = 1; + +#ifdef SMP + /* The APs should always be started when hwpmc is unloaded. */ + KASSERT(mp_ncpus == 1 || smp_started, ("hwpmc unloaded too early")); +#endif + smp_rendezvous(NULL, lapic_update_pmc, NULL, NULL); +#endif +} + /* * Called by cpu_initclocks() on the BSP to setup the local APIC timer so * that it can drive hardclock, statclock, and profclock. This function ==== //depot/projects/soc2009/trasz_limits/sys/amd64/include/apicvar.h#3 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/apicvar.h,v 1.30 2009/08/13 17:09:45 attilio Exp $ + * $FreeBSD: src/sys/amd64/include/apicvar.h,v 1.31 2009/08/14 21:05:08 jhb Exp $ */ #ifndef _MACHINE_APICVAR_H_ @@ -201,7 +201,9 @@ int ioapic_set_smi(void *cookie, u_int pin); void lapic_create(u_int apic_id, int boot_cpu); void lapic_disable(void); +void lapic_disable_pmc(void); void lapic_dump(const char *str); +int lapic_enable_pmc(void); void lapic_eoi(void); u_int lapic_error(void); int lapic_id(void); @@ -212,6 +214,7 @@ int lapic_ipi_wait(int delay); void lapic_handle_intr(int vector, struct trapframe *frame); void lapic_handle_timer(struct trapframe *frame); +void lapic_reenable_pmc(void); void lapic_set_logical_id(u_int apic_id, u_int cluster, u_int cluster_id); int lapic_set_lvt_mask(u_int apic_id, u_int lvt, u_char masked); int lapic_set_lvt_mode(u_int apic_id, u_int lvt, u_int32_t mode); ==== //depot/projects/soc2009/trasz_limits/sys/amd64/include/pmc_mdep.h#2 (text+ko) ==== @@ -27,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/pmc_mdep.h,v 1.8 2008/11/27 09:00:47 jkoshy Exp $ + * $FreeBSD: src/sys/amd64/include/pmc_mdep.h,v 1.9 2009/08/14 21:05:08 jhb Exp $ */ /* Machine dependent interfaces */ @@ -115,7 +115,6 @@ */ void start_exceptions(void), end_exceptions(void); -void pmc_x86_lapic_enable_pmc_interrupt(void); struct pmc_mdep *pmc_amd_initialize(void); void pmc_amd_finalize(struct pmc_mdep *_md); ==== //depot/projects/soc2009/trasz_limits/sys/conf/options#10 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.687 2009/07/14 22:48:30 rwatson Exp $ +# $FreeBSD: src/sys/conf/options,v 1.688 2009/08/14 22:41:39 zec Exp $ # # On the handling of kernel options # @@ -821,8 +821,9 @@ TDMA_TXRATE_11NA_DEFAULT opt_tdma.h TDMA_TXRATE_11NG_DEFAULT opt_tdma.h -# Virtualize the network stack +# Network stack virtualization options VIMAGE opt_global.h +VNET_DEBUG opt_global.h # Common Flash Interface (CFI) options CFI_SUPPORT_STRATAFLASH opt_cfi.h ==== //depot/projects/soc2009/trasz_limits/sys/dev/hwpmc/hwpmc_core.c#2 (text+ko) ==== @@ -29,13 +29,16 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/hwpmc/hwpmc_core.c,v 1.4 2009/01/27 07:29:37 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/hwpmc/hwpmc_core.c,v 1.5 2009/08/14 21:05:08 jhb Exp $"); #include +#include #include #include #include +#include +#include #include #include #include @@ -1771,7 +1774,7 @@ } if (found_interrupt) - pmc_x86_lapic_enable_pmc_interrupt(); + lapic_reenable_pmc(); atomic_add_int(found_interrupt ? &pmc_stats.pm_intr_processed : &pmc_stats.pm_intr_ignored, 1); @@ -1895,7 +1898,7 @@ (uintmax_t) rdmsr(IA_GLOBAL_OVF_CTRL)); if (found_interrupt) - pmc_x86_lapic_enable_pmc_interrupt(); + lapic_reenable_pmc(); atomic_add_int(found_interrupt ? &pmc_stats.pm_intr_processed : &pmc_stats.pm_intr_ignored, 1); ==== //depot/projects/soc2009/trasz_limits/sys/dev/hwpmc/hwpmc_piv.c#2 (text+ko) ==== @@ -29,9 +29,10 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/hwpmc/hwpmc_piv.c,v 1.20 2008/11/26 19:25:13 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/hwpmc/hwpmc_piv.c,v 1.21 2009/08/14 21:05:08 jhb Exp $"); #include +#include #include #include #include @@ -39,6 +40,8 @@ #include #include +#include +#include #include #include #include @@ -1537,7 +1540,7 @@ */ if (did_interrupt) - pmc_x86_lapic_enable_pmc_interrupt(); + lapic_reenable_pmc(); atomic_add_int(did_interrupt ? &pmc_stats.pm_intr_processed : &pmc_stats.pm_intr_ignored, 1); ==== //depot/projects/soc2009/trasz_limits/sys/dev/hwpmc/hwpmc_ppro.c#2 (text+ko) ==== @@ -29,9 +29,10 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/hwpmc/hwpmc_ppro.c,v 1.16 2008/12/02 10:46:35 jkoshy Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/hwpmc/hwpmc_ppro.c,v 1.17 2009/08/14 21:05:08 jhb Exp $"); #include +#include #include #include #include @@ -39,6 +40,8 @@ #include #include +#include +#include #include #include #include @@ -718,7 +721,7 @@ * unmasked after a PMC interrupt. */ if (retval) - pmc_x86_lapic_enable_pmc_interrupt(); + lapic_reenable_pmc(); atomic_add_int(retval ? &pmc_stats.pm_intr_processed : &pmc_stats.pm_intr_ignored, 1); ==== //depot/projects/soc2009/trasz_limits/sys/dev/hwpmc/hwpmc_x86.c#2 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/hwpmc/hwpmc_x86.c,v 1.11 2008/11/26 19:25:13 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/hwpmc/hwpmc_x86.c,v 1.12 2009/08/14 21:05:08 jhb Exp $"); #include #include @@ -39,7 +39,8 @@ #include #include -#include +#include +#include #include #include @@ -47,18 +48,6 @@ #include #include -extern volatile lapic_t *lapic; - -void -pmc_x86_lapic_enable_pmc_interrupt(void) -{ - uint32_t value; - - value = lapic->lvt_pcint; - value &= ~APIC_LVT_M; - lapic->lvt_pcint = value; -} - /* * Attempt to walk a user call stack using a too-simple algorithm. * In the general case we need unwind information associated with @@ -252,16 +241,15 @@ struct pmc_mdep *md; /* determine the CPU kind */ - md = NULL; if (cpu_vendor_id == CPU_VENDOR_AMD) md = pmc_amd_initialize(); else if (cpu_vendor_id == CPU_VENDOR_INTEL) md = pmc_intel_initialize(); else - KASSERT(0, ("[x86,%d] Unknown vendor", __LINE__)); + return (NULL); /* disallow sampling if we do not have an LAPIC */ - if (md != NULL && lapic == NULL) + if (!lapic_enable_pmc()) for (i = 1; i < md->pmd_nclass; i++) md->pmd_classdep[i].pcd_caps &= ~PMC_CAP_INTERRUPT; @@ -271,6 +259,8 @@ void pmc_md_finalize(struct pmc_mdep *md) { + + lapic_disable_pmc(); if (cpu_vendor_id == CPU_VENDOR_AMD) pmc_amd_finalize(md); else if (cpu_vendor_id == CPU_VENDOR_INTEL) ==== //depot/projects/soc2009/trasz_limits/sys/i386/i386/local_apic.c#5 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/i386/local_apic.c,v 1.62 2009/08/13 17:09:45 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/local_apic.c,v 1.63 2009/08/14 21:05:08 jhb Exp $"); #include "opt_hwpmc_hooks.h" #include "opt_kdtrace.h" @@ -123,7 +123,7 @@ { 1, 1, 0, 1, APIC_LVT_DM_NMI, 0 }, /* LINT1: NMI */ { 1, 1, 1, 1, APIC_LVT_DM_FIXED, APIC_TIMER_INT }, /* Timer */ { 1, 1, 1, 1, APIC_LVT_DM_FIXED, APIC_ERROR_INT }, /* Error */ - { 1, 1, 0, 1, APIC_LVT_DM_NMI, 0 }, /* PMC */ + { 1, 1, 1, 1, APIC_LVT_DM_NMI, 0 }, /* PMC */ { 1, 1, 1, 1, APIC_LVT_DM_FIXED, APIC_THERMAL_INT }, /* Thermal */ }; @@ -307,11 +307,9 @@ lapic->lvt_lint0 = lvt_mode(la, LVT_LINT0, lapic->lvt_lint0); lapic->lvt_lint1 = lvt_mode(la, LVT_LINT1, lapic->lvt_lint1); -#ifdef HWPMC_HOOKS /* Program the PMC LVT entry if present. */ if (maxlvt >= LVT_PMC) lapic->lvt_pcint = lvt_mode(la, LVT_PMC, lapic->lvt_pcint); -#endif /* Program timer LVT and setup handler. */ lapic->lvt_timer = lvt_mode(la, LVT_TIMER, lapic->lvt_timer); @@ -334,6 +332,88 @@ intr_restore(eflags); } +void +lapic_reenable_pmc(void) +{ +#ifdef HWPMC_HOOKS + uint32_t value; + + value = lapic->lvt_pcint; + value &= ~APIC_LVT_M; + lapic->lvt_pcint = value; +#endif +} + +#ifdef HWPMC_HOOKS +static void +lapic_update_pmc(void *dummy) +{ + struct lapic *la; + + la = &lapics[lapic_id()]; + lapic->lvt_pcint = lvt_mode(la, LVT_PMC, lapic->lvt_pcint); +} +#endif + +int +lapic_enable_pmc(void) +{ +#ifdef HWPMC_HOOKS + u_int32_t maxlvt; + + /* Fail if the local APIC is not present. */ + if (lapic == NULL) + return (0); + + /* Fail if the PMC LVT is not present. */ + maxlvt = (lapic->version & APIC_VER_MAXLVT) >> MAXLVTSHIFT; + if (maxlvt < LVT_PMC) + return (0); + + lvts[LVT_PMC].lvt_masked = 0; + +#ifdef SMP + /* + * If hwpmc was loaded at boot time then the APs may not be + * started yet. In that case, don't forward the request to + * them as they will program the lvt when they start. + */ + if (smp_started) + smp_rendezvous(NULL, lapic_update_pmc, NULL, NULL); + else +#endif + lapic_update_pmc(NULL); + return (1); +#else + return (0); +#endif +} + +void +lapic_disable_pmc(void) +{ +#ifdef HWPMC_HOOKS + u_int32_t maxlvt; + + /* Fail if the local APIC is not present. */ + if (lapic == NULL) + return; + + /* Fail if the PMC LVT is not present. */ + maxlvt = (lapic->version & APIC_VER_MAXLVT) >> MAXLVTSHIFT; + if (maxlvt < LVT_PMC) + return; + + lvts[LVT_PMC].lvt_masked = 1; + +#ifdef SMP + /* The APs should always be started when hwpmc is unloaded. */ + KASSERT(mp_ncpus == 1 || smp_started, ("hwpmc unloaded too early")); +#endif + smp_rendezvous(NULL, lapic_update_pmc, NULL, NULL); +#endif +} + /* * Called by cpu_initclocks() on the BSP to setup the local APIC timer so * that it can drive hardclock, statclock, and profclock. This function ==== //depot/projects/soc2009/trasz_limits/sys/i386/include/apicvar.h#5 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/i386/include/apicvar.h,v 1.33 2009/08/13 17:09:45 attilio Exp $ + * $FreeBSD: src/sys/i386/include/apicvar.h,v 1.34 2009/08/14 21:05:08 jhb Exp $ */ #ifndef _MACHINE_APICVAR_H_ @@ -230,7 +230,9 @@ int ioapic_set_smi(void *cookie, u_int pin); void lapic_create(u_int apic_id, int boot_cpu); void lapic_disable(void); +void lapic_disable_pmc(void); void lapic_dump(const char *str); +int lapic_enable_pmc(void); void lapic_eoi(void); u_int lapic_error(void); int lapic_id(void); @@ -241,6 +243,7 @@ int lapic_ipi_wait(int delay); void lapic_handle_intr(int vector, struct trapframe *frame); void lapic_handle_timer(struct trapframe *frame); +void lapic_reenable_pmc(void); void lapic_set_logical_id(u_int apic_id, u_int cluster, u_int cluster_id); int lapic_set_lvt_mask(u_int apic_id, u_int lvt, u_char masked); int lapic_set_lvt_mode(u_int apic_id, u_int lvt, u_int32_t mode); ==== //depot/projects/soc2009/trasz_limits/sys/i386/include/pmc_mdep.h#2 (text+ko) ==== @@ -27,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/i386/include/pmc_mdep.h,v 1.10 2008/11/27 09:00:47 jkoshy Exp $ + * $FreeBSD: src/sys/i386/include/pmc_mdep.h,v 1.11 2009/08/14 21:05:08 jhb Exp $ */ #ifndef _MACHINE_PMC_MDEP_H @@ -150,7 +150,6 @@ */ void start_exceptions(void), end_exceptions(void); -void pmc_x86_lapic_enable_pmc_interrupt(void); struct pmc_mdep *pmc_amd_initialize(void); void pmc_amd_finalize(struct pmc_mdep *_md); ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_mutex.c#4 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_mutex.c,v 1.213 2009/05/29 14:03:34 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_mutex.c,v 1.214 2009/08/14 21:46:54 bz Exp $"); #include "opt_adaptive_mutexes.h" #include "opt_ddb.h" @@ -783,6 +783,8 @@ MPASS((opts & ~(MTX_SPIN | MTX_QUIET | MTX_RECURSE | MTX_NOWITNESS | MTX_DUPOK | MTX_NOPROFILE)) == 0); + ASSERT_ATOMIC_LOAD(m->mtx_lock, ("%s: mtx_lock not aligned for %s: %p", + __func__, name, &m->mtx_lock)); #ifdef MUTEX_DEBUG /* Diagnostic and error correction */ ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_rwlock.c#4 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_rwlock.c,v 1.48 2009/06/02 13:03:35 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_rwlock.c,v 1.49 2009/08/14 21:46:54 bz Exp $"); #include "opt_ddb.h" #include "opt_kdtrace.h" @@ -174,6 +174,8 @@ MPASS((opts & ~(RW_DUPOK | RW_NOPROFILE | RW_NOWITNESS | RW_QUIET | RW_RECURSE)) == 0); + ASSERT_ATOMIC_LOAD(rw->rw_lock, ("%s: rw_lock not aligned for %s: %p", + __func__, name, &rw->rw_lock)); flags = LO_UPGRADABLE; if (opts & RW_DUPOK) ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_sx.c#4 (text+ko) ==== @@ -41,7 +41,7 @@ #include "opt_no_adaptive_sx.h" #include -__FBSDID("$FreeBSD: src/sys/kern/kern_sx.c,v 1.67 2009/06/02 13:03:35 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_sx.c,v 1.68 2009/08/14 21:46:54 bz Exp $"); #include #include @@ -205,6 +205,8 @@ MPASS((opts & ~(SX_QUIET | SX_RECURSE | SX_NOWITNESS | SX_DUPOK | SX_NOPROFILE | SX_NOADAPTIVE)) == 0); + ASSERT_ATOMIC_LOAD(sx->sx_lock, ("%s: sx_lock not aligned for %s: %p", + __func__, description, &sx->sx_lock)); flags = LO_SLEEPABLE | LO_UPGRADABLE; if (opts & SX_DUPOK) ==== //depot/projects/soc2009/trasz_limits/sys/kern/vfs_cache.c#5 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/vfs_cache.c,v 1.158 2009/06/21 19:21:01 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/vfs_cache.c,v 1.159 2009/08/14 10:57:28 kib Exp $"); #include "opt_kdtrace.h" #include "opt_ktrace.h" @@ -416,7 +416,8 @@ if (dvp->v_cache_dd->nc_flag & NCF_ISDOTDOT) cache_zap(dvp->v_cache_dd); dvp->v_cache_dd = NULL; - goto unlock; + CACHE_WUNLOCK(); + return (0); } if (dvp->v_cache_dd->nc_flag & NCF_ISDOTDOT) *vpp = dvp->v_cache_dd->nc_vp; ==== //depot/projects/soc2009/trasz_limits/sys/net/if.c#10 (text+ko) ==== @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * @(#)if.c 8.5 (Berkeley) 1/9/95 - * $FreeBSD: src/sys/net/if.c,v 1.359 2009/08/01 19:26:27 rwatson Exp $ + * $FreeBSD: src/sys/net/if.c,v 1.360 2009/08/14 22:46:45 zec Exp $ */ #include "opt_compat.h" @@ -920,7 +920,7 @@ /* Make sure the named iface does not exists in the dst. prison/vnet. */ /* XXX Lock interfaces to avoid races. */ - CURVNET_SET(pr->pr_vnet); + CURVNET_SET_QUIET(pr->pr_vnet); difp = ifunit(ifname); CURVNET_RESTORE(); if (difp != NULL) { ==== //depot/projects/soc2009/trasz_limits/sys/net/vnet.h#10 (text+ko) ==== @@ -32,7 +32,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/net/vnet.h,v 1.27 2009/08/13 10:26:34 bz Exp $ + * $FreeBSD: src/sys/net/vnet.h,v 1.28 2009/08/14 22:41:39 zec Exp $ */ /*- @@ -107,9 +107,6 @@ * Various macros -- get and set the current network stack, but also * assertions. */ -#ifdef INVARIANTS -#define VNET_DEBUG -#endif #ifdef VNET_DEBUG #define VNET_ASSERT(condition) \ if (!(condition)) { \ ==== //depot/projects/soc2009/trasz_limits/sys/netinet/ip_output.c#9 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet/ip_output.c,v 1.314 2009/08/01 19:26:27 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet/ip_output.c,v 1.315 2009/08/14 23:44:59 qingli Exp $"); #include "opt_ipfw.h" #include "opt_ipsec.h" @@ -53,6 +53,7 @@ #include #include +#include #include #include #include @@ -201,9 +202,12 @@ if (ro->ro_rt && ((ro->ro_rt->rt_flags & RTF_UP) == 0 || dst->sin_family != AF_INET || dst->sin_addr.s_addr != ip->ip_dst.s_addr)) { - if (!nortfree) + if (!nortfree) { RTFREE(ro->ro_rt); + LLE_FREE(ro->ro_lle); + } ro->ro_rt = (struct rtentry *)NULL; + ro->ro_lle = (struct llentry *)NULL; } #ifdef IPFIREWALL_FORWARD if (ro->ro_rt == NULL && fwd_tag == NULL) { ==== //depot/projects/soc2009/trasz_limits/sys/netinet/ipfw/ip_fw2.c#6 (text+ko) ==== @@ -24,7 +24,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet/ipfw/ip_fw2.c,v 1.11 2009/08/01 19:26:27 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet/ipfw/ip_fw2.c,v 1.12 2009/08/14 10:09:45 julian Exp $"); #define DEB(x) #define DDB(x) x @@ -2057,7 +2057,7 @@ dst_ip, htons(dst_port), wildcard, NULL); if (pcb != NULL) { - *uc = crhold(inp->inp_cred); + *uc = crhold(pcb->inp_cred); *ugid_lookupp = 1; } INP_INFO_RUNLOCK(pi); ==== //depot/projects/soc2009/trasz_limits/sys/netinet/sctp_os_bsd.h#5 (text+ko) ==== @@ -28,7 +28,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ #include -__FBSDID("$FreeBSD: src/sys/netinet/sctp_os_bsd.h,v 1.51 2009/08/01 19:26:27 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet/sctp_os_bsd.h,v 1.52 2009/08/14 22:43:25 zec Exp $"); #ifndef __sctp_os_bsd_h__ #define __sctp_os_bsd_h__ /* @@ -78,6 +78,10 @@ #include #include +#ifdef VIMAGE +#error "SCTP is not yet compatible with VIMAGE." +#endif + #ifdef IPSEC #include #include ==== //depot/projects/soc2009/trasz_limits/sys/nfsclient/nfs_subs.c#4 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_subs.c,v 1.163 2009/06/30 19:03:27 dfr Exp $"); +__FBSDID("$FreeBSD: src/sys/nfsclient/nfs_subs.c,v 1.164 2009/08/14 10:59:17 kib Exp $"); /* * These functions support the macros and help fiddle mbuf chains for @@ -409,28 +409,25 @@ nfs_upgrade_vnlock(struct vnode *vp) { int old_lock; - - if ((old_lock = VOP_ISLOCKED(vp)) != LK_EXCLUSIVE) { - if (old_lock == LK_SHARED) { - /* Upgrade to exclusive lock, this might block */ - vn_lock(vp, LK_UPGRADE | LK_RETRY); - } else { - vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); - } + + ASSERT_VOP_LOCKED(vp, "nfs_upgrade_vnlock"); + old_lock = VOP_ISLOCKED(vp); + if (old_lock != LK_EXCLUSIVE) { + KASSERT(old_lock == LK_SHARED, + ("nfs_upgrade_vnlock: wrong old_lock %d", old_lock)); + /* Upgrade to exclusive lock, this might block */ + vn_lock(vp, LK_UPGRADE | LK_RETRY); } - return old_lock; + return (old_lock); } void nfs_downgrade_vnlock(struct vnode *vp, int old_lock) { if (old_lock != LK_EXCLUSIVE) { - if (old_lock == LK_SHARED) { - /* Downgrade from exclusive lock, this might block */ - vn_lock(vp, LK_DOWNGRADE); - } else { - VOP_UNLOCK(vp, 0); - } + KASSERT(old_lock == LK_SHARED, ("wrong old_lock %d", old_lock)); + /* Downgrade from exclusive lock. */ + vn_lock(vp, LK_DOWNGRADE | LK_RETRY); } } ==== //depot/projects/soc2009/trasz_limits/sys/sys/lock.h#4 (text+ko) ==== @@ -26,7 +26,7 @@ * SUCH DAMAGE. * * from BSDI $Id: mutex.h,v 2.7.2.35 2000/04/27 03:10:26 cp Exp $ - * $FreeBSD: src/sys/sys/lock.h,v 1.78 2009/06/21 09:01:12 rdivacky Exp $ + * $FreeBSD: src/sys/sys/lock.h,v 1.79 2009/08/14 10:57:57 kib Exp $ */ #ifndef _SYS_LOCK_H_ @@ -155,16 +155,16 @@ #define LOCK_LOG_LOCK(opname, lo, flags, recurse, file, line) do { \ if (LOCK_LOG_TEST((lo), (flags))) \ - CTR5(KTR_LOCK, opname " (%s) %s r = %d at %s:%d", \ + CTR6(KTR_LOCK, opname " (%s) %s %p r = %d at %s:%d", \ LOCK_CLASS(lo)->lc_name, (lo)->lo_name, \ - (u_int)(recurse), (file), (line)); \ + (lo), (u_int)(recurse), (file), (line)); \ } while (0) #define LOCK_LOG_TRY(opname, lo, flags, result, file, line) do { \ if (LOCK_LOG_TEST((lo), (flags))) \ - CTR5(KTR_LOCK, "TRY_" opname " (%s) %s result=%d at %s:%d",\ + CTR6(KTR_LOCK, "TRY_" opname " (%s) %s %p result=%d at %s:%d",\ LOCK_CLASS(lo)->lc_name, (lo)->lo_name, \ - (u_int)(result), (file), (line)); \ + (lo), (u_int)(result), (file), (line)); \ } while (0) #define LOCK_LOG_INIT(lo, flags) do { \ ==== //depot/projects/soc2009/trasz_limits/sys/sys/systm.h#4 (text+ko) ==== @@ -32,7 +32,7 @@ * SUCH DAMAGE. * * @(#)systm.h 8.7 (Berkeley) 3/29/95 >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat Aug 15 11:50:45 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3541A106568D; Sat, 15 Aug 2009 11:50:45 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EC28C106568B for ; Sat, 15 Aug 2009 11:50:44 +0000 (UTC) (envelope-from fangwang@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C11568FC3D for ; Sat, 15 Aug 2009 11:50:44 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FBoiSG051570 for ; Sat, 15 Aug 2009 11:50:44 GMT (envelope-from fangwang@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FBoiNf051568 for perforce@freebsd.org; Sat, 15 Aug 2009 11:50:44 GMT (envelope-from fangwang@FreeBSD.org) Date: Sat, 15 Aug 2009 11:50:44 GMT Message-Id: <200908151150.n7FBoiNf051568@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fangwang@FreeBSD.org using -f From: Fang Wang To: Perforce Change Reviews Cc: Subject: PERFORCE change 167354 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 11:50:45 -0000 http://perforce.freebsd.org/chv.cgi?CH=167354 Change 167354 by fangwang@fangwang_utobsd on 2009/08/15 11:50:16 Add leak received uto packet stats. Affected files ... .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_syncache.c#10 edit Differences ... ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_syncache.c#10 (text+ko) ==== @@ -1221,6 +1221,7 @@ if (to->to_flags & TOF_UTO) { sc->sc_peer_uto = to->to_uto; sc->sc_flags |= SCF_UTO; + TCPSTAT_INC(tcps_rcvuto); } if (V_tcp_syncookies) { From owner-p4-projects@FreeBSD.ORG Sat Aug 15 11:56:52 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D9BD910656A3; Sat, 15 Aug 2009 11:56:51 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9E1B7106568B for ; Sat, 15 Aug 2009 11:56:51 +0000 (UTC) (envelope-from fangwang@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 744118FC62 for ; Sat, 15 Aug 2009 11:56:51 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FBup3E051998 for ; Sat, 15 Aug 2009 11:56:51 GMT (envelope-from fangwang@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FBupLV051996 for perforce@freebsd.org; Sat, 15 Aug 2009 11:56:51 GMT (envelope-from fangwang@FreeBSD.org) Date: Sat, 15 Aug 2009 11:56:51 GMT Message-Id: <200908151156.n7FBupLV051996@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fangwang@FreeBSD.org using -f From: Fang Wang To: Perforce Change Reviews Cc: Subject: PERFORCE change 167355 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 11:56:52 -0000 http://perforce.freebsd.org/chv.cgi?CH=167355 Change 167355 by fangwang@fangwang_utobsd on 2009/08/15 11:56:45 complete tcputo regression test code. Affected files ... .. //depot/projects/soc2009/tcputo/src/tools/regression/netinet/tcputo/tcputo.c#6 edit Differences ... ==== //depot/projects/soc2009/tcputo/src/tools/regression/netinet/tcputo/tcputo.c#6 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/tools/regression/netinet/tcputo/tcputo.c 2009/7/4 02:54:36 fw $ + * $FreeBSD: src/tools/regression/netinet/tcputo/tcputo.c 2009/8/11 02:54:36 fw $ */ #include @@ -32,8 +32,7 @@ #include #include #include -//#include -#include "tcp.h" +#include #include @@ -49,36 +48,29 @@ #include #include -static void -usage(void) -{ - - fprintf(stderr, "tcpconnect [-e] server port [user timeout]\n"); - fprintf(stderr, "tcpconnect [-e] client ip port [user timeout]\n"); - exit(-1); -} - #define SIZE_ETHERNET sizeof(struct ether_header) struct tcprxt { struct timeval ts; - u_int length; u_int th_off; tcp_seq th_seq; tcp_seq th_ack; + u_short th_win; u_char th_flags; }; #define MAX_RXT 200 -struct tcprxt rxts[MAX_RXT]; +struct tcprxt rxts[MAX_RXT]; +int uto_intervals[13] = { 1, 2, 4, 8, 16, 32, 64, 64, 64, 64, 64, 64, 64 }; + void parse_packet(u_char *args, const struct pcap_pkthdr *pkt_header, const u_char *packet) { - const struct ip *ip; /* The IP header */ - const struct tcphdr *tcp; /* The TCP header */ - const u_char *tcpopt; /* Tcp option */ + const struct ip *ip; + const struct tcphdr *tcp; + const u_char *tcpopt; struct tcprxt rxt; u_int opt, optlen; u_int hlen; @@ -111,11 +103,30 @@ optlen = *tcpopt++; if (opt == TCPOPT_UTO) { u_int uto = htons(*(u_short *)tcpopt); + struct tm *p; if (uto & 1) uto = (uto >> 1) * 60; else uto >>= 1; - printf("Time:%u.%u Seq:%u Ack:%u Win:%u Length:%u UTO:%u\n", pkt_header->ts.tv_sec, pkt_header->ts.tv_usec, htonl(tcp->th_seq), htonl(tcp->th_ack), htons(tcp->th_win), length, uto); + p = localtime(&pkt_header->ts.tv_sec); + printf("uto packet: "); + printf("%02d:%02d:%02d.%-6u ", p->tm_hour, p->tm_min, p->tm_sec, + pkt_header->ts.tv_usec); + printf("%s.%d > ", inet_ntoa(ip->ip_src), htons(tcp->th_sport)); + printf("%s.%d, ", inet_ntoa(ip->ip_dst), htons(tcp->th_dport)); + printf("flags ["); + if (tcp->th_flags & TH_SYN) + printf("S"); + if (tcp->th_flags & TH_RST) + printf("R"); + if (tcp->th_flags & TH_PUSH) + printf("P"); + if (tcp->th_flags & TH_ACK) + printf("."); + if (tcp->th_flags & TH_URG) + printf("U"); + printf("], "); + printf("uto %u, win %u, length %u\n", uto, htons(tcp->th_win), length); } hlen -= optlen - 1; tcpopt += optlen - 2; @@ -123,49 +134,86 @@ if (length > 0 || tcp->th_flags & TH_RST) { memset(&rxt, 0, sizeof(rxt)); memcpy(&rxt.ts, &pkt_header->ts, sizeof(rxt.ts)); - rxt.length = length; + rxt.th_win = htons(tcp->th_win); rxt.th_off = tcp->th_off; - rxt.th_ack = tcp->th_ack; - rxt.th_seq = tcp->th_seq; + rxt.th_ack = htonl(tcp->th_ack); + rxt.th_seq = htonl(tcp->th_seq); rxt.th_flags = tcp->th_flags; memcpy(&rxts[0], &rxts[1], sizeof(struct tcprxt) * (MAX_RXT - 1)); memcpy(&rxts[MAX_RXT - 1], &rxt, sizeof(rxt)); } } -void +void * dump_packet(void *arg) { - pcap_t *handle; /* Session handle */ - char *dev; /* The device to sniff on */ - //char dev[] = "le1"; /* The device to sniff on */ - char errbuf[PCAP_ERRBUF_SIZE]; /* Error string */ - struct bpf_program fp; /* The compiled filter */ - char filter_exp[] = "tcp port 8000"; /* The filter expression */ - bpf_u_int32 mask; /* Our netmask */ - bpf_u_int32 net; /* Our IP */ - struct pcap_pkthdr header; /* The header that pcap gives us */ - const u_char *packet; /* The actual packet */ + pcap_t *handle; + char errbuf[PCAP_ERRBUF_SIZE]; + struct bpf_program fp; + char filter_exp[128]; + bpf_u_int32 mask; + bpf_u_int32 net; + struct pcap_pkthdr header; + const u_char *packet; + struct sockaddr_in srcaddr, dstaddr, *devaddrp; + int optlen; + pcap_if_t *alldevsp, *devp; + pcap_addr_t *addrp; + int flag; + + optlen = sizeof(srcaddr); + if (getsockname(*((int *)arg), (struct sockaddr *)&srcaddr, &optlen) == -1) + err(-1, "getsockname"); + optlen = sizeof(dstaddr); + if (getpeername(*((int *)arg), (struct sockaddr *)&dstaddr, &optlen) == -1) + err(-1, "getsockname"); + + if (pcap_findalldevs(&alldevsp, errbuf) == -1) { + fprintf(stderr, "Couldn't get all device: %s\n", errbuf); + exit(-1); + } + + devp = alldevsp; + flag = 1; + while (devp != NULL) { + addrp = devp->addresses; + while (addrp != NULL && flag) { + devaddrp = (struct sockaddr_in *)addrp->addr; + if (!memcmp(&devaddrp->sin_addr, &srcaddr.sin_addr, sizeof(srcaddr.sin_addr))) { + flag = 0; + break; + } + addrp = addrp->next; + } + if (!flag) + break; + devp = devp->next; + } - /* Define the device */ - dev = pcap_lookupdev(errbuf); - if (dev == NULL) { - fprintf(stderr, "Couldn't find default device: %s\n", errbuf); + if (devp == NULL) { + fprintf(stderr, "Couldn't find using device\n"); exit(-1); } - /* Find the properties for the device */ - if (pcap_lookupnet(dev, &net, &mask, errbuf) == -1) { - fprintf(stderr, "Couldn't get netmask for device %s: %s\n", dev, errbuf); + + if (pcap_lookupnet(devp->name, &net, &mask, errbuf) == -1) { + fprintf(stderr, "Couldn't get netmask for device %s: %s\n", devp->name, errbuf); net = 0; mask = 0; } - /* Open the session in promiscuous mode */ - handle = pcap_open_live(dev, BUFSIZ, 1, 1000, errbuf); + + handle = pcap_open_live(devp->name, BUFSIZ, 1, 1000, errbuf); if (handle == NULL) { - fprintf(stderr, "Couldn't open device %s: %s\n", dev, errbuf); + fprintf(stderr, "Couldn't open device %s: %s\n", devp->name, errbuf); exit(-1); } - /* Compile and apply the filter */ + + pcap_freealldevs(alldevsp); + + snprintf(filter_exp, sizeof(filter_exp), + "(tcp src port %d and dst port %d) or (tcp src port %d and dst port %d)", + ntohs(srcaddr.sin_port), ntohs(dstaddr.sin_port), + ntohs(dstaddr.sin_port), ntohs(srcaddr.sin_port)); + if (pcap_compile(handle, &fp, filter_exp, 0, net) == -1) { fprintf(stderr, "Couldn't parse filter %s: %s\n", filter_exp, pcap_geterr(handle)); exit(-1); @@ -174,8 +222,11 @@ fprintf(stderr, "Couldn't install filter %s: %s\n", filter_exp, pcap_geterr(handle)); exit(-1); } + pcap_loop(handle, -1, parse_packet, NULL); pcap_close(handle); + + return NULL; } void print_result() @@ -186,29 +237,68 @@ rxt_seq = rxts[MAX_RXT - 2].th_seq; for (last = -1, rxt_nr = 0, i = 0; i < MAX_RXT; i++) { - if (rxts[i].th_seq == rxt_seq || rxts[i].th_flags & TH_RST) { + if (rxts[i].th_seq && (rxts[i].th_seq == rxt_seq || rxts[i].th_flags & TH_RST)) { if (rxts[i].th_flags & TH_RST) printf("reset packet, "); else if (rxt_nr) - printf("retransmit %d, ", rxt_nr); + printf("retransmit %02d, ", rxt_nr); else if (!rxt_nr) printf("send packet, "); p = localtime(&rxts[i].ts.tv_sec); - printf("time %d:%d:%d.%-6u, ", p->tm_hour, p->tm_min, p->tm_sec, rxts[i].ts.tv_usec); - printf("seq %u, ack %u, ", rxts[i].th_seq, rxts[i].th_ack); + printf("%02d:%02d:%02d.%-6u ", p->tm_hour, p->tm_min, p->tm_sec, rxts[i].ts.tv_usec); if (last != -1) { if (rxts[i].ts.tv_usec < rxts[last].ts.tv_usec) - printf("interval %u.%-6u, ", rxts[i].ts.tv_sec - rxts[last].ts.tv_sec - 1, 1000000 + rxts[i].ts.tv_usec - rxts[last].ts.tv_usec); + printf("(%2u.%-6u) ", rxts[i].ts.tv_sec - rxts[last].ts.tv_sec - 1, + 1000000 + rxts[i].ts.tv_usec - rxts[last].ts.tv_usec); else - printf("interval %u.%-6u, ", rxts[i].ts.tv_sec - rxts[last].ts.tv_sec, rxts[i].ts.tv_usec - rxts[last].ts.tv_usec); + printf("(%2u.%-6u) ", rxts[i].ts.tv_sec - rxts[last].ts.tv_sec, + rxts[i].ts.tv_usec - rxts[last].ts.tv_usec); } - printf("length %u\n", rxts[i].length); + printf("seq %u, ack %u, ", rxts[i].th_seq, rxts[i].th_ack); + printf("win %u\n", rxts[i].th_win); last = i; rxt_nr++; } } } +int +print_uto_status(int sock, int print) +{ + static struct tcputo tu = {0, 0}; + int default_uto = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 64 + 64 + 64 + 64 + 64 + 64; + int optlen; + int utoval; + + optlen = sizeof(tu); + (void)getsockopt(sock, IPPROTO_TCP, TCP_UTO, &tu, &optlen); + if (print) { + if (tu.flags & ENABLE_UTO) { + printf("tcputo: enabled, "); + if (tu.flags & STORE_UTO) { + printf("user timeout(changed): %d seconds\n", tu.uto); + utoval = tu.uto; + } else { + printf("user timeout(default): %d seconds\n", default_uto); + utoval = default_uto; + } + } else { + printf("tcputo: disabled, default timeout: %d seconds\n", default_uto); + utoval = default_uto; + } + } + + return utoval; +} + +static void +usage(void) +{ + fprintf(stderr, "tcpconnect server port [uto [timeout seconds]]\n"); + fprintf(stderr, "tcpconnect client ip port [uto [timeout seconds]]\n"); + exit(-1); +} + static int tcputo_timer(void) { @@ -219,8 +309,7 @@ if (start_time == 0) { time(&start_time); interval = 0; - } - else { + } else { time(&end_time); interval = end_time - start_time; start_time = 0; @@ -235,14 +324,14 @@ int listen_sock, accept_sock; struct sockaddr_in sin; char *dummy; - char buf[16*1024]; + char buf[8*1024]; long port; int user_timeout; int optval; struct tcputo uto; pthread_t tid; - if (argc != 1 && argc != 2) + if (argc < 1 && argc > 3) usage(); bzero(&sin, sizeof(sin)); @@ -269,26 +358,42 @@ err(-1, "listen"); accept_sock = accept(listen_sock, NULL, NULL); + if (accept_sock == -1) + err(-1, "accept"); + close(listen_sock); + + if (pthread_create(&tid, NULL, dump_packet, (void *)&accept_sock)) + err(-1, "create thread"); + + if (argc >= 2) { + memset(&uto, 0, sizeof(uto)); + if (!strcmp(argv[1], "uto")) { + uto.flags |= ENABLE_UTO; + uto.flags |= ENABLE_CHANGE; + } else + usage(); + if (argc == 3) { + uto.uto = strtoul(argv[2], &dummy, 10); + if (uto.uto <= 0 || *dummy != '\0') + usage(); + uto.flags |= STORE_UTO; + uto.flags &= ~ENABLE_CHANGE; + } + if (setsockopt(accept_sock, IPPROTO_TCP, TCP_UTO, &uto, sizeof(uto)) == -1) + err(-1, "setsockopt"); + } + optval = 4*1024; if (setsockopt(accept_sock, SOL_SOCKET, SO_SNDBUF, &optval, sizeof(optval)) == -1) err(-1, "setsockopt"); - uto.flags = ENABLE_UTO; - if (argc == 2) { - uto.uto = atoi(argv[1]); - uto.flags |= STORE_UTO; - } - if (setsockopt(accept_sock, IPPROTO_TCP, TCP_UTO, &uto, sizeof(uto)) == -1) - err(-1, "setsockopt"); - close(listen_sock); - if (pthread_create(&tid, NULL, dump_packet, NULL)) - err(-1, "create thread"); + while(1) { sleep(1); - printf("server again %d\n", optval++); - (void)recv(accept_sock, buf, 16*1024, MSG_DONTWAIT); + while(recv(accept_sock, buf, 8*1024, MSG_DONTWAIT) > 0); (void)tcputo_timer(); - if (send(accept_sock, buf, 16*1024, MSG_NOSIGNAL) >= 0) { + if (send(accept_sock, buf, 8*1024, MSG_NOSIGNAL) >= 0) { (void)tcputo_timer(); + print_uto_status(accept_sock, 0); continue; } user_timeout = tcputo_timer(); @@ -298,6 +403,7 @@ /* wait for the reset packet to be captured */ sleep(1); pthread_kill(tid, SIGTERM); + close(accept_sock); } @@ -307,14 +413,14 @@ struct sockaddr_in sin; long port; char *dummy; - char buf[16*1024]; + char buf[8*1024]; int sock; int user_timeout; - int optval = 4*1024; + int optval; struct tcputo uto; pthread_t tid; - if (argc != 2 && argc != 3) + if (argc < 2 && argc > 4) usage(); bzero(&sin, sizeof(sin)); @@ -327,30 +433,45 @@ if (port < 1 || port > 65535 || *dummy != '\0') usage(); sin.sin_port = htons(port); - sock = socket(PF_INET, SOCK_STREAM, 0); if (sock == -1) err(-1, "socket"); + + optval = 4*1024; if (setsockopt(sock, SOL_SOCKET, SO_SNDBUF, &optval, sizeof(optval)) == -1) err(-1, "setsockopt"); - - if (argc == 3) { - uto.uto = atoi(argv[2]); - uto.flags = ENABLE_UTO | STORE_UTO; + + if (argc >= 3) { + memset(&uto, 0, sizeof(uto)); + if (!strcmp(argv[2], "uto")) { + uto.flags |= ENABLE_UTO; + uto.flags |= ENABLE_CHANGE; + } else + usage(); + if (argc == 4) { + uto.uto = strtoul(argv[3], &dummy, 10); + if (uto.uto <= 0 || *dummy != '\0') + usage(); + uto.flags |= STORE_UTO; + uto.flags &= ~ENABLE_CHANGE; + } if (setsockopt(sock, IPPROTO_TCP, TCP_UTO, &uto, sizeof(uto)) == -1) err(-1, "setsockopt"); } + if (connect(sock, (struct sockaddr *)&sin, sizeof(sin)) == -1) err(-1, "connect"); - if (pthread_create(&tid, NULL, dump_packet, NULL)) + + if (pthread_create(&tid, NULL, dump_packet, (void *)&sock)) err(-1, "create thread"); + while (1) { sleep(1); - printf("client again %d\n", optval++); - (void)recv(sock, buf, 16*1024, MSG_DONTWAIT); + while(recv(sock, buf, 8*1024, MSG_DONTWAIT) > 0); (void)tcputo_timer(); - if (send(sock, buf, 16*1024, MSG_NOSIGNAL) > 0) { + if (send(sock, buf, 8*1024, MSG_NOSIGNAL) > 0) { (void)tcputo_timer(); + print_uto_status(sock, 0); continue; } user_timeout = tcputo_timer(); @@ -360,12 +481,15 @@ /* wait for the reset packet to be captured */ sleep(1); pthread_kill(tid, SIGTERM); + close(sock); } int main(int argc, char *argv[]) { + int utoval; + if (argc < 2) usage(); @@ -375,6 +499,10 @@ tcputo_client(argc - 2, argv + 2); else usage(); + + print_uto_status(-1, 1); print_result(); + exit(0); } + From owner-p4-projects@FreeBSD.ORG Sat Aug 15 12:23:20 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9B60A106568F; Sat, 15 Aug 2009 12:23:20 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5FF19106568D for ; Sat, 15 Aug 2009 12:23:20 +0000 (UTC) (envelope-from fangwang@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 34D438FC59 for ; Sat, 15 Aug 2009 12:23:20 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FCNKFA054836 for ; Sat, 15 Aug 2009 12:23:20 GMT (envelope-from fangwang@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FCNKZM054834 for perforce@freebsd.org; Sat, 15 Aug 2009 12:23:20 GMT (envelope-from fangwang@FreeBSD.org) Date: Sat, 15 Aug 2009 12:23:20 GMT Message-Id: <200908151223.n7FCNKZM054834@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fangwang@FreeBSD.org using -f From: Fang Wang To: Perforce Change Reviews Cc: Subject: PERFORCE change 167356 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 12:23:20 -0000 http://perforce.freebsd.org/chv.cgi?CH=167356 Change 167356 by fangwang@fangwang_utobsd on 2009/08/15 12:23:13 Readme for tcputo regression program. Affected files ... .. //depot/projects/soc2009/tcputo/src/tools/regression/netinet/tcputo/README#1 add Differences ... From owner-p4-projects@FreeBSD.ORG Sat Aug 15 12:31:29 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 832F31065692; Sat, 15 Aug 2009 12:31:29 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 47DDD1065690 for ; Sat, 15 Aug 2009 12:31:29 +0000 (UTC) (envelope-from fangwang@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 3681E8FC6B for ; Sat, 15 Aug 2009 12:31:29 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FCVTms055398 for ; Sat, 15 Aug 2009 12:31:29 GMT (envelope-from fangwang@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FCVTHo055396 for perforce@freebsd.org; Sat, 15 Aug 2009 12:31:29 GMT (envelope-from fangwang@FreeBSD.org) Date: Sat, 15 Aug 2009 12:31:29 GMT Message-Id: <200908151231.n7FCVTHo055396@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fangwang@FreeBSD.org using -f From: Fang Wang To: Perforce Change Reviews Cc: Subject: PERFORCE change 167357 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 12:31:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=167357 Change 167357 by fangwang@fangwang_utobsd on 2009/08/15 12:31:12 fix copyright. Affected files ... .. //depot/projects/soc2009/tcputo/src/tools/regression/netinet/tcputo/README#2 edit .. //depot/projects/soc2009/tcputo/src/tools/regression/netinet/tcputo/tcputo.c#7 edit Differences ... ==== //depot/projects/soc2009/tcputo/src/tools/regression/netinet/tcputo/README#2 (text+ko) ==== @@ -21,4 +21,4 @@ After that, interrupt the connection without detected by operating system, and wait until process exits. -$FreeBSD: src/tools/regression/netinet/tcputo/README,v 1.1 2004/09/13 16:53:40 rwatson Exp $ +$FreeBSD: src/tools/regression/netinet/tcputo/README,v 1.0 2008/08/15 20:26:52 fw Exp $ ==== //depot/projects/soc2009/tcputo/src/tools/regression/netinet/tcputo/tcputo.c#7 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/tools/regression/netinet/tcputo/tcputo.c 2009/8/11 02:54:36 fw $ + * $FreeBSD: src/tools/regression/netinet/tcputo/tcputo.c 2009/08/15 20:28:31 fw $ */ #include @@ -62,8 +62,6 @@ #define MAX_RXT 200 struct tcprxt rxts[MAX_RXT]; -int uto_intervals[13] = { 1, 2, 4, 8, 16, 32, 64, 64, 64, 64, 64, 64, 64 }; - void parse_packet(u_char *args, const struct pcap_pkthdr *pkt_header, const u_char *packet) From owner-p4-projects@FreeBSD.ORG Sat Aug 15 12:39:40 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6D30F10656BA; Sat, 15 Aug 2009 12:39:40 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1888210656A6 for ; Sat, 15 Aug 2009 12:39:38 +0000 (UTC) (envelope-from syl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 588D68FC55 for ; Sat, 15 Aug 2009 12:39:38 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FCdcfb056014 for ; Sat, 15 Aug 2009 12:39:38 GMT (envelope-from syl@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FCdcgF056012 for perforce@freebsd.org; Sat, 15 Aug 2009 12:39:38 GMT (envelope-from syl@FreeBSD.org) Date: Sat, 15 Aug 2009 12:39:38 GMT Message-Id: <200908151239.n7FCdcgF056012@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to syl@FreeBSD.org using -f From: Sylvestre Gallon To: Perforce Change Reviews Cc: Subject: PERFORCE change 167359 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 12:39:40 -0000 http://perforce.freebsd.org/chv.cgi?CH=167359 Change 167359 by syl@syl_twoflowers on 2009/08/15 12:38:39 Rename USB_DCI_ROOTHUB_DEFAULT into USB_ROOTHUB_DEFAULT. Affected files ... .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/at91dci.c#15 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/atmegadci.c#13 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/avr32dci.c#12 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/musb_otg.c#14 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.c#21 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/uss820dci.c#13 edit .. //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_controller.h#13 edit Differences ... ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/at91dci.c#15 (text+ko) ==== @@ -1641,7 +1641,7 @@ { struct at91dci_softc *sc = AT9100_DCI_BUS2SC(udev->bus); static const struct usb_roothub_fops fops = { - USB_DCI_DEFAULT_ROOTHUB, + USB_DEFAULT_ROOTHUB, .handle_get_port_status = &at91dci_get_port_status, .handle_clocks_on = (usb_clocks_fops_t)&at91dci_clocks_on, .handle_clocks_off = (usb_clocks_fops_t)&at91dci_clocks_off, ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/atmegadci.c#13 (text+ko) ==== @@ -1564,7 +1564,7 @@ { struct atmegadci_softc *sc = ATMEGA_BUS2SC(udev->bus); static const struct usb_roothub_fops fops = { - USB_DCI_DEFAULT_ROOTHUB, + USB_DEFAULT_ROOTHUB, .handle_clear_port_feature = &atmega_clear_port_feature, .handle_clocks_on = (usb_clocks_fops_t)&atmegadci_clocks_on, .handle_clocks_off = (usb_clocks_fops_t)&atmegadci_clocks_off, ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/avr32dci.c#12 (text+ko) ==== @@ -1549,7 +1549,7 @@ { struct avr32dci_softc *sc = AVR32_BUS2SC(udev->bus); static const struct usb_roothub_fops fops = { - USB_DCI_DEFAULT_ROOTHUB, + USB_DEFAULT_ROOTHUB, .handle_clear_port_feature = &avr32dci_clear_port_feature, .handle_get_port_status = &avr32dci_get_port_status, .handle_clocks_on = (usb_clocks_fops_t)&avr32dci_clocks_on, ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/musb_otg.c#14 (text+ko) ==== @@ -2053,7 +2053,7 @@ { struct musbotg_softc *sc = MUSBOTG_BUS2SC(udev->bus); static const struct usb_roothub_fops fops = { - UBS_DCI_DEFAULT_ROOTHUB, + USB_DEFAULT_ROOTHUB, .handle_get_port_status = &musbotg_get_port_status, .handle_clocks_on = (usb_clocks_fops_t)&musbotg_clocks_on, .handle_clocks_off = (usb_clocks_fops_t)&musbotg_clocks_off, ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/s3c24xxdci.c#21 (text+ko) ==== @@ -859,7 +859,7 @@ { struct s3c24dci_softc *sc = S3C24_DCI_BUS2SC(udev->bus); static const struct usb_roothub_fops fops = { - USB_DCI_DEFAULT_ROOTHUB, + USB_DEFAULT_ROOTHUB, .handle_clocks_on = (usb_clocks_fops_t)&s3c24dci_clocks_on, .handle_clocks_off = (usb_clocks_fops_t)&s3c24dci_clocks_off, .handle_pull_up = (usb_clocks_fops_t)&s3c24dci_pull_up, ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/controller/uss820dci.c#13 (text+ko) ==== @@ -1629,7 +1629,7 @@ { struct uss820dci_softc *sc = USS820_DCI_BUS2SC(udev->bus); static const struct usb_roothub_fops fops = { - USB_DCI_DEFAULT_ROOTHUB, + USB_DEFAULT_ROOTHUB, .handle_pull_up = (usb_clocks_fops_t)&uss820dci_pull_up, .handle_pull_down = (usb_clocks_fops_t)&uss820dci_pull_down, .handle_wakeup_peer = (usb_clocks_fops_t)&uss820dci_wakeup_peer, ==== //depot/projects/soc2009/syl_usb/src/sys/dev/usb/usb_controller.h#13 (text+ko) ==== @@ -272,7 +272,7 @@ usb_error_t generic_get_class_descriptor(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); usb_error_t generic_get_class_status(struct usb_generic_softc *sc, const struct usb_roothub_fops *fops, uint16_t *len, uint16_t *value, uint16_t *index); -#define USB_DCI_DEFAULT_ROOTHUB \ +#define USB_DEFAULT_ROOTHUB \ .handle_get_descriptor = &generic_get_descriptor, \ .handle_get_config = &generic_get_config, \ .handle_get_status = &generic_get_status, \ From owner-p4-projects@FreeBSD.ORG Sat Aug 15 12:58:59 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CAC5F106568C; Sat, 15 Aug 2009 12:58:59 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8F54F1065691 for ; Sat, 15 Aug 2009 12:58:59 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 7D6928FC51 for ; Sat, 15 Aug 2009 12:58:59 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FCwxr2067421 for ; Sat, 15 Aug 2009 12:58:59 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FCwxTa067419 for perforce@freebsd.org; Sat, 15 Aug 2009 12:58:59 GMT (envelope-from trasz@freebsd.org) Date: Sat, 15 Aug 2009 12:58:59 GMT Message-Id: <200908151258.n7FCwxTa067419@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167360 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 12:59:00 -0000 http://perforce.freebsd.org/chv.cgi?CH=167360 Change 167360 by trasz@trasz_anger on 2009/08/15 12:58:43 Unbreak pts accounting. Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/kern/tty_pts.c#7 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/kern/tty_pts.c#7 (text+ko) ==== @@ -688,7 +688,6 @@ free_unr(pts_pool, psc->pts_unit); chgptscnt(psc->pts_uidinfo, -1, 0); - hrl_free(HRL_RESOURCE_PTY, 1); uifree(psc->pts_uidinfo); knlist_destroy(&psc->pts_inpoll.si_note); @@ -725,7 +724,7 @@ /* Resource limiting. */ PROC_LOCK(p); ok = chgptscnt(uid, 1, lim_cur(p, RLIMIT_NPTS)); - error = hrl_alloc(HRL_RESOURCE_PTY, 1); + error = hrl_alloc_proc(p, HRL_RESOURCE_PTY, 1); PROC_UNLOCK(p); if (ok != !error) printf("pts_alloc: ok = %d, error = %d\n", ok, error); @@ -736,13 +735,13 @@ unit = alloc_unr(pts_pool); if (unit < 0) { chgptscnt(uid, -1, 0); - hrl_free(HRL_RESOURCE_PTY, 1); + hrl_free_proc(p, HRL_RESOURCE_PTY, 1); return (EAGAIN); } if (unit > pts_maxdev) { free_unr(pts_pool, unit); chgptscnt(uid, -1, 0); - hrl_free(HRL_RESOURCE_PTY, 1); + hrl_free_proc(p, HRL_RESOURCE_PTY, 1); return (EAGAIN); } @@ -781,7 +780,7 @@ /* Resource limiting. */ PROC_LOCK(p); ok = chgptscnt(uid, 1, lim_cur(p, RLIMIT_NPTS)); - error = hrl_alloc(HRL_RESOURCE_PTY, 1); + error = hrl_alloc_proc(p, HRL_RESOURCE_PTY, 1); PROC_UNLOCK(p); if (ok != !error) printf("pts_alloc: ok = %d, error = %d\n", ok, error); From owner-p4-projects@FreeBSD.ORG Sat Aug 15 13:01:02 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 29EBF1065691; Sat, 15 Aug 2009 13:01:02 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E292A106568B for ; Sat, 15 Aug 2009 13:01:01 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id D03758FC3D for ; Sat, 15 Aug 2009 13:01:01 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FD11iS067612 for ; Sat, 15 Aug 2009 13:01:01 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FD11NX067610 for perforce@freebsd.org; Sat, 15 Aug 2009 13:01:01 GMT (envelope-from trasz@freebsd.org) Date: Sat, 15 Aug 2009 13:01:01 GMT Message-Id: <200908151301.n7FD11NX067610@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167361 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 13:01:02 -0000 http://perforce.freebsd.org/chv.cgi?CH=167361 Change 167361 by trasz@trasz_anger on 2009/08/15 13:00:39 Finish implementation of few things, get rid of hrl_{alloc,allocated,free}(). Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/kern/init_main.c#11 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#55 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_loginclass.c#7 edit .. //depot/projects/soc2009/trasz_limits/sys/sys/hrl.h#31 edit .. //depot/projects/soc2009/trasz_limits/sys/sys/loginclass.h#4 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/kern/init_main.c#11 (text+ko) ==== @@ -517,7 +517,7 @@ * Charge root for one process. */ (void)chgproccnt(p->p_ucred->cr_ruidinfo, 1, 0); - error = hrl_alloc(HRL_RESOURCE_MAXPROCESSES, 1); + error = hrl_alloc_proc(p, HRL_RESOURCE_MAXPROCESSES, 1); KASSERT(error == 0, ("hrl_alloc failed")); } SYSINIT(p0init, SI_SUB_INTRINSIC, SI_ORDER_FIRST, proc0_init, NULL); ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#55 (text+ko) ==== @@ -256,8 +256,9 @@ static int64_t hrl_available_resource(const struct proc *p, const struct hrl_rule *rule) { - int resource; - int64_t available; + int resource, i; + int64_t available, found = 0; + struct ucred *cred = p->p_ucred; mtx_assert(&hrl_lock, MA_OWNED); @@ -269,27 +270,30 @@ break; case HRL_SUBJECT_USER: available = rule->hr_amount - - p->p_ucred->cr_ruidinfo->ui_usage.hu_resources[resource]; + cred->cr_ruidinfo->ui_usage.hu_resources[resource]; break; case HRL_SUBJECT_GROUP: if (hrl_group_accounting) { - /* - * XXX - */ - available = INT64_MAX; + for (i = 0; i < cred->cr_ngroups; i++) { + if (cred->cr_gidinfos[i]->gi_gid != + rule->hr_subject_id) + continue; + + found = 1; + available = rule->hr_amount - + cred->cr_gidinfos[i]->gi_usage.hu_resources[resource]; + } + KASSERT(found, ("hrl_available_resource: group not found")); } break; case HRL_SUBJECT_LOGINCLASS: - /* - * XXX - */ + available = rule->hr_amount - + p->p_loginclass->lc_usage.hu_resources[resource]; available = INT64_MAX; break; case HRL_SUBJECT_JAIL: - /* - * XXX - */ - available = INT64_MAX; + available = rule->hr_amount - + cred->cr_prison->pr_usage.hu_resources[resource]; break; default: panic("hrl_compute_available: unknown per %d", @@ -487,6 +491,7 @@ return (error); } p->p_usage.hu_resources[resource] += amount; + p->p_loginclass->lc_usage.hu_resources[resource] += amount; cred = p->p_ucred; cred->cr_ruidinfo->ui_usage.hu_resources[resource] += amount; for (pr = cred->cr_prison; pr != NULL; pr = pr->pr_parent) @@ -550,6 +555,7 @@ } } p->p_usage.hu_resources[resource] = amount; + p->p_loginclass->lc_usage.hu_resources[resource] += diff; cred = p->p_ucred; cred->cr_ruidinfo->ui_usage.hu_resources[resource] += diff; for (pr = cred->cr_prison; pr != NULL; pr = pr->pr_parent) @@ -604,6 +610,7 @@ "%lld for %s (pid %d)", amount, hrl_resource_name(resource), p->p_usage.hu_resources[resource], p->p_comm, p->p_pid)); p->p_usage.hu_resources[resource] -= amount; + p->p_loginclass->lc_usage.hu_resources[resource] -= amount; cred = p->p_ucred; cred->cr_ruidinfo->ui_usage.hu_resources[resource] -= amount; for (pr = cred->cr_prison; pr != NULL; pr = pr->pr_parent) @@ -633,26 +640,7 @@ mtx_unlock(&hrl_lock); } -/* - * Increase allocation of 'resource' for current process by 'amount'. - * Return 0 if it's below limits, or errno, if it's not. - */ -int -hrl_alloc(int resource, uint64_t amount) -{ - return (hrl_alloc_proc(curproc, resource, amount)); -} - -/* - * Decrease allocation of 'resource' for current process by 'amount'. - */ void -hrl_free(int resource, uint64_t amount) -{ - hrl_free_proc(curproc, resource, amount); -} - -void hrl_usage_add(struct hrl_usage *dest, const struct hrl_usage *src) { int i; @@ -754,7 +742,7 @@ } static int -str2id(const char *str, id_t *value) +str2id(const char *str, long *value) { char *end; @@ -1341,6 +1329,16 @@ } static int +hrl_get_usage_lc(struct thread *td, int lcp, struct sbuf **outputsbuf) +{ + struct loginclass *lc = (struct loginclass *)lcp; + + *outputsbuf = hrl_usage_to_sbuf(&lc->lc_usage); + + return (0); +} + +static int hrl_get_usage_jid(struct thread *td, id_t jid, struct sbuf **outputsbuf) { struct prison *pr; @@ -1388,6 +1386,10 @@ error = hrl_get_usage_gid(td, filter->hr_subject_id, &outputsbuf); break; + case HRL_SUBJECT_LOGINCLASS: + error = hrl_get_usage_lc(td, filter->hr_subject_id, + &outputsbuf); + break; case HRL_SUBJECT_JAIL: error = hrl_get_usage_jid(td, filter->hr_subject_id, &outputsbuf); ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_loginclass.c#7 (text+ko) ==== @@ -83,9 +83,17 @@ void loginclass_release(struct loginclass *lc) { + int i; mtx_lock(&loginclasses_lock); if (refcount_release(&lc->lc_refcount)) { + for (i = 0; i < HRL_RESOURCE_MAX; i++) { + if (lc->lc_usage.hu_resources[i] != 0) + printf("loginclass_release: freeing " + "loginclass \"%s\", resource %d = %lld\n", + lc->lc_name, i, + lc->lc_usage.hu_resources[i]); + } LIST_REMOVE(lc, lc_next); mtx_unlock(&loginclasses_lock); free(lc, M_LOGINCLASS); ==== //depot/projects/soc2009/trasz_limits/sys/sys/hrl.h#31 (text+ko) ==== @@ -55,7 +55,7 @@ */ struct hrl_rule { int hr_subject; - id_t hr_subject_id; + long hr_subject_id; int hr_per; int hr_resource; int hr_action; @@ -131,9 +131,6 @@ struct proc; -int hrl_alloc(int object, uint64_t amount); -int hrl_allocated(int object, uint64_t amount); -void hrl_free(int object, uint64_t amount); int hrl_alloc_proc(struct proc *p, int object, uint64_t amount); int hrl_allocated_proc(struct proc *p, int object, uint64_t amount); void hrl_free_proc(struct proc *p, int object, uint64_t amount); ==== //depot/projects/soc2009/trasz_limits/sys/sys/loginclass.h#4 (text+ko) ==== @@ -27,6 +27,8 @@ #ifndef _SYS_LOGINCLASS_H_ #define _SYS_LOGINCLASS_H_ +#include + /* * Exactly one of these structures exists per login class. */ From owner-p4-projects@FreeBSD.ORG Sat Aug 15 13:40:46 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BD4E7106568F; Sat, 15 Aug 2009 13:40:45 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 69AA6106568C for ; Sat, 15 Aug 2009 13:40:45 +0000 (UTC) (envelope-from marinosi@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 57A308FC16 for ; Sat, 15 Aug 2009 13:40:45 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FDejWD071668 for ; Sat, 15 Aug 2009 13:40:45 GMT (envelope-from marinosi@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FDejIA071666 for perforce@freebsd.org; Sat, 15 Aug 2009 13:40:45 GMT (envelope-from marinosi@FreeBSD.org) Date: Sat, 15 Aug 2009 13:40:45 GMT Message-Id: <200908151340.n7FDejIA071666@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marinosi@FreeBSD.org using -f From: Ilias Marinos To: Perforce Change Reviews Cc: Subject: PERFORCE change 167362 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 13:40:46 -0000 http://perforce.freebsd.org/chv.cgi?CH=167362 Change 167362 by marinosi@marinosi_redrum on 2009/08/15 13:40:29 - Addded the appropriate mask for the audit_records to be committed directly to the filesystem. - Added some debugging code. Record processing is working fine from the appropriate workers. Records are not committed to the filesystem yet, because audit_vp is not set up. A new syscall to handle this will be added. Affected files ... .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#24 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_worker.c#10 edit Differences ... ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#24 (text) ==== @@ -794,16 +794,19 @@ */ mtx_init(&(as->audit_mtx), "audit_mtx", NULL, MTX_DEF); + cv_init(&(as->audit_worker_cv), "audit_worker_cv"); + cv_init(&(as->audit_watermark_cv), "audit_watermark_cv"); + cv_init(&(as->audit_fail_cv), "audit_fail_cv"); + /* * For all the != audit_base_slice slices, we should initialize the * extra needed variables, mutexes etc here. */ - if ( as != audit_base_slice ) + if ( as != audit_base_slice ) { + as->audit_enabled = 1; mtx_init(&(as->as_dev_mtx), "as_dev_mtx", NULL, MTX_DEF); + } - cv_init(&(as->audit_worker_cv), "audit_worker_cv"); - cv_init(&(as->audit_watermark_cv), "audit_watermark_cv"); - cv_init(&(as->audit_fail_cv), "audit_fail_cv"); } @@ -866,7 +869,6 @@ struct kaudit_record *ar = NULL; int error; - uprintf("IN audit_slice_commit_rec()\n"); /* * XXXRW: This error value seems never to be used? Possibly we * should validate the record before calling audit_new, and return @@ -907,13 +909,19 @@ * base slice may already be using it to record the write * syscall. */ - uprintf("Calling audit_new().\n"); ar = audit_new(AUE_NULL, td, as); if (ar == NULL) return (1); - uprintf("audit_new() returned a non-NULL ar.\n"); /* + * Set the appropriate mask in order to directly commit the BSM rec to + * the filesystem. + */ + ar->k_ar_commit = 0u; + ar->k_ar_commit |= AR_COMMIT_USER; + ar->k_ar_commit |= AR_PRESELECT_USER_TRAIL; + + /* * Note: it could be that some records initiated while audit was * enabled should still be committed? */ ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_worker.c#10 (text) ==== @@ -223,7 +223,6 @@ } } - uprintf("Ready to write record!\n"); error = vn_rdwr(UIO_WRITE, as->audit_vp, data, len, (off_t)0, UIO_SYSSPACE, IO_APPEND|IO_UNIT, as->audit_cred, NULL, NULL, curthread); if (error == ENOSPC) @@ -321,6 +320,7 @@ if ((ar->k_ar_commit & AR_COMMIT_USER) && (ar->k_ar_commit & AR_PRESELECT_USER_TRAIL)) { AUDIT_WORKER_LOCK_ASSERT(as); + printf("audit_worker_process_record(): Ready to call audit_record_write().\n"); audit_record_write(as, ar->k_udata, ar->k_ulen); } @@ -407,7 +407,7 @@ while (TAILQ_EMPTY(&(as->audit_q))) cv_wait(&(as->audit_worker_cv), &(as->audit_mtx)); - uprintf("audit_worker(): Record in the queue!\n"); + printf("audit_worker(): Record in the queue!\n"); /* * If there are records in the global audit record queue, * transfer them to a thread-local queue and process them @@ -429,8 +429,9 @@ mtx_unlock(&(as->audit_mtx)); while ((ar = TAILQ_FIRST(&ar_worklist))) { TAILQ_REMOVE(&ar_worklist, ar, k_q); - uprintf("audit_worker(): Calling audit_worker_process_record()!\n"); + printf("audit_worker(): Calling audit_worker_process_record()!\n"); audit_worker_process_record(ar, as); + printf("audit_worker(): Returned from audit_worker_process_record()!\n"); audit_free(ar); } mtx_lock(&(as->audit_mtx)); From owner-p4-projects@FreeBSD.ORG Sat Aug 15 13:58:04 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 98BD71065693; Sat, 15 Aug 2009 13:58:04 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5D1851065691 for ; Sat, 15 Aug 2009 13:58:04 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4A2618FC45 for ; Sat, 15 Aug 2009 13:58:04 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FDw4Cv072937 for ; Sat, 15 Aug 2009 13:58:04 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FDw4b0072935 for perforce@freebsd.org; Sat, 15 Aug 2009 13:58:04 GMT (envelope-from trasz@freebsd.org) Date: Sat, 15 Aug 2009 13:58:04 GMT Message-Id: <200908151358.n7FDw4b0072935@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167363 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 13:58:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=167363 Change 167363 by trasz@trasz_anger on 2009/08/15 13:57:32 Rename hrl_{alloc,allocated_free}_proc() to hrl_{alloc,allocated,free}(), fix a few thinkos in the process. Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/compat/linux/linux_misc.c#8 edit .. //depot/projects/soc2009/trasz_limits/sys/compat/svr4/imgact_svr4.c#4 edit .. //depot/projects/soc2009/trasz_limits/sys/compat/svr4/svr4_filio.c#4 edit .. //depot/projects/soc2009/trasz_limits/sys/fs/msdosfs/msdosfs_vnops.c#5 edit .. //depot/projects/soc2009/trasz_limits/sys/fs/nfsclient/nfs_clbio.c#10 edit .. //depot/projects/soc2009/trasz_limits/sys/fs/nwfs/nwfs_io.c#5 edit .. //depot/projects/soc2009/trasz_limits/sys/fs/smbfs/smbfs_io.c#6 edit .. //depot/projects/soc2009/trasz_limits/sys/fs/tmpfs/tmpfs_vnops.c#7 edit .. //depot/projects/soc2009/trasz_limits/sys/fs/unionfs/union_subr.c#5 edit .. //depot/projects/soc2009/trasz_limits/sys/gnu/fs/ext2fs/ext2_readwrite.c#4 edit .. //depot/projects/soc2009/trasz_limits/sys/gnu/fs/xfs/FreeBSD/xfs_vnops.c#5 edit .. //depot/projects/soc2009/trasz_limits/sys/i386/linux/imgact_linux.c#4 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/imgact_aout.c#4 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/imgact_elf.c#4 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/init_main.c#12 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_exit.c#11 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_fork.c#10 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#56 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/tty_pts.c#8 edit .. //depot/projects/soc2009/trasz_limits/sys/nfsclient/nfs_bio.c#11 edit .. //depot/projects/soc2009/trasz_limits/sys/sys/hrl.h#32 edit .. //depot/projects/soc2009/trasz_limits/sys/ufs/ffs/ffs_vnops.c#5 edit .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_map.c#7 edit .. //depot/projects/soc2009/trasz_limits/sys/vm/vm_unix.c#4 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/compat/linux/linux_misc.c#8 (text+ko) ==== @@ -363,7 +363,7 @@ error = ENOMEM; goto cleanup; } - error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_DATASIZE, + error = hrl_allocated(td->td_proc, HRL_RESOURCE_DATASIZE, a_out->a_data + bss_size); if (error) { error = ENOMEM; ==== //depot/projects/soc2009/trasz_limits/sys/compat/svr4/imgact_svr4.c#4 (text+ko) ==== @@ -109,7 +109,7 @@ */ if (a_out->a_text > maxtsiz) return (ENOMEM); - error = hrl_allocated_proc(imgp->proc, HRL_RESOURCE_DATASIZE, + error = hrl_allocated(imgp->proc, HRL_RESOURCE_DATASIZE, a_out->a_data + bss_size); if (error) return (ENOMEM); ==== //depot/projects/soc2009/trasz_limits/sys/compat/svr4/svr4_filio.c#4 (text+ko) ==== @@ -78,7 +78,7 @@ } PROC_UNLOCK(td->td_proc); - hrl_alloc(HRL_RESOURCE_FILEDESCRIPTORS, uap->nfds); + hrl_alloc(td->td_proc, HRL_RESOURCE_FILEDESCRIPTORS, uap->nfds); pa.fds = uap->fds; pa.nfds = uap->nfds; @@ -105,7 +105,7 @@ forget to update it if I add more code */ } done: - hrl_free(HRL_RESOURCE_FILEDESCRIPTORS, uap->nfds); + hrl_free(td->td_proc, HRL_RESOURCE_FILEDESCRIPTORS, uap->nfds); free(pfd, M_TEMP); return error; } ==== //depot/projects/soc2009/trasz_limits/sys/fs/msdosfs/msdosfs_vnops.c#5 (text+ko) ==== @@ -701,7 +701,7 @@ * If they've exceeded their filesize limit, tell them about it. */ if (td != NULL) { - error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_FILESIZE, + error = hrl_allocated(td->td_proc, HRL_RESOURCE_FILESIZE, (uoff_t)uio->uio_offset + uio->uio_resid); if (error) return (EFBIG); ==== //depot/projects/soc2009/trasz_limits/sys/fs/nfsclient/nfs_clbio.c#10 (text+ko) ==== @@ -1055,7 +1055,7 @@ * file servers have no limits, i don't think it matters */ if (p != NULL) { - error = hrl_allocated_proc(p, HRL_RESOURCE_FILESIZE, + error = hrl_allocated(p, HRL_RESOURCE_FILESIZE, (uoff_t)uio->uio_offset + uio->uio_resid); if (error) return (EFBIG); ==== //depot/projects/soc2009/trasz_limits/sys/fs/nwfs/nwfs_io.c#5 (text+ko) ==== @@ -237,7 +237,7 @@ } if (uiop->uio_resid == 0) return 0; if (td != NULL) { - error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_FILESIZE, + error = hrl_allocated(td->td_proc, HRL_RESOURCE_FILESIZE, (uoff_t)uiop->uio_offset + uiop->uio_resid); if (error) return (EFBIG); ==== //depot/projects/soc2009/trasz_limits/sys/fs/smbfs/smbfs_io.c#6 (text+ko) ==== @@ -279,7 +279,7 @@ if (uiop->uio_resid == 0) return 0; if (p != NULL) { - error = hrl_allocated_proc(p, HRL_RESOURCE_FILESIZE, + error = hrl_allocated(p, HRL_RESOURCE_FILESIZE, (uoff_t)uiop->uio_offset + uiop->uio_resid); if (error) return (EFBIG); ==== //depot/projects/soc2009/trasz_limits/sys/fs/tmpfs/tmpfs_vnops.c#7 (text+ko) ==== @@ -659,7 +659,7 @@ return (EFBIG); if (vp->v_type == VREG && td != NULL) { - error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_FILESIZE, + error = hrl_allocated(td->td_proc, HRL_RESOURCE_FILESIZE, (uoff_t)uio->uio_offset + uio->uio_resid); if (error) return (EFBIG); ==== //depot/projects/soc2009/trasz_limits/sys/fs/unionfs/union_subr.c#5 (text+ko) ==== @@ -777,8 +777,10 @@ rootinfo = uifind((uid_t)0); cred = crdup(cnp->cn_cred); chgproccnt(cred->cr_ruidinfo, 1, 0); +#ifdef notyet /* XXX: What about the return value? And what's the purpose of this, anyway? */ hrl_alloc(HRL_RESOURCE_MAXPROCESSES, 1); +#endif change_euid(cred, rootinfo); change_ruid(cred, rootinfo); change_svuid(cred, (uid_t)0); @@ -829,7 +831,9 @@ unionfs_mkshadowdir_abort: cnp->cn_cred = credbk; chgproccnt(cred->cr_ruidinfo, -1, 0); +#ifdef notyet hrl_free(HRL_RESOURCE_MAXPROCESSES, 1); +#endif crfree(cred); return (error); ==== //depot/projects/soc2009/trasz_limits/sys/gnu/fs/ext2fs/ext2_readwrite.c#4 (text+ko) ==== @@ -210,7 +210,7 @@ */ td = uio->uio_td; if (vp->v_type == VREG && td != NULL) { - error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_FILESIZE, + error = hrl_allocated(td->td_proc, HRL_RESOURCE_FILESIZE, (uoff_t)uio->uio_offset + uio->uio_resid); if (error) return (EFBIG); ==== //depot/projects/soc2009/trasz_limits/sys/gnu/fs/xfs/FreeBSD/xfs_vnops.c#5 (text+ko) ==== @@ -600,7 +600,7 @@ #if 0 td = uio->uio_td; if (vp->v_type == VREG && td != NULL) { - error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_FILESIZE, + error = hrl_allocated(td->td_proc, HRL_RESOURCE_FILESIZE, (uoff_t)uio->uio_offset + uio->uio_resid); if (error) return (EFBIG); ==== //depot/projects/soc2009/trasz_limits/sys/i386/linux/imgact_linux.c#4 (text+ko) ==== @@ -107,7 +107,7 @@ */ if (a_out->a_text > maxtsiz) return (ENOMEM); - error = hrl_allocated_proc(imgp->proc, HRL_RESOURCE_DATASIZE, + error = hrl_allocated(imgp->proc, HRL_RESOURCE_DATASIZE, a_out->a_data + bss_size); if (error) return (ENOMEM); ==== //depot/projects/soc2009/trasz_limits/sys/kern/imgact_aout.c#4 (text+ko) ==== @@ -184,7 +184,7 @@ if (/* text can't exceed maximum text size */ a_out->a_text > maxtsiz) return (ENOMEM); - error = hrl_allocated_proc(imgp->proc, HRL_RESOURCE_DATASIZE, + error = hrl_allocated(imgp->proc, HRL_RESOURCE_DATASIZE, a_out->a_data + bss_size); if (error) return (ENOMEM); ==== //depot/projects/soc2009/trasz_limits/sys/kern/imgact_elf.c#4 (text+ko) ==== @@ -790,11 +790,11 @@ */ if (text_size > maxtsiz) return (ENOMEM); - error = hrl_allocated_proc(imgp->proc, HRL_RESOURCE_DATASIZE, + error = hrl_allocated(imgp->proc, HRL_RESOURCE_DATASIZE, data_size); if (error) return (ENOMEM); - error = hrl_allocated_proc(imgp->proc, HRL_RESOURCE_VMEMORYUSE, + error = hrl_allocated(imgp->proc, HRL_RESOURCE_VMEMORYUSE, total_size); if (error) return (ENOMEM); ==== //depot/projects/soc2009/trasz_limits/sys/kern/init_main.c#12 (text+ko) ==== @@ -517,7 +517,7 @@ * Charge root for one process. */ (void)chgproccnt(p->p_ucred->cr_ruidinfo, 1, 0); - error = hrl_alloc_proc(p, HRL_RESOURCE_MAXPROCESSES, 1); + error = hrl_alloc(p, HRL_RESOURCE_MAXPROCESSES, 1); KASSERT(error == 0, ("hrl_alloc failed")); } SYSINIT(p0init, SI_SUB_INTRINSIC, SI_ORDER_FIRST, proc0_init, NULL); ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_exit.c#11 (text+ko) ==== @@ -761,7 +761,7 @@ * Decrement the count of procs running with this uid. */ (void)chgproccnt(p->p_ucred->cr_ruidinfo, -1, 0); - hrl_free_proc(p->p_pptr, HRL_RESOURCE_MAXPROCESSES, 1); + hrl_free(p->p_pptr, HRL_RESOURCE_MAXPROCESSES, 1); hrl_proc_exiting(p); /* @@ -923,9 +923,9 @@ if (child->p_pptr == parent) return; - hrl_free_proc(child->p_pptr, HRL_RESOURCE_MAXPROCESSES, 1); + hrl_free(child->p_pptr, HRL_RESOURCE_MAXPROCESSES, 1); /* XXX: What about return value? */ - hrl_alloc_proc(parent, HRL_RESOURCE_MAXPROCESSES, 1); + hrl_alloc(parent, HRL_RESOURCE_MAXPROCESSES, 1); PROC_LOCK(child->p_pptr); sigqueue_take(child->p_ksi); ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_fork.c#10 (text+ko) ==== @@ -223,7 +223,7 @@ p1 = td->td_proc; - error = hrl_alloc_proc(p1, HRL_RESOURCE_MAXPROCESSES, 1); + error = hrl_alloc(p1, HRL_RESOURCE_MAXPROCESSES, 1); if (error) return (error); @@ -237,7 +237,7 @@ PROC_LOCK(p1); if (thread_single(SINGLE_BOUNDARY)) { PROC_UNLOCK(p1); - hrl_free_proc(p1, HRL_RESOURCE_MAXPROCESSES, 1); + hrl_free(p1, HRL_RESOURCE_MAXPROCESSES, 1); return (ERESTART); } PROC_UNLOCK(p1); @@ -272,7 +272,7 @@ } *procp = NULL; if (error) - hrl_free_proc(p1, HRL_RESOURCE_MAXPROCESSES, 1); + hrl_free(p1, HRL_RESOURCE_MAXPROCESSES, 1); return (error); } @@ -801,7 +801,7 @@ vmspace_free(vm2); uma_zfree(proc_zone, newproc); pause("fork", hz / 2); - hrl_free_proc(p1, HRL_RESOURCE_MAXPROCESSES, 1); + hrl_free(p1, HRL_RESOURCE_MAXPROCESSES, 1); return (error); } ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#56 (text+ko) ==== @@ -168,9 +168,9 @@ /* * XXX: Free these three some other way. */ - hrl_allocated_proc(p, HRL_RESOURCE_FILESIZE, 0); - hrl_allocated_proc(p, HRL_RESOURCE_COREDUMPSIZE, 0); - hrl_allocated_proc(p, HRL_RESOURCE_PTY, 0); + hrl_allocated(p, HRL_RESOURCE_FILESIZE, 0); + hrl_allocated(p, HRL_RESOURCE_COREDUMPSIZE, 0); + hrl_allocated(p, HRL_RESOURCE_PTY, 0); mtx_lock(&hrl_lock); for (i = 0; i < HRL_RESOURCE_MAX; i++) { @@ -471,17 +471,17 @@ * Return 0 if it's below limits, or errno, if it's not. */ int -hrl_alloc_proc(struct proc *p, int resource, uint64_t amount) +hrl_alloc(struct proc *p, int resource, uint64_t amount) { int i, j, error; struct ucred *cred; struct prison *pr; - KASSERT(amount > 0, ("hrl_alloc_proc: invalid amount for %s: %lld", + KASSERT(amount > 0, ("hrl_alloc: invalid amount for %s: %lld", hrl_resource_name(resource), amount)); #if 0 - printf("hrl_alloc_proc: allocating %lld of %s for %s (pid %d)\n", amount, hrl_resource_name(resource), p->p_comm, p->p_pid); + printf("hrl_alloc: allocating %lld of %s for %s (pid %d)\n", amount, hrl_resource_name(resource), p->p_comm, p->p_pid); #endif mtx_lock(&hrl_lock); @@ -531,18 +531,18 @@ * even if it's above the limit. */ int -hrl_allocated_proc(struct proc *p, int resource, uint64_t amount) +hrl_allocated(struct proc *p, int resource, uint64_t amount) { int i, j, error; int64_t diff; struct ucred *cred; struct prison *pr; - KASSERT(amount >= 0, ("hrl_allocated_proc: invalid amount for %s: %lld", + KASSERT(amount >= 0, ("hrl_allocated: invalid amount for %s: %lld", hrl_resource_name(resource), amount)); #if 0 - printf("hrl_allocated_proc: allocated %lld of %s for %s (pid %d)\n", amount, hrl_resource_name(resource), p->p_comm, p->p_pid); + printf("hrl_allocated: allocated %lld of %s for %s (pid %d)\n", amount, hrl_resource_name(resource), p->p_comm, p->p_pid); #endif mtx_lock(&hrl_lock); @@ -591,22 +591,22 @@ * Decrease allocation of 'resource' by 'amount' for process 'p'. */ void -hrl_free_proc(struct proc *p, int resource, uint64_t amount) +hrl_free(struct proc *p, int resource, uint64_t amount) { int i, j; struct ucred *cred; struct prison *pr; - KASSERT(amount > 0, ("hrl_free_proc: invalid amount for %s: %lld", + KASSERT(amount > 0, ("hrl_free: invalid amount for %s: %lld", hrl_resource_name(resource), amount)); #if 0 - printf("hrl_free_proc: freeing %lld of %s for %s (pid %d)\n", amount, hrl_resource_name(resource), p->p_comm, p->p_pid); + printf("hrl_free: freeing %lld of %s for %s (pid %d)\n", amount, hrl_resource_name(resource), p->p_comm, p->p_pid); #endif mtx_lock(&hrl_lock); KASSERT(amount <= p->p_usage.hu_resources[resource], - ("hrl_free_proc: freeing %lld of %s, which is more than allocated " + ("hrl_free: freeing %lld of %s, which is more than allocated " "%lld for %s (pid %d)", amount, hrl_resource_name(resource), p->p_usage.hu_resources[resource], p->p_comm, p->p_pid)); p->p_usage.hu_resources[resource] -= amount; @@ -1741,7 +1741,7 @@ for (i = 0; i < HRL_RESOURCE_MAX; i++) { if (parent->p_usage.hu_resources[i] != 0 && hrl_resource_inheritable(i)) - hrl_allocated_proc(child, i, + hrl_allocated(child, i, parent->p_usage.hu_resources[i]); } ==== //depot/projects/soc2009/trasz_limits/sys/kern/tty_pts.c#8 (text+ko) ==== @@ -724,7 +724,7 @@ /* Resource limiting. */ PROC_LOCK(p); ok = chgptscnt(uid, 1, lim_cur(p, RLIMIT_NPTS)); - error = hrl_alloc_proc(p, HRL_RESOURCE_PTY, 1); + error = hrl_alloc(p, HRL_RESOURCE_PTY, 1); PROC_UNLOCK(p); if (ok != !error) printf("pts_alloc: ok = %d, error = %d\n", ok, error); @@ -735,13 +735,13 @@ unit = alloc_unr(pts_pool); if (unit < 0) { chgptscnt(uid, -1, 0); - hrl_free_proc(p, HRL_RESOURCE_PTY, 1); + hrl_free(p, HRL_RESOURCE_PTY, 1); return (EAGAIN); } if (unit > pts_maxdev) { free_unr(pts_pool, unit); chgptscnt(uid, -1, 0); - hrl_free_proc(p, HRL_RESOURCE_PTY, 1); + hrl_free(p, HRL_RESOURCE_PTY, 1); return (EAGAIN); } @@ -780,7 +780,7 @@ /* Resource limiting. */ PROC_LOCK(p); ok = chgptscnt(uid, 1, lim_cur(p, RLIMIT_NPTS)); - error = hrl_alloc_proc(p, HRL_RESOURCE_PTY, 1); + error = hrl_alloc(p, HRL_RESOURCE_PTY, 1); PROC_UNLOCK(p); if (ok != !error) printf("pts_alloc: ok = %d, error = %d\n", ok, error); ==== //depot/projects/soc2009/trasz_limits/sys/nfsclient/nfs_bio.c#11 (text+ko) ==== @@ -952,7 +952,7 @@ * file servers have no limits, i don't think it matters */ if (p != NULL) { - error = hrl_allocated_proc(p, HRL_RESOURCE_FILESIZE, + error = hrl_allocated(p, HRL_RESOURCE_FILESIZE, (uoff_t)uio->uio_offset + uio->uio_resid); if (error) return (EFBIG); ==== //depot/projects/soc2009/trasz_limits/sys/sys/hrl.h#32 (text+ko) ==== @@ -131,9 +131,9 @@ struct proc; -int hrl_alloc_proc(struct proc *p, int object, uint64_t amount); -int hrl_allocated_proc(struct proc *p, int object, uint64_t amount); -void hrl_free_proc(struct proc *p, int object, uint64_t amount); +int hrl_alloc(struct proc *p, int object, uint64_t amount); +int hrl_allocated(struct proc *p, int object, uint64_t amount); +void hrl_free(struct proc *p, int object, uint64_t amount); void hrl_usage_add(struct hrl_usage *dest, const struct hrl_usage *src); void hrl_usage_subtract(struct hrl_usage *dest, const struct hrl_usage *src); ==== //depot/projects/soc2009/trasz_limits/sys/ufs/ffs/ffs_vnops.c#5 (text+ko) ==== @@ -706,7 +706,7 @@ */ td = uio->uio_td; if (vp->v_type == VREG && td != NULL) { - error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_FILESIZE, + error = hrl_allocated(td->td_proc, HRL_RESOURCE_FILESIZE, (uoff_t)uio->uio_offset + uio->uio_resid); if (error) return (EFBIG); ==== //depot/projects/soc2009/trasz_limits/sys/vm/vm_map.c#7 (text+ko) ==== @@ -415,11 +415,11 @@ pmap_activate(td); vmspace_dofree(vm); } - hrl_allocated_proc(p, HRL_RESOURCE_DATASIZE, 0); - hrl_allocated_proc(p, HRL_RESOURCE_STACKSIZE, 0); - hrl_allocated_proc(p, HRL_RESOURCE_MEMORYUSE, 0); - hrl_allocated_proc(p, HRL_RESOURCE_MEMORYLOCKED, 0); - hrl_allocated_proc(p, HRL_RESOURCE_VMEMORYUSE, 0); + hrl_allocated(p, HRL_RESOURCE_DATASIZE, 0); + hrl_allocated(p, HRL_RESOURCE_STACKSIZE, 0); + hrl_allocated(p, HRL_RESOURCE_MEMORYUSE, 0); + hrl_allocated(p, HRL_RESOURCE_MEMORYLOCKED, 0); + hrl_allocated(p, HRL_RESOURCE_VMEMORYUSE, 0); } /* Acquire reference to vmspace owned by another process. */ ==== //depot/projects/soc2009/trasz_limits/sys/vm/vm_unix.c#4 (text+ko) ==== @@ -85,7 +85,7 @@ base = round_page((vm_offset_t) vm->vm_daddr); old = base + ctob(vm->vm_dsize); if (new > base) { - error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_DATASIZE, + error = hrl_allocated(td->td_proc, HRL_RESOURCE_DATASIZE, new - base); if (error) { error = ENOMEM; @@ -105,7 +105,7 @@ goto done; } if (new > old) { - error = hrl_allocated_proc(td->td_proc, HRL_RESOURCE_VMEMORYUSE, + error = hrl_allocated(td->td_proc, HRL_RESOURCE_VMEMORYUSE, vm->vm_map.size + (new - old)); if (error) { error = ENOMEM; From owner-p4-projects@FreeBSD.ORG Sat Aug 15 14:09:17 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 005161065691; Sat, 15 Aug 2009 14:09:17 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B8B98106568E for ; Sat, 15 Aug 2009 14:09:16 +0000 (UTC) (envelope-from marinosi@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id A63968FC62 for ; Sat, 15 Aug 2009 14:09:16 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FE9Gfc074686 for ; Sat, 15 Aug 2009 14:09:16 GMT (envelope-from marinosi@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FE9GLd074684 for perforce@freebsd.org; Sat, 15 Aug 2009 14:09:16 GMT (envelope-from marinosi@FreeBSD.org) Date: Sat, 15 Aug 2009 14:09:16 GMT Message-Id: <200908151409.n7FE9GLd074684@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marinosi@FreeBSD.org using -f From: Ilias Marinos To: Perforce Change Reviews Cc: Subject: PERFORCE change 167364 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 14:09:17 -0000 http://perforce.freebsd.org/chv.cgi?CH=167364 Change 167364 by marinosi@marinosi_redrum on 2009/08/15 14:09:15 - Added auditctl_slice() system call.(Prototypes - Build tested). Affected files ... .. //depot/projects/soc2009/marinosi_appaudit/src/lib/libc/sys/Symbol.map#4 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_proto.h#4 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_syscall.h#4 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_syscalls.c#4 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_sysent.c#4 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/syscalls.master#4 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/init_sysent.c#4 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/syscalls.c#4 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/syscalls.master#4 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/systrace_args.c#4 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_syscalls.c#12 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/sys/syscall.h#4 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/sys/syscall.mk#4 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/sys/sysproto.h#4 edit Differences ... ==== //depot/projects/soc2009/marinosi_appaudit/src/lib/libc/sys/Symbol.map#4 (text) ==== @@ -358,6 +358,7 @@ symlinkat; unlinkat; auditon_slice; + auditctl_slice; }; FBSDprivate_1.0 { ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_proto.h#4 (text+ko) ==== ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_syscall.h#4 (text+ko) ==== @@ -383,4 +383,5 @@ #define FREEBSD32_SYS_freebsd32_shmctl 512 #define FREEBSD32_SYS_lpathconf 513 #define FREEBSD32_SYS_auditon 514 -#define FREEBSD32_SYS_MAXSYSCALL 515 +#define FREEBSD32_SYS_auditctl_slice 515 +#define FREEBSD32_SYS_MAXSYSCALL 516 ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_syscalls.c#4 (text+ko) ==== @@ -522,4 +522,5 @@ "freebsd32_shmctl", /* 512 = freebsd32_shmctl */ "lpathconf", /* 513 = lpathconf */ "auditon", /* 514 = auditon */ + "auditctl_slice", /* 515 = auditctl_slice */ }; ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/freebsd32_sysent.c#4 (text+ko) ==== @@ -559,4 +559,5 @@ { AS(freebsd32_shmctl_args), (sy_call_t *)freebsd32_shmctl, AUE_SHMCTL, NULL, 0, 0, 0 }, /* 512 = freebsd32_shmctl */ { AS(lpathconf_args), (sy_call_t *)lpathconf, AUE_LPATHCONF, NULL, 0, 0, 0 }, /* 513 = lpathconf */ { AS(auditon_args), (sy_call_t *)auditon, AUE_AUDITON, NULL, 0, 0, 0 }, /* 514 = auditon */ + { AS(auditctl_slice_args), (sy_call_t *)auditctl_slice, AUE_AUDITCTL, NULL, 0, 0, 0 }, /* 515 = auditctl_slice */ }; ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/compat/freebsd32/syscalls.master#4 (text+ko) ==== @@ -903,3 +903,4 @@ 513 AUE_LPATHCONF NOPROTO { int lpathconf(char *path, int name); } 514 AUE_AUDITON NOPROTO { int auditon(int cmd, char *name, \ void *data, u_int length); } +515 AUE_AUDITCTL NOPROTO { int auditctl_slice(char *as_name, char *path); } ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/init_sysent.c#4 (text+ko) ==== @@ -549,4 +549,5 @@ { AS(shmctl_args), (sy_call_t *)lkmressys, AUE_NULL, NULL, 0, 0, 0 }, /* 512 = shmctl */ { AS(lpathconf_args), (sy_call_t *)lpathconf, AUE_LPATHCONF, NULL, 0, 0, 0 }, /* 513 = lpathconf */ { AS(auditon_slice_args), (sy_call_t *)auditon_slice, AUE_AUDITON, NULL, 0, 0, 0 }, /* 514 = auditon_slice */ + { AS(auditctl_slice_args), (sy_call_t *)auditctl_slice, AUE_AUDITCTL, NULL, 0, 0, 0 }, /* 515 = auditctl_slice */ }; ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/syscalls.c#4 (text+ko) ==== @@ -522,4 +522,5 @@ "shmctl", /* 512 = shmctl */ "lpathconf", /* 513 = lpathconf */ "auditon_slice", /* 514 = auditon_slice */ + "auditctl_slice", /* 515 = auditctl_slice */ }; ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/syscalls.master#4 (text+ko) ==== @@ -913,5 +913,6 @@ 513 AUE_LPATHCONF STD { int lpathconf(char *path, int name); } 514 AUE_AUDITON STD { int auditon_slice(int cmd, char *name, \ void *data, u_int length); } +515 AUE_AUDITCTL STD { int auditctl_slice(char *as_name, char *path); } ; Please copy any additions and changes to the following compatability tables: ; sys/compat/freebsd32/syscalls.master ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/kern/systrace_args.c#4 (text+ko) ==== @@ -3082,6 +3082,14 @@ *n_args = 4; break; } + /* auditctl_slice */ + case 515: { + struct auditctl_slice_args *p = params; + uarg[0] = (intptr_t) p->as_name; /* char * */ + uarg[1] = (intptr_t) p->path; /* char * */ + *n_args = 2; + break; + } default: *n_args = 0; break; @@ -8183,6 +8191,19 @@ break; }; break; + /* auditctl_slice */ + case 515: + switch(ndx) { + case 0: + p = "char *"; + break; + case 1: + p = "char *"; + break; + default: + break; + }; + break; default: break; }; ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_syscalls.c#12 (text) ==== @@ -493,6 +493,16 @@ return (error); } +/* + * Syscall to manage audit files. + */ +/* ARGSUSED */ +int +auditctl_slice(struct thread *td, struct auditctl_slice_args *uap) +{ + + return (ENOSYS); +} #else /* !AUDIT */ int @@ -564,4 +574,11 @@ return (ENOSYS); } + +int +auditctl_slice(struct thread *td, struct auditctl_slice_args *uap) +{ + + return (ENOSYS); +} #endif /* AUDIT */ ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/sys/syscall.h#4 (text+ko) ==== @@ -429,4 +429,5 @@ #define SYS_shmctl 512 #define SYS_lpathconf 513 #define SYS_auditon_slice 514 -#define SYS_MAXSYSCALL 515 +#define SYS_auditctl_slice 515 +#define SYS_MAXSYSCALL 516 ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/sys/syscall.mk#4 (text+ko) ==== @@ -377,4 +377,5 @@ msgctl.o \ shmctl.o \ lpathconf.o \ - auditon_slice.o + auditon_slice.o \ + auditctl_slice.o ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/sys/sysproto.h#4 (text+ko) ==== @@ -1647,6 +1647,10 @@ char data_l_[PADL_(void *)]; void * data; char data_r_[PADR_(void *)]; char length_l_[PADL_(u_int)]; u_int length; char length_r_[PADR_(u_int)]; }; +struct auditctl_slice_args { + char as_name_l_[PADL_(char *)]; char * as_name; char as_name_r_[PADR_(char *)]; + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; +}; int nosys(struct thread *, struct nosys_args *); void sys_exit(struct thread *, struct sys_exit_args *); int fork(struct thread *, struct fork_args *); @@ -2006,6 +2010,7 @@ int shmctl(struct thread *, struct shmctl_args *); int lpathconf(struct thread *, struct lpathconf_args *); int auditon_slice(struct thread *, struct auditon_slice_args *); +int auditctl_slice(struct thread *, struct auditctl_slice_args *); #ifdef COMPAT_43 @@ -2679,6 +2684,7 @@ #define SYS_AUE_shmctl AUE_SHMCTL #define SYS_AUE_lpathconf AUE_LPATHCONF #define SYS_AUE_auditon_slice AUE_AUDITON +#define SYS_AUE_auditctl_slice AUE_AUDITCTL #undef PAD_ #undef PADL_ From owner-p4-projects@FreeBSD.ORG Sat Aug 15 15:59:17 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CCB61106568D; Sat, 15 Aug 2009 15:59:17 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 914FF106568B for ; Sat, 15 Aug 2009 15:59:17 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6609D8FC45 for ; Sat, 15 Aug 2009 15:59:17 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FFxHv6083785 for ; Sat, 15 Aug 2009 15:59:17 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FFxHa4083783 for perforce@freebsd.org; Sat, 15 Aug 2009 15:59:17 GMT (envelope-from trasz@freebsd.org) Date: Sat, 15 Aug 2009 15:59:17 GMT Message-Id: <200908151559.n7FFxHa4083783@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167368 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 15:59:18 -0000 http://perforce.freebsd.org/chv.cgi?CH=167368 Change 167368 by trasz@trasz_anger on 2009/08/15 15:58:21 Fix use after free - process_exit eventhandler gets invoked a little too early for my needs. Also, don't crash on 'hrl -u c:'. Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_exit.c#12 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_fork.c#11 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#57 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_loginclass.c#8 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_exit.c#12 (text+ko) ==== @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include @@ -765,7 +766,7 @@ hrl_proc_exiting(p); /* - * Free credentials, arguments, and sigacts. + * Free credentials, arguments, sigacts and loginclass. */ crfree(p->p_ucred); p->p_ucred = NULL; @@ -773,6 +774,8 @@ p->p_args = NULL; sigacts_free(p->p_sigacts); p->p_sigacts = NULL; + loginclass_release(p->p_loginclass); + p->p_loginclass = NULL; /* * Do any thread-system specific cleanups. ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_fork.c#11 (text+ko) ==== @@ -51,6 +51,7 @@ #include #include #include +#include #include #include #include @@ -478,6 +479,9 @@ /* Tell the prison that we exist. */ prison_proc_hold(p2->p_ucred->cr_prison); + /* Loginclass might want to know too. */ + loginclass_acquire(p2->p_loginclass); + PROC_UNLOCK(p2); /* ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#57 (text+ko) ==== @@ -1331,8 +1331,12 @@ static int hrl_get_usage_lc(struct thread *td, int lcp, struct sbuf **outputsbuf) { - struct loginclass *lc = (struct loginclass *)lcp; + struct loginclass *lc; + + if (lcp == HRL_SUBJECT_ID_UNDEFINED) + return (EINVAL); + lc = (struct loginclass *)lcp; *outputsbuf = hrl_usage_to_sbuf(&lc->lc_usage); return (0); ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_loginclass.c#8 (text+ko) ==== @@ -228,29 +228,8 @@ } static void -lc_proc_fork(void *arg __unused, struct proc *parent, struct proc *child, - int flags __unused) -{ - - PROC_LOCK(child); - loginclass_acquire(child->p_loginclass); - PROC_UNLOCK(child); -} - -static void -lc_proc_exit(void *arg __unused, struct proc *p) -{ - - PROC_LOCK(p); - loginclass_release(p->p_loginclass); - PROC_UNLOCK(p); -} - -static void lc_init(void) { mtx_init(&loginclasses_lock, "loginclasses lock", NULL, MTX_DEF); - EVENTHANDLER_REGISTER(process_fork, lc_proc_fork, NULL, EVENTHANDLER_PRI_ANY); - EVENTHANDLER_REGISTER(process_exit, lc_proc_exit, NULL, EVENTHANDLER_PRI_ANY); } From owner-p4-projects@FreeBSD.ORG Sat Aug 15 16:07:26 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B2DCE106568C; Sat, 15 Aug 2009 16:07:26 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 77738106568E for ; Sat, 15 Aug 2009 16:07:26 +0000 (UTC) (envelope-from fangwang@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6690A8FC3D for ; Sat, 15 Aug 2009 16:07:26 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FG7Qi7085400 for ; Sat, 15 Aug 2009 16:07:26 GMT (envelope-from fangwang@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FG7Qxn085398 for perforce@freebsd.org; Sat, 15 Aug 2009 16:07:26 GMT (envelope-from fangwang@FreeBSD.org) Date: Sat, 15 Aug 2009 16:07:26 GMT Message-Id: <200908151607.n7FG7Qxn085398@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fangwang@FreeBSD.org using -f From: Fang Wang To: Perforce Change Reviews Cc: Subject: PERFORCE change 167369 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 16:07:26 -0000 http://perforce.freebsd.org/chv.cgi?CH=167369 Change 167369 by fangwang@fangwang_utobsd on 2009/08/15 16:06:25 Adjust macro order. Affected files ... .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_timer.h#8 edit Differences ... ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_timer.h#8 (text+ko) ==== @@ -117,8 +117,8 @@ */ #define TCPTV_MIN ( hz/33 ) /* minimum allowable value */ #define TCPTV_CPU_VAR ( hz/5 ) /* cpu variance allowed (200ms) */ +#define TCP_REXMTMAX 64 /* max allowable REXMT value in seconds */ #define TCPTV_REXMTMAX ( TCP_REXMTMAX*hz ) /* max allowable REXMT value */ -#define TCP_REXMTMAX 64 /* max allowable REXMT value in seconds */ #define TCPTV_TWTRUNC 8 /* RTO factor to truncate TW */ #define TCP_LINGERTIME 120 /* linger at most 2 minutes */ From owner-p4-projects@FreeBSD.ORG Sat Aug 15 16:30:52 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B80351065693; Sat, 15 Aug 2009 16:30:52 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7CC861065691 for ; Sat, 15 Aug 2009 16:30:52 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 528D18FC5B for ; Sat, 15 Aug 2009 16:30:52 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FGUq7l087176 for ; Sat, 15 Aug 2009 16:30:52 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FGUqoc087174 for perforce@freebsd.org; Sat, 15 Aug 2009 16:30:52 GMT (envelope-from trasz@freebsd.org) Date: Sat, 15 Aug 2009 16:30:52 GMT Message-Id: <200908151630.n7FGUqoc087174@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167371 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 16:30:52 -0000 http://perforce.freebsd.org/chv.cgi?CH=167371 Change 167371 by trasz@trasz_anger on 2009/08/15 16:30:38 Fix up class resource usage after setloginclass(2). Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_loginclass.c#9 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_loginclass.c#9 (text+ko) ==== @@ -202,6 +202,8 @@ PROC_LOCK(p); oldlc = p->p_loginclass; p->p_loginclass = newlc; + hrl_usage_subtract(&oldlc->lc_usage, &p->p_usage); + hrl_usage_add(&newlc->lc_usage, &p->p_usage); hrl_proc_loginclass_changed(p); PROC_UNLOCK(p); From owner-p4-projects@FreeBSD.ORG Sat Aug 15 17:14:40 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C07871065696; Sat, 15 Aug 2009 17:14:40 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 84CA31065693 for ; Sat, 15 Aug 2009 17:14:40 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 735478FC51 for ; Sat, 15 Aug 2009 17:14:40 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FHEejh001551 for ; Sat, 15 Aug 2009 17:14:40 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FHEegC001549 for perforce@freebsd.org; Sat, 15 Aug 2009 17:14:40 GMT (envelope-from trasz@freebsd.org) Date: Sat, 15 Aug 2009 17:14:40 GMT Message-Id: <200908151714.n7FHEegC001549@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 167373 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 17:14:41 -0000 http://perforce.freebsd.org/chv.cgi?CH=167373 Change 167373 by trasz@trasz_anger on 2009/08/15 17:14:28 Refactor things. Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#58 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_loginclass.c#10 edit .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_prot.c#21 edit .. //depot/projects/soc2009/trasz_limits/sys/sys/hrl.h#33 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#58 (text+ko) ==== @@ -640,7 +640,7 @@ mtx_unlock(&hrl_lock); } -void +static void hrl_usage_add(struct hrl_usage *dest, const struct hrl_usage *src) { int i; @@ -662,7 +662,7 @@ mtx_unlock(&hrl_lock); } -void +static void hrl_usage_subtract(struct hrl_usage *dest, const struct hrl_usage *src) { int i; @@ -1637,13 +1637,14 @@ } /* - * Called after loginclass change, to adjust p_limits. + * Called just before loginclass change, to adjust p_limits and lc_usage. */ void -hrl_proc_loginclass_changed(struct proc *p) +hrl_proc_loginclass_changing(struct proc *p, struct loginclass *newlc) { int error; struct hrl_limit *limit; + struct loginclass *lc = p->p_loginclass; PROC_LOCK_ASSERT(p, MA_OWNED); @@ -1664,12 +1665,18 @@ /* * Now add rules for the current loginclass. */ - LIST_FOREACH(limit, &p->p_loginclass->lc_limits, hl_next) { + LIST_FOREACH(limit, &newlc->lc_limits, hl_next) { error = hrl_limit_add_locked(&p->p_limits, limit->hl_rule); KASSERT(error == 0, ("XXX: better error handling needed")); } mtx_unlock(&hrl_lock); + + /* + * Adjust loginclass resource usage information. + */ + hrl_usage_subtract(&lc->lc_usage, &p->p_usage); + hrl_usage_add(&newlc->lc_usage, &p->p_usage); } /* @@ -1681,11 +1688,11 @@ * XXX: What about jails? */ void -hrl_proc_ucred_changed(struct proc *p) +hrl_proc_ucred_changing(struct proc *p, struct ucred *newcred) { int error, i; - struct ucred *cred = p->p_ucred; struct hrl_limit *limit; + struct uidinfo *olduip, *newuip; PROC_LOCK_ASSERT(p, MA_OWNED); @@ -1707,14 +1714,14 @@ /* * Now add rules for the current user credentials. */ - LIST_FOREACH(limit, &cred->cr_ruidinfo->ui_limits, hl_next) { + LIST_FOREACH(limit, &newcred->cr_ruidinfo->ui_limits, hl_next) { error = hrl_limit_add_locked(&p->p_limits, limit->hl_rule); KASSERT(error == 0, ("XXX: better error handling needed")); } if (hrl_group_accounting) { - for (i = 0; i < cred->cr_ngroups; i++) { + for (i = 0; i < newcred->cr_ngroups; i++) { LIST_FOREACH(limit, - &cred->cr_gidinfos[i]->gi_limits, hl_next) { + &newcred->cr_gidinfos[i]->gi_limits, hl_next) { error = hrl_limit_add_locked(&p->p_limits, limit->hl_rule); KASSERT(error == 0, @@ -1724,6 +1731,28 @@ } mtx_unlock(&hrl_lock); + + /* + * Fix up per-ruid resource consumption. + */ + newuip = newcred->cr_ruidinfo; + olduip = p->p_ucred->cr_ruidinfo; + if (newuip != olduip) { + hrl_usage_subtract(&olduip->ui_usage, &p->p_usage); + hrl_usage_add(&newuip->ui_usage, &p->p_usage); + } + + /* + * Fix up per-group resource consumption. + */ + if (hrl_group_accounting) { + for (i = 0; i < p->p_ucred->cr_ngroups; i++) + hrl_usage_subtract( + &p->p_ucred->cr_gidinfos[i]->gi_usage, &p->p_usage); + for (i = 0; i < newcred->cr_ngroups; i++) + hrl_usage_add( + &newcred->cr_gidinfos[i]->gi_usage, &p->p_usage); + } } /* ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_loginclass.c#10 (text+ko) ==== @@ -200,11 +200,9 @@ newlc = loginclass_find(lcname); PROC_LOCK(p); + hrl_proc_loginclass_changing(p, newlc); oldlc = p->p_loginclass; p->p_loginclass = newlc; - hrl_usage_subtract(&oldlc->lc_usage, &p->p_usage); - hrl_usage_add(&newlc->lc_usage, &p->p_usage); - hrl_proc_loginclass_changed(p); PROC_UNLOCK(p); loginclass_release(oldlc); ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_prot.c#21 (text+ko) ==== @@ -2190,33 +2190,10 @@ void change_cred(struct proc *p, struct ucred *newcred) { - int i; - struct uidinfo *olduip, *newuip; - PROC_LOCK_ASSERT(p, MA_OWNED); - /* - * Fix up per-ruid resource consumption. - */ - newuip = newcred->cr_ruidinfo; - olduip = p->p_ucred->cr_ruidinfo; - if (newuip != olduip) { - hrl_usage_subtract(&olduip->ui_usage, &p->p_usage); - hrl_usage_add(&newuip->ui_usage, &p->p_usage); - } - - /* - * Fix up per-group resource consumption. - */ - if (hrl_group_accounting) { - for (i = 0; i < p->p_ucred->cr_ngroups; i++) - hrl_usage_subtract(&p->p_ucred->cr_gidinfos[i]->gi_usage, &p->p_usage); - for (i = 0; i < newcred->cr_ngroups; i++) - hrl_usage_add(&newcred->cr_gidinfos[i]->gi_usage, &p->p_usage); - } - + hrl_proc_ucred_changing(p, newcred); p->p_ucred = newcred; - hrl_proc_ucred_changed(p); } /*- ==== //depot/projects/soc2009/trasz_limits/sys/sys/hrl.h#33 (text+ko) ==== @@ -129,18 +129,18 @@ #ifdef _KERNEL +struct loginclass; struct proc; +struct ucred; int hrl_alloc(struct proc *p, int object, uint64_t amount); int hrl_allocated(struct proc *p, int object, uint64_t amount); void hrl_free(struct proc *p, int object, uint64_t amount); -void hrl_usage_add(struct hrl_usage *dest, const struct hrl_usage *src); -void hrl_usage_subtract(struct hrl_usage *dest, const struct hrl_usage *src); void hrl_proc_exiting(struct proc *p); -void hrl_proc_loginclass_changed(struct proc *p); -void hrl_proc_ucred_changed(struct proc *p); +void hrl_proc_loginclass_changing(struct proc *p, struct loginclass *newlc); +void hrl_proc_ucred_changing(struct proc *p, struct ucred *newcred); struct hrl_rule *hrl_rule_alloc(int flags); struct hrl_rule *hrl_rule_duplicate(const struct hrl_rule *rule, int flags); From owner-p4-projects@FreeBSD.ORG Sat Aug 15 18:10:42 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 96F171065691; Sat, 15 Aug 2009 18:10:42 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 43509106568F for ; Sat, 15 Aug 2009 18:10:42 +0000 (UTC) (envelope-from alepulver@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 3214F8FC43 for ; Sat, 15 Aug 2009 18:10:42 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FIAfN0006805 for ; Sat, 15 Aug 2009 18:10:41 GMT (envelope-from alepulver@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FIAf87006803 for perforce@freebsd.org; Sat, 15 Aug 2009 18:10:41 GMT (envelope-from alepulver@freebsd.org) Date: Sat, 15 Aug 2009 18:10:41 GMT Message-Id: <200908151810.n7FIAf87006803@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to alepulver@freebsd.org using -f From: Alejandro Pulver To: Perforce Change Reviews Cc: Subject: PERFORCE change 167375 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 18:10:42 -0000 http://perforce.freebsd.org/chv.cgi?CH=167375 Change 167375 by alepulver@alepulver_deimos on 2009/08/15 18:10:10 - Fix name in GPLv2 definition (was set to groups). - Make LICENSE_GROUPS and LICENSE_GROUPS_xxx optional as documented. - Minor adjustments in bsd.licenses.mk. Affected files ... .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.licenses.db.mk#5 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.licenses.mk#10 edit .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/test-license-1/Makefile#5 edit Differences ... ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.licenses.db.mk#5 (text+ko) ==== @@ -72,7 +72,7 @@ _LICENSE_GROUPS_CDDL= FSF OSI _LICENSE_NAME_GPLv2= GNU General Public License version 2 -_LICENSE_NAME_GPLv2= FSF GPL OSI +_LICENSE_GROUPS_GPLv2= FSF GPL OSI _LICENSE_NAME_GPLv3= GNU General Public License version 3 _LICENSE_GROUPS_GPLv3= FSF GPL OSI ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.licenses.mk#10 (text+ko) ==== @@ -240,8 +240,8 @@ . for var in ${_LICENSE_LIST_PORT_VARS} . if defined(LICENSE_${var}) _LICENSE_${var}= ${LICENSE_${var}} -. else -_LICENSE_ERROR?= for a new/unknown license, defining LICENSE_${var} is mandatory (otherwise use a known LICENSE) +. elif !defined(_LICENSE_${var}) +_LICENSE_ERROR?= for unknown licenses, defining LICENSE_${var} is mandatory (otherwise use a known LICENSE) . endif . endfor # Check LICENSE_PERMS for invalid, ambiguous and duplicate components @@ -315,8 +315,8 @@ . for var in ${_LICENSE_LIST_PORT_VARS} . if defined(LICENSE_${var}_${lic}) _LICENSE_${var}_${lic}= ${LICENSE_${var}_${lic}} -. else -_LICENSE_ERROR?= for a new/unknown license, defining LICENSE_${var}_${lic} is mandatory (otherwise use a known LICENSE) +. elif !defined(_LICENSE_${var}_${lic}) +_LICENSE_ERROR?= for unknown licenses, defining LICENSE_${var}_${lic} is mandatory (otherwise use a known LICENSE) . endif . endfor # Check LICENSE_PERMS for invalid, ambiguous and duplicate components @@ -552,7 +552,7 @@ . if ${_LICENSE_STATUS} == "rejected" @${ECHO_MSG} "===> License rejected by the user" @${ECHO_MSG} - @${ECHO_MSG} "If you want to install this port make sure the following license/s are not present in LICENSES_REJECTED, either in make arguments or /etc/make.conf: ${_LICENSE}. Also check LICENSES_GROUPS_REJECTED in case they contain a group this license/s belong to." | ${FMT} + @${ECHO_MSG} "If you want to install this port make sure the following license(s) are not present in LICENSES_REJECTED, either in make arguments or /etc/make.conf: ${_LICENSE}. Also check LICENSES_GROUPS_REJECTED in case they contain a group this license(s) belong to." | ${FMT} @${ECHO_MSG} @exit 1 . elif ${_LICENSE_STATUS} == "accepted" @@ -657,7 +657,8 @@ @${ECHO_MSG} . if ${_LICENSE_COMB} == "single" @${ECHO_MSG} "To install the port you must agree to the license: ${_LICENSE} (${_LICENSE_NAME})." | ${FMT} - @${ECHO_MSG} "You can view the license at ${_LICENSE_FILE}." + @${ECHO_MSG} + @${ECHO_MSG} "You can view the license at ${_LICENSE_FILE:S/${WRKDIR}\//${WRKDIR:T}\//}." . elif ${_LICENSE_COMB} == "dual" @${ECHO_MSG} "To install the port you must agree to any of the following licenses:" . elif ${_LICENSE_COMB} == "multi" @@ -668,9 +669,9 @@ . for lic in ${_LICENSE_TO_ASK} @${ECHO_MSG} "- ${lic} (${_LICENSE_NAME_${lic}}), available at ${_LICENSE_FILE_${lic}:S/${WRKDIR}\//${WRKDIR:T}\//}" . endfor + @${ECHO_MSG} . endif - @${ECHO_MSG} - @${ECHO_MSG} "If you agree with the corresponding license/s, add them to LICENSES_ACCEPTED either in make arguments or /etc/make.conf." | ${FMT} + @${ECHO_MSG} "If you agree with the corresponding license(s), add them to LICENSES_ACCEPTED either in make arguments or /etc/make.conf." | ${FMT} @${ECHO_MSG} @exit 1 . endif ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/test-license-1/Makefile#5 (text+ko) ==== @@ -17,8 +17,11 @@ NO_BUILD= yes NO_WRKSUBDIR= yes -LICENSE= GPLv2 BSD CDDL +LICENSE= GPLv2 EULA LICENSE_COMB= multi +LICENSE_NAME_EULA= End User License Agreement for copyrighted data +LICENSE_PERMS_EULA= pkg-mirror dist-mirror +LICENSE_TEXT_EULA= Commercial redistribution is not allowed, either in source or binary form #LICENSE= MyLic #LICENSE= Test1 MyLic Test2 #LICENSE_COMB= dual From owner-p4-projects@FreeBSD.ORG Sat Aug 15 19:08:46 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0D98D106568F; Sat, 15 Aug 2009 19:08:46 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C483D1065692 for ; Sat, 15 Aug 2009 19:08:45 +0000 (UTC) (envelope-from bz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 9B58D8FC5A for ; Sat, 15 Aug 2009 19:08:45 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FJ8jVb012103 for ; Sat, 15 Aug 2009 19:08:45 GMT (envelope-from bz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FJ8jfd012101 for perforce@freebsd.org; Sat, 15 Aug 2009 19:08:45 GMT (envelope-from bz@freebsd.org) Date: Sat, 15 Aug 2009 19:08:45 GMT Message-Id: <200908151908.n7FJ8jfd012101@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bz@freebsd.org using -f From: "Bjoern A. Zeeb" To: Perforce Change Reviews Cc: Subject: PERFORCE change 167377 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 19:08:46 -0000 http://perforce.freebsd.org/chv.cgi?CH=167377 Change 167377 by bz@bz_zoo on 2009/08/15 19:08:34 - Instead of expecting an if_announcemsghdr expect the rt_msghdr. Instead of transporting the direction in ifan_what use rtm_seq now. - Remove some dead code. - Make debugging printfs for 'after n->m_len' work on 64bit machines as well using the correct length modifier with printf. Affected files ... .. //depot/projects/soc2009/anchie_send/src/sys/net/rtsock.c#15 edit Differences ... ==== //depot/projects/soc2009/anchie_send/src/sys/net/rtsock.c#15 (text+ko) ==== @@ -524,17 +524,12 @@ case RTM_SND: printf("RTM_SND!\n"); - struct if_announcemsghdr *ifan; - ifan = mtod(m, struct if_announcemsghdr *); - switch (ifan->ifan_what) { + switch (rtm->rtm_seq) { case RTM_SND_IN: ifp = ifnet_byindex(rtm->rtm_index); if (ifp) { - m_adj(m, sizeof (struct if_announcemsghdr)); -#if 0 - m->m_data += sizeof (struct if_announcemsghdr); -#endif + m_adj(m, sizeof (struct rt_msghdr)); printf("rtm->rtm_index = %d\n", rtm->rtm_index); send_output_hook(m, ifp, SND_IN); } else { @@ -545,11 +540,8 @@ case RTM_SND_OUT: ifp = ifnet_byindex(rtm->rtm_index); if (ifp) { - m_adj(m, sizeof (struct if_announcemsghdr)); + m_adj(m, sizeof (struct rt_msghdr)); printf("if_index = %u\n", ifp->if_index); -#if 0 - m->m_data += sizeof (struct if_announcemsghdr); -#endif send_output_hook(m, ifp, SND_OUT); } else printf("route_output: ifp == NULL"); @@ -1280,12 +1272,12 @@ bcopy(data, mtod(n, void *), data_len); printf("rtsock.c: rt_msg3(), nakon bcopy!\n"); n->m_len = data_len; - printf("Nakon n->m_len = data_len = %d;\n", data_len); + printf("Nakon n->m_len = data_len = %zu;\n", data_len); m->m_next = n; printf("Nakon m->m_next = n;\n"); } else if (data_len > 0) { printf("rtsock.c: rt_msg3(), prije bcopy 2!\n"); - printf("data_len = %d\n", data_len); + printf("data_len = %zu\n", data_len); bcopy(data, mtod(m, u_int8_t *) + m->m_len, data_len); printf("rtsock.c: rt_msg3(), nakon bcopy 2!\n"); m->m_len += data_len; From owner-p4-projects@FreeBSD.ORG Sat Aug 15 19:26:05 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4F5A1106568D; Sat, 15 Aug 2009 19:26:05 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 140201065672 for ; Sat, 15 Aug 2009 19:26:05 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 041F08FC15 for ; Sat, 15 Aug 2009 19:26:05 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FJQ4Qj013448 for ; Sat, 15 Aug 2009 19:26:04 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FJQ4rf013444 for perforce@freebsd.org; Sat, 15 Aug 2009 19:26:04 GMT (envelope-from zec@fer.hr) Date: Sat, 15 Aug 2009 19:26:04 GMT Message-Id: <200908151926.n7FJQ4rf013444@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 167378 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 19:26:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=167378 Change 167378 by zec@zec_tpx32 on 2009/08/15 19:25:40 Don't use proc0's creds, use mount's creds instead in nfsclient. Submitted by: Rick Macklem Affected files ... .. //depot/projects/vimage-commit2/src/sys/fs/nfsclient/nfs_clvnops.c#9 edit Differences ... ==== //depot/projects/vimage-commit2/src/sys/fs/nfsclient/nfs_clvnops.c#9 (text+ko) ==== @@ -1405,8 +1405,8 @@ } mtx_unlock(&dnp->n_mtx); - CURVNET_SET(P_TO_VNET(&proc0)); #ifdef INET + CURVNET_SET(CRED_TO_VNET(cnp->cn_cred)); IN_IFADDR_RLOCK(); if (!TAILQ_EMPTY(&V_in_ifaddrhead)) cverf.lval[0] = IA_SIN(TAILQ_FIRST(&V_in_ifaddrhead))->sin_addr.s_addr; @@ -1415,9 +1415,9 @@ cverf.lval[0] = create_verf; #ifdef INET IN_IFADDR_RUNLOCK(); + CURVNET_RESTORE(); #endif cverf.lval[1] = ++create_verf; - CURVNET_RESTORE(); error = nfsrpc_create(dvp, cnp->cn_nameptr, cnp->cn_namelen, vap, cverf, fmode, cnp->cn_cred, cnp->cn_thread, &dnfsva, &nfsva, &nfhp, &attrflag, &dattrflag, NULL); From owner-p4-projects@FreeBSD.ORG Sat Aug 15 21:00:48 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C43AE1065693; Sat, 15 Aug 2009 21:00:48 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 872F7106568E for ; Sat, 15 Aug 2009 21:00:48 +0000 (UTC) (envelope-from marinosi@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 750DB8FC62 for ; Sat, 15 Aug 2009 21:00:48 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FL0mc3031107 for ; Sat, 15 Aug 2009 21:00:48 GMT (envelope-from marinosi@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FL0mSl031105 for perforce@freebsd.org; Sat, 15 Aug 2009 21:00:48 GMT (envelope-from marinosi@FreeBSD.org) Date: Sat, 15 Aug 2009 21:00:48 GMT Message-Id: <200908152100.n7FL0mSl031105@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marinosi@FreeBSD.org using -f From: Ilias Marinos To: Perforce Change Reviews Cc: Subject: PERFORCE change 167379 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 21:00:49 -0000 http://perforce.freebsd.org/chv.cgi?CH=167379 Change 167379 by marinosi@marinosi_redrum on 2009/08/15 21:00:30 - Implemented auditctl_slice_internal() function which is used from auditctl() and auditctl_slice() system calls. - Implemented the necessary code for auditctl_slice() syscall. - Improved audit_slice_commit_rec().( added a new arg, handling the records etc). - Added some debugging code. With this commit the audit slices system is functional! Records are successfully submitted to the devices, processed from the appropriate workers and committed to the filesystem! Affected files ... .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#25 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.c#11 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.h#17 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_syscalls.c#13 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_worker.c#11 edit Differences ... ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#25 (text) ==== @@ -70,6 +70,7 @@ #include #include +#include #include @@ -759,7 +760,7 @@ * XXX: As M_ZERO flag is used during allocation, some of the * following initilization is pointless and should be removed. */ - as->audit_enabled = 1; + as->audit_enabled = 0; as->audit_suspended = 0; as->audit_panic_on_write_fail = 0; as->audit_fail_stop = 0; @@ -804,6 +805,7 @@ */ if ( as != audit_base_slice ) { as->audit_enabled = 1; + as->perms = 0700; mtx_init(&(as->as_dev_mtx), "as_dev_mtx", NULL, MTX_DEF); } @@ -864,9 +866,10 @@ * code. */ int -audit_slice_commit_rec(struct thread *td, void *rec, struct audit_slice *as) +audit_slice_commit_rec(struct thread *td, void *rec, u_int len, struct audit_slice *as) { struct kaudit_record *ar = NULL; + void *bsm = NULL; int error; /* @@ -887,6 +890,13 @@ } /* + * Allocate the appropriate memory for the record and fetch it. + * The record will be free'd by audit_record_dtor(). + */ + bsm = (void *) malloc(len, M_TEMP, M_WAITOK | M_ZERO); + memmove(bsm, rec, len); + + /* * XXXRW: Audit slices other than the base should probably never * touch td->td_ar, so the below should unconditionally allocate the * container record. @@ -922,6 +932,12 @@ ar->k_ar_commit |= AR_PRESELECT_USER_TRAIL; /* + * Update the pointer to the actual record and set the length. + */ + ar->k_udata = bsm; + ar->k_ulen = len; + + /* * Note: it could be that some records initiated while audit was * enabled should still be committed? */ @@ -1455,3 +1471,77 @@ return (0); } + +/* + * auditon_slice_internal() performs the actual work for auditon_slice(2) and + * auditon(2) system calls. + */ +int +auditctl_slice_internal(struct thread *td, char *as_name, char *path) +{ + + struct nameidata nd; + struct ucred *cred = NULL; + struct vnode *vp = NULL; + struct audit_slice *as = NULL; + int error = 0; + int flags, vfslocked; + + /* + * Find the slice we should operate on. + */ + as = audit_slice_lookup(as_name); + if (as == NULL) + return (EINVAL); + /* + * If a path is specified, open the replacement vnode, perform + * validity checks, and grab another reference to the current + * credential. + * + * On Darwin, a NULL path argument is also used to disable audit. + */ + if (path == NULL) + return (EINVAL); + + NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | MPSAFE | AUDITVNODE1, + UIO_USERSPACE, path, td); + flags = AUDIT_OPEN_FLAGS; + error = vn_open(&nd, &flags, 0, NULL); + if (error) + return (error); + vfslocked = NDHASGIANT(&nd); + vp = nd.ni_vp; +#ifdef MAC + error = mac_system_check_auditctl(td->td_ucred, vp); + VOP_UNLOCK(vp, 0); + if (error) { + vn_close(vp, AUDIT_CLOSE_FLAGS, td->td_ucred, td); + VFS_UNLOCK_GIANT(vfslocked); + return (error); + } +#else + VOP_UNLOCK(vp, 0); +#endif + NDFREE(&nd, NDF_ONLY_PNBUF); + if (vp->v_type != VREG) { + vn_close(vp, AUDIT_CLOSE_FLAGS, td->td_ucred, td); + VFS_UNLOCK_GIANT(vfslocked); + return (EINVAL); + } + VFS_UNLOCK_GIANT(vfslocked); + cred = td->td_ucred; + crhold(cred); + + /* + * XXXAUDIT: Should audit_suspended actually be cleared by + * audit_worker? + */ + as->audit_suspended = 0; + /* What is the need of this? */ + if ( as == audit_base_slice ) + audit_suspended = as->audit_suspended; + + audit_rotate_vnode(as, cred, vp); + + return (error); +} ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.c#11 (text+ko) ==== @@ -236,7 +236,7 @@ // if (error) // break; - audit_slice_commit_rec( uio->uio_td, audit_slice_dev_buf, as); + audit_slice_commit_rec( uio->uio_td, audit_slice_dev_buf, c, as); // uprintf("Size to be fetched: %d\n", uio->uio_resid); // c = MIN((int)uio->uio_resid, PAGE_SIZE); @@ -294,9 +294,6 @@ audit_slice_cdev_init(struct audit_slice *as) { - - as->perms = 0700; - /* Create the special device file. */ as->as_dev = make_dev(&audit_slice_cdevsw, as->unit, as->uid, as->gid, as->perms, "auditslice/%s", as->as_name); ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_slice.h#17 (text+ko) ==== @@ -193,10 +193,10 @@ void audit_slice_create(char *name); int audit_slice_destroy(struct audit_slice *as); void audit_slice_cdev_init(struct audit_slice *as); -int audit_slice_commit_rec(struct thread *td, void *rec, +int audit_slice_commit_rec(struct thread *td, void *rec, u_int len, struct audit_slice *as); struct audit_slice *audit_slice_lookup(char *as_name); int auditon_slice_internal(struct thread *td, int cmd, char *as_name, void *data, u_int length); - +int auditctl_slice_internal(struct thread *td, char *as_name, char *path); #endif /* ! _SECURITY_AUDIT_SLICE_H_ */ ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_syscalls.c#13 (text) ==== @@ -427,11 +427,9 @@ int auditctl(struct thread *td, struct auditctl_args *uap) { - struct nameidata nd; - struct ucred *cred; - struct vnode *vp; + int error = 0; - int flags, vfslocked; + int ret; if (jailed(td->td_ucred)) return (ENOSYS); @@ -439,58 +437,12 @@ if (error) return (error); - vp = NULL; - cred = NULL; - /* - * If a path is specified, open the replacement vnode, perform - * validity checks, and grab another reference to the current - * credential. - * - * On Darwin, a NULL path argument is also used to disable audit. + * Call audit_slice_internal() to manage tha audit file.auditctl() + * always selects the base slice to operate on. */ - if (uap->path == NULL) - return (EINVAL); - - NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF | MPSAFE | AUDITVNODE1, - UIO_USERSPACE, uap->path, td); - flags = AUDIT_OPEN_FLAGS; - error = vn_open(&nd, &flags, 0, NULL); - if (error) - return (error); - vfslocked = NDHASGIANT(&nd); - vp = nd.ni_vp; -#ifdef MAC - error = mac_system_check_auditctl(td->td_ucred, vp); - VOP_UNLOCK(vp, 0); - if (error) { - vn_close(vp, AUDIT_CLOSE_FLAGS, td->td_ucred, td); - VFS_UNLOCK_GIANT(vfslocked); - return (error); - } -#else - VOP_UNLOCK(vp, 0); -#endif - NDFREE(&nd, NDF_ONLY_PNBUF); - if (vp->v_type != VREG) { - vn_close(vp, AUDIT_CLOSE_FLAGS, td->td_ucred, td); - VFS_UNLOCK_GIANT(vfslocked); - return (EINVAL); - } - VFS_UNLOCK_GIANT(vfslocked); - cred = td->td_ucred; - crhold(cred); - - /* - * XXXAUDIT: Should audit_suspended actually be cleared by - * audit_worker? - */ - audit_base_slice->audit_suspended = 0; - audit_suspended = audit_base_slice->audit_suspended; - - audit_rotate_vnode(audit_base_slice, cred, vp); - - return (error); + ret = auditctl_slice_internal(td, "audit_base_slice", uap->path); + return(ret); } /* @@ -501,7 +453,35 @@ auditctl_slice(struct thread *td, struct auditctl_slice_args *uap) { - return (ENOSYS); + int error = 0; + int ret, nbytes; + char as_name[AUDIT_SLICE_NAME_LEN]; + + if (jailed(td->td_ucred)) + return (ENOSYS); + error = priv_check(td, PRIV_AUDIT_CONTROL); + if (error) + return (error); + + /* + * Check slice name. + */ + nbytes = strlen(uap->as_name); + if ( nbytes <= 0 || nbytes > AUDIT_SLICE_NAME_LEN ) + return (EINVAL); + + /* + * Copyin the name of the slice we need to operate on. + */ + error = copyinstr(uap->as_name, as_name, AUDIT_SLICE_NAME_LEN, NULL); + if (error) + return (EINVAL); + + /* + * Call audit_slice_internal() to manage tha audit file. + */ + ret = auditctl_slice_internal(td, as_name, uap->path); + return(ret); } #else /* !AUDIT */ ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_worker.c#11 (text) ==== @@ -113,6 +113,8 @@ if (as->audit_vp == NULL) return; + printf("audit_record_write(): as->audit_vp not NULL!\n"); + mnt_stat = &as->audit_vp->v_mount->mnt_stat; vfslocked = VFS_LOCK_GIANT(as->audit_vp->v_mount); @@ -223,6 +225,7 @@ } } + printf("Ready to call vn_rdwr!\n"); error = vn_rdwr(UIO_WRITE, as->audit_vp, data, len, (off_t)0, UIO_SYSSPACE, IO_APPEND|IO_UNIT, as->audit_cred, NULL, NULL, curthread); if (error == ENOSPC) From owner-p4-projects@FreeBSD.ORG Sat Aug 15 21:26:17 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D2326106568D; Sat, 15 Aug 2009 21:26:16 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 96E17106568B for ; Sat, 15 Aug 2009 21:26:16 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 865088FC45 for ; Sat, 15 Aug 2009 21:26:16 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FLQG14033925 for ; Sat, 15 Aug 2009 21:26:16 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FLQGlN033923 for perforce@freebsd.org; Sat, 15 Aug 2009 21:26:16 GMT (envelope-from pgj@FreeBSD.org) Date: Sat, 15 Aug 2009 21:26:16 GMT Message-Id: <200908152126.n7FLQGlN033923@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 167381 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 21:26:17 -0000 http://perforce.freebsd.org/chv.cgi?CH=167381 Change 167381 by pgj@petymeg-current on 2009/08/15 21:25:44 Add support for IP6 family addresses. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_route.c#5 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/lib/libnetstat/netstat_route.c#5 (text+ko) ==== @@ -435,6 +435,37 @@ break; #ifdef INET6 case PF_INET6: + /* + * XXX: This is a special workaround for KAME kernels. + * sin6_scope_id field of SA should be set in the future. + */ + if (IN6_IS_ADDR_LINKLOCAL(in6) || + IN6_IS_ADDR_MC_LINKLOCAL(in6)) { + sa_in6->sin6_scope_id = + (u_int32_t)ntohs(*(u_short *)&in6->s6_addr[2]); + *(u_short *)&in6->s6_addr[2] = 0; + } + if (flags & RTF_HOST) { + rap->rat_address = strdup(routename6(sa_in6, 0)); + strlcpy(rap->rat_ni_address, routename6(sa_in6, 1), + sizeof(rap->rat_ni_address)); + } + else if (mask != NULL) { + rap->rat_address = strdup(netname6(sa_in6, + &mk_in6->sin6_addr, 0)); + strlcpy(rap->rat_ni_address, + netname6(sa_in6, &mk_in6->sin6_addr, 1), + sizeof(rap->rat_ni_address)); + } else { + rap->rat_address = strdup(netname6(sa_in6, 0L, 0)); + strlcpy(rap->rat_ni_address, rap->rat_address, + sizeof(rap->rat_ni_address)); + } + rap->rat_data = malloc(sizeof(struct sockaddr_in6)); + if (rap->rat_data != NULL) { + rap->rat_data_len = sizeof(struct sockaddr_in6); + memcpy(rap->rat_data, sa_in6, rap->rat_data_len); + } break; #endif case PF_IPX: From owner-p4-projects@FreeBSD.ORG Sat Aug 15 22:12:07 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id F32B9106568D; Sat, 15 Aug 2009 22:12:06 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B79A8106568C for ; Sat, 15 Aug 2009 22:12:06 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 8D4298FC4D for ; Sat, 15 Aug 2009 22:12:06 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FMC62d038245 for ; Sat, 15 Aug 2009 22:12:06 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FMC6H4038243 for perforce@freebsd.org; Sat, 15 Aug 2009 22:12:06 GMT (envelope-from pgj@FreeBSD.org) Date: Sat, 15 Aug 2009 22:12:06 GMT Message-Id: <200908152212.n7FMC6H4038243@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 167382 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 22:12:07 -0000 http://perforce.freebsd.org/chv.cgi?CH=167382 Change 167382 by pgj@petymeg-current on 2009/08/15 22:11:25 Re-add a libnetstat-based version of size_cols_rtentry() to set the corresponding column widths properly. Affected files ... .. //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/route.c#5 edit Differences ... ==== //depot/projects/soc2009/pgj_libstat/src/usr.bin/netstat/route.c#5 (text+ko) ==== @@ -43,6 +43,7 @@ __FBSDID("$FreeBSD: src/usr.bin/netstat/route.c,v 1.93 2008/12/15 06:10:57 qingli Exp $"); #include +#include #include #include @@ -88,6 +89,7 @@ }; static void size_cols(int ef, struct route_type_iterator *); +static void size_cols_rtentry(const struct route_type *); static const char *fmt_flags(int f); static void p_rtnode(const struct routenode_type *); @@ -207,8 +209,10 @@ #endif /*INET6*/ void -size_cols(int ef, __unused struct route_type_iterator *rtip) +size_cols(int ef, struct route_type_iterator *rtip) { + const struct route_type *rtp; + wid_dst = WID_DST_DEFAULT(ef); wid_gw = WID_GW_DEFAULT(ef); wid_flags = 6; @@ -218,10 +222,47 @@ wid_if = WID_IF_DEFAULT(ef); wid_expire = 6; -/* - if (Wflag) - size_cols_tree(rtip); -*/ + if (!Wflag) + return; + + for (rtp = netstat_rti_first(rtip); rtp != NULL; + rtp = netstat_rti_next(rtip)) { + size_cols_rtentry(rtp); + } +} + +void +size_cols_rtentry(const struct route_type *rtp) +{ + const struct routeaddr_type *addr; + int len; + char buffer[100]; + + addr = netstat_rt_get_destination(rtp); + if (addr != NULL) { + len = strlen(netstat_rat_get_name(addr, numeric_addr)); + wid_dst = MAX(wid_dst, len); + } + addr = netstat_rt_get_gateway(rtp); + if (addr != NULL) { + len = strlen(netstat_rat_get_name(addr, numeric_addr)); + wid_gw = MAX(wid_gw, len); + } + len = strlen(fmt_flags(netstat_rt_get_flags(rtp))); + wid_flags = MAX(wid_flags, len); + len = snprintf(buffer, sizeof(buffer), "%ju", netstat_rt_get_refs(rtp)); + wid_refs = MAX(wid_refs, len); + len = snprintf(buffer, sizeof(buffer), "%ju", netstat_rt_get_used(rtp)); + wid_use = MAX(wid_use, len); + len = snprintf(buffer, sizeof(buffer), "%u", netstat_rt_get_mtu(rtp)); + wid_mtu = MAX(wid_mtu, len); + len = strlen(netstat_rt_get_interface(rtp)); + wid_if = MAX(wid_if, len); + if (netstat_rt_get_flags(rtp) & NETSTAT_RT_EXPIRES) { + len = snprintf(buffer, sizeof(buffer), "%ju", + netstat_rt_get_expire(rtp)); + wid_expire = MAX(wid_expire, len); + } } static const char * From owner-p4-projects@FreeBSD.ORG Sat Aug 15 22:23:19 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3AF301065690; Sat, 15 Aug 2009 22:23:19 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F3A1E106568E for ; Sat, 15 Aug 2009 22:23:18 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id E1D628FC15 for ; Sat, 15 Aug 2009 22:23:18 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FMNIoC039011 for ; Sat, 15 Aug 2009 22:23:18 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FMNIiU039009 for perforce@freebsd.org; Sat, 15 Aug 2009 22:23:18 GMT (envelope-from pgj@FreeBSD.org) Date: Sat, 15 Aug 2009 22:23:18 GMT Message-Id: <200908152223.n7FMNIiU039009@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 167383 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 22:23:19 -0000 http://perforce.freebsd.org/chv.cgi?CH=167383 Change 167383 by pgj@beehive on 2009/08/15 22:23:06 IFC Affected files ... .. //depot/projects/docproj_hu/doc/en_US.ISO8859-1/share/sgml/authors.ent#36 integrate .. //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/articles/gjournal-desktop/article.sgml#12 integrate .. //depot/projects/docproj_hu/doc/share/pgpkeys/fluffy.key#1 branch .. //depot/projects/docproj_hu/doc/share/pgpkeys/marck.key#3 integrate .. //depot/projects/docproj_hu/doc/share/pgpkeys/pgpkeys-developers.sgml#31 integrate .. //depot/projects/docproj_hu/doc/share/pgpkeys/pgpkeys.ent#29 integrate .. //depot/projects/docproj_hu/www/en/donations/donors.sgml#20 integrate .. //depot/projects/docproj_hu/www/en/platforms/arm.sgml#3 integrate .. //depot/projects/docproj_hu/www/en/projects/newbies.sgml#3 integrate .. //depot/projects/docproj_hu/www/share/sgml/commercial.consult.xml#14 integrate .. //depot/projects/docproj_hu/www/share/sgml/commercial.isp.xml#15 integrate .. //depot/projects/docproj_hu/www/share/sgml/news.xml#65 integrate Differences ... ==== //depot/projects/docproj_hu/doc/en_US.ISO8859-1/share/sgml/authors.ent#36 (text+ko) ==== @@ -13,7 +13,7 @@ builds for the other languages, and we will poke fun of you in public. - $FreeBSD: doc/en_US.ISO8859-1/share/sgml/authors.ent,v 1.487 2009/07/20 14:15:44 yzlin Exp $ + $FreeBSD: doc/en_US.ISO8859-1/share/sgml/authors.ent,v 1.488 2009/08/10 16:50:10 fluffy Exp $ --> aaron@FreeBSD.org"> @@ -348,6 +348,8 @@ flathill@FreeBSD.org"> +fluffy@FreeBSD.org"> + flz@FreeBSD.org"> foxfair@FreeBSD.org"> ==== //depot/projects/docproj_hu/doc/hu_HU.ISO8859-2/articles/gjournal-desktop/article.sgml#12 (text+ko) ==== @@ -1,4 +1,4 @@ - + + @@ -82,19 +82,33 @@ x4EQJ+mIRgQQEQIABgUCR5ZYAgAKCRBZxqJbrEANAhg6AJ4nm2EzjE/SDAh4H+LF +BKMOw2xGwCeOWOm7pr3bShpwsVtE8Os3NimZ/iIRgQQEQIABgUCSHJXhAAKCRA9 6g22+4pu9KAzAJ0cfSUFB4HhdLve85oDa3m94RcPjACdGs+PIT5+jAX1O7Te/g7t -wu/j4kS5Ag0EO1hObhAIANX5TO/cDWaKqIaSRz4NyjTpHgtIDQpzT8D94KOnRmaP -0B46pcNxP62+zRXIP3iHFKTGits2EoGqsw/2Y+S4RxtL/669ykxb4W7TtBwHG9mX -EsgoiEol5eylKhNHOe2ZUwm5BIq3PTPywueehMMB7A4cqg+k+PDLyibzz6lvYKrp -oVvaXezfX8k6vOmiRIWyazhEG3KOjiS3fnzI+qYXHUiiWjGx/CM+DcBzcuvebW5e -j1ewB7O0qjIvxzuJep/KYO6n748CLYqLzF5mkSa0SCBWcK2LvfjlOjxp4mCSslIP -eJO2DbGeBsmzhCWV10DqZdds9t3T7tBAKr56QAswUHsAAwUH/3Un3UAEi2tgn7Cm -lOuM6l2iyxm0dT4xrzUzBrhPHUKpY28vUv3CFn+3qvhv/F2S56Oe+jbjhG2gljfP -E16MUSbYwCjCuLpU76ZgFpQL17TLn+1hehhCjihqSIL3mWK09W95Gyxj9xrzG7fM -gLgzwsZk/r3qh1Y2Mef+47FD4Om5conFeoqdJCyH59LJQ0zZVG8Ldr/tYYvcKvTb -pxqGjaYQ3eOAVgVJPvqHpMeWETA34HUfOVDZHtM2w03KeHR4Tlxa/opdIrmZchzk -0ETdYPy/t6AfbJ+avbIbH8rJUd6ifblrKUqGyrc+gJ5435T3YowGVGpVVRZQyyfg -uRP+CIOIRgQYEQIABgUCO1hObgAKCRCF1FBFa2kbA5t6AJ9B0laWrFnyRvVGo/NV -QHmv6xkKhwCbBo5yKzSSgAUpfzjAw5PKW481T6g= -=nJcP +wu/j4kSIRgQQEQIABgUCO1wQigAKCRD05kd+98Xhk/nFAKDPr/T/knlIoray7RDO +cqjTlUTncACeNLX6jfvow8AKnB3laC/Ymrt+ASmIRgQQEQIABgUCPEXRvwAKCRCz +/c1UhFFFUb7QAJ9aSw93GcOUCKkayV3iH3HgZAt1/ACg5xpMDxm8WpZ6q89RtSN0 +HSMiBQmIRgQQEQIABgUCPxU2kwAKCRC0EDmiWTkEzOMpAJ9xwYSASXStYKGlGFr+ +AMWsDg/1/wCeKtdBHOIcI/zgr6D6+xAxNegGJwSIRgQQEQIABgUCP8tZNgAKCRDH +9XXLUPkQeNMGAJwNMgkXVgrUicL+wr5cCKfLrMKXuACgtOMBUMGTy+/i+ocQkG1S +3KPTtMuIRgQTEQIABgUCPjaxlwAKCRAL8GQSYLofR/pQAJsEcOIcAgWv2cMiiAFb +QtjXggpZEQCgpQWcE8tHGi+42R7zQy7wH+1i/siIRgQTEQIABgUCP6FL2wAKCRD9 +LjUgMMgeauw2AJ9wqTN/auShtbpRZOC/NoxtsYg/9wCcDWoEYJ14cQ+2Wilc5x/A +OhDL7ASIRgQTEQIABgUCQF8aXwAKCRCFt2wt19VfGh/gAJ9VSfwUs10rKN7QjVi0 +Ro+9U22VTQCgnsmdxivQAiC3tVXKwLFoLGZWbuCIVwQTEQIAFwUCO1hOQQULBwoD +BAMVAwIDFgIBAheAAAoJEIXUUEVraRsDU1cAn3W3KI6pFIZ3Tqv2X5FUzRV/StQT +AKCC+oelCEntN8wlOYx6/jy24NfijYhaBBMRAgAaBQsHCgMEAxUDAgMWAgECF4AF +AkEYjrUCGQEACgkQhdRQRWtpGwN77QCghQMNJImV8v37n32a+5FCELO9c+kAniw2 +TeeriYrXOMC3DGJPX9GCuN6MuQINBDtYTm4QCADV+Uzv3A1miqiGkkc+Dco06R4L +SA0Kc0/A/eCjp0Zmj9AeOqXDcT+tvs0VyD94hxSkxorbNhKBqrMP9mPkuEcbS/+u +vcpMW+Fu07QcBxvZlxLIKIhKJeXspSoTRzntmVMJuQSKtz0z8sLnnoTDAewOHKoP +pPjwy8om88+pb2Cq6aFb2l3s31/JOrzpokSFsms4RBtyjo4kt358yPqmFx1Iolox +sfwjPg3Ac3Lr3m1uXo9XsAeztKoyL8c7iXqfymDup++PAi2Ki8xeZpEmtEggVnCt +i7345To8aeJgkrJSD3iTtg2xngbJs4QllddA6mXXbPbd0+7QQCq+ekALMFB7AAMF +B/91J91ABItrYJ+wppTrjOpdossZtHU+Ma81Mwa4Tx1CqWNvL1L9whZ/t6r4b/xd +kuejnvo244RtoJY3zxNejFEm2MAowri6VO+mYBaUC9e0y5/tYXoYQo4oakiC95li +tPVveRssY/ca8xu3zIC4M8LGZP696odWNjHn/uOxQ+DpuXKJxXqKnSQsh+fSyUNM +2VRvC3a/7WGL3Cr026caho2mEN3jgFYFST76h6THlhEwN+B1HzlQ2R7TNsNNynh0 +eE5cWv6KXSK5mXIc5NBE3WD8v7egH2yfmr2yGx/KyVHeon25aylKhsq3PoCeeN+U +92KMBlRqVVUWUMsn4LkT/giDiEYEGBECAAYFAjtYTm4ACgkQhdRQRWtpGwObegCf +QdJWlqxZ8kb1RqPzVUB5r+sZCocAmwaOcis0koAFKX84wMOTyluPNU+o +=M8uk -----END PGP PUBLIC KEY BLOCK----- ]]> ==== //depot/projects/docproj_hu/doc/share/pgpkeys/pgpkeys-developers.sgml#31 (text+ko) ==== @@ -1,7 +1,7 @@ @@ -971,6 +971,11 @@ &pgpkey.hmp; + + &a.fluffy; + &pgpkey.fluffy; + + &a.sat; &pgpkey.sat; ==== //depot/projects/docproj_hu/doc/share/pgpkeys/pgpkeys.ent#29 (text+ko) ==== @@ -1,5 +1,5 @@ - + @@ -90,6 +90,7 @@ + ==== //depot/projects/docproj_hu/www/en/donations/donors.sgml#20 (text+ko) ==== @@ -1,6 +1,6 @@ - + %developers; @@ -2607,6 +2607,13 @@ rpaulo Received + + + bms + See MIPS Run book + stas + Received + &footer; ==== //depot/projects/docproj_hu/www/en/platforms/arm.sgml#3 (text+ko) ==== @@ -1,6 +1,6 @@ - + @@ -63,7 +63,7 @@

Additionally, support for the Technologic Systems TS-7200 devboard is in the works, as is support for the Atmel AT91SAM926x CPU and - the Mavell Orion ARM SoC, the Samsung S3C2XX0 range, and Cirrus + the Marvell Orion ARM SoC, the Samsung S3C2XX0 range, and Cirrus Logic EP93XX CPUs.

What Needs To Be Done

==== //depot/projects/docproj_hu/www/en/projects/newbies.sgml#3 (text+ko) ==== @@ -1,6 +1,6 @@ - + @@ -136,7 +136,7 @@
  • Apple's Mac OS X - is based + is based in part on FreeBSD and includes a rich &unix; foundation in addition to the proprietary Apple user interface.

  • @@ -178,6 +178,19 @@ is near the front of the book, but there are short easy articles throughout.

    +
  • +

    A UNIX + Introductory Course from Ohio State University is + available online in HTML, postscript and Acrobat PDF + formats.

    +
  • + +
  • +

    A UNIX + System Administration Course from Ohio State University + is available online in HTML format.

    +
  • +
  • UNIXhelp for Users is another introductory guide which is available in HTML at a mirror site near you, or can be installed on your own ==== //depot/projects/docproj_hu/www/share/sgml/commercial.consult.xml#14 (text+ko) ==== @@ -1,12 +1,12 @@ - + - $FreeBSD: www/share/sgml/commercial.consult.xml,v 1.61 2009/07/16 13:22:45 danger Exp $ + $FreeBSD: www/share/sgml/commercial.consult.xml,v 1.62 2009/08/13 09:00:10 remko Exp $ @@ -1429,14 +1429,14 @@ Raditex AB - http://raditex.se/ + http://raditex.nu/ Raditex AB are a firm of consultants and also do education in Unix. We have long experience with all kinds of Unix systems not only FreeBSD or Linux. For more information phone us at +46.8.6949270 or give us an email at info@raditex.se or visit our web site. + href="mailto:gorhas@raditex.nu">gorhas@raditex.nu or visit our web site. ==== //depot/projects/docproj_hu/www/share/sgml/commercial.isp.xml#15 (text+ko) ==== @@ -1,12 +1,12 @@ - + - $FreeBSD: www/share/sgml/commercial.isp.xml,v 1.48 2009/06/22 20:27:16 jkois Exp $ + $FreeBSD: www/share/sgml/commercial.isp.xml,v 1.49 2009/08/14 07:00:23 remko Exp $ @@ -299,7 +299,7 @@ Quonix Networks - http://www.quonix.net/ + http://www.quonix.net/products/dia.html Quonix Networks provides a variety of personal and enterprise hosting solutions powered by FreeBSD, including web, mail, secure ==== //depot/projects/docproj_hu/www/share/sgml/news.xml#65 (text+ko) ==== @@ -25,7 +25,7 @@ - $FreeBSD: www/share/sgml/news.xml,v 1.265 2009/07/20 15:44:53 yzlin Exp $ + $FreeBSD: www/share/sgml/news.xml,v 1.266 2009/08/13 14:06:18 fluffy Exp $ @@ -33,6 +33,19 @@ 2009 + 8 + + + 10 + +

    New committer: Dima + Panov (ports)

    + + + + + + 7 From owner-p4-projects@FreeBSD.ORG Sat Aug 15 22:32:29 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B8BA2106568F; Sat, 15 Aug 2009 22:32:29 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7D525106568C for ; Sat, 15 Aug 2009 22:32:29 +0000 (UTC) (envelope-from marinosi@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 533A28FC15 for ; Sat, 15 Aug 2009 22:32:29 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FMWTxu039654 for ; Sat, 15 Aug 2009 22:32:29 GMT (envelope-from marinosi@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FMWS5w039652 for perforce@freebsd.org; Sat, 15 Aug 2009 22:32:28 GMT (envelope-from marinosi@FreeBSD.org) Date: Sat, 15 Aug 2009 22:32:28 GMT Message-Id: <200908152232.n7FMWS5w039652@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marinosi@FreeBSD.org using -f From: Ilias Marinos To: Perforce Change Reviews Cc: Subject: PERFORCE change 167385 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 22:32:30 -0000 http://perforce.freebsd.org/chv.cgi?CH=167385 Change 167385 by marinosi@marinosi_redrum on 2009/08/15 22:31:30 Debugging code removed. Affected files ... .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#26 edit .. //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_worker.c#12 edit Differences ... ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit.c#26 (text) ==== @@ -884,14 +884,13 @@ */ /* Verify the record. */ if (bsm_rec_verify(rec) == 0) { - uprintf("Error in record!\n"); error = EINVAL; return (error); } /* * Allocate the appropriate memory for the record and fetch it. - * The record will be free'd by audit_record_dtor(). + * The allocated memory will be free'd by audit_record_dtor(). */ bsm = (void *) malloc(len, M_TEMP, M_WAITOK | M_ZERO); memmove(bsm, rec, len); @@ -964,7 +963,6 @@ as->audit_pre_q_len--; cv_signal(&(as->audit_worker_cv)); mtx_unlock(&(as->audit_mtx)); - uprintf("audit_slice_commit_rec(): Reached the end!\n"); return (0); } ==== //depot/projects/soc2009/marinosi_appaudit/src/sys/security/audit/audit_worker.c#12 (text) ==== @@ -113,7 +113,6 @@ if (as->audit_vp == NULL) return; - printf("audit_record_write(): as->audit_vp not NULL!\n"); mnt_stat = &as->audit_vp->v_mount->mnt_stat; vfslocked = VFS_LOCK_GIANT(as->audit_vp->v_mount); @@ -225,7 +224,6 @@ } } - printf("Ready to call vn_rdwr!\n"); error = vn_rdwr(UIO_WRITE, as->audit_vp, data, len, (off_t)0, UIO_SYSSPACE, IO_APPEND|IO_UNIT, as->audit_cred, NULL, NULL, curthread); if (error == ENOSPC) @@ -410,7 +408,6 @@ while (TAILQ_EMPTY(&(as->audit_q))) cv_wait(&(as->audit_worker_cv), &(as->audit_mtx)); - printf("audit_worker(): Record in the queue!\n"); /* * If there are records in the global audit record queue, * transfer them to a thread-local queue and process them @@ -432,9 +429,7 @@ mtx_unlock(&(as->audit_mtx)); while ((ar = TAILQ_FIRST(&ar_worklist))) { TAILQ_REMOVE(&ar_worklist, ar, k_q); - printf("audit_worker(): Calling audit_worker_process_record()!\n"); audit_worker_process_record(ar, as); - printf("audit_worker(): Returned from audit_worker_process_record()!\n"); audit_free(ar); } mtx_lock(&(as->audit_mtx)); From owner-p4-projects@FreeBSD.ORG Sat Aug 15 22:52:51 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B3082106568F; Sat, 15 Aug 2009 22:52:51 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 77BFB106568B for ; Sat, 15 Aug 2009 22:52:51 +0000 (UTC) (envelope-from pgj@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6745E8FC15 for ; Sat, 15 Aug 2009 22:52:51 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FMqp8T041186 for ; Sat, 15 Aug 2009 22:52:51 GMT (envelope-from pgj@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FMqp74041184 for perforce@freebsd.org; Sat, 15 Aug 2009 22:52:51 GMT (envelope-from pgj@FreeBSD.org) Date: Sat, 15 Aug 2009 22:52:51 GMT Message-Id: <200908152252.n7FMqp74041184@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to pgj@FreeBSD.org using -f From: Gabor Pali To: Perforce Change Reviews Cc: Subject: PERFORCE change 167386 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 22:52:51 -0000 http://perforce.freebsd.org/chv.cgi?CH=167386 Change 167386 by pgj@beehive on 2009/08/15 22:52:49 MFen (www): 1.12 -> 1.13 hu/platforms/arm.sgml 1.265 -> 1.266 hu/share/sgml/news.xml Affected files ... .. //depot/projects/docproj_hu/www/hu/platforms/arm.sgml#9 edit .. //depot/projects/docproj_hu/www/hu/share/sgml/news.xml#44 edit Differences ... ==== //depot/projects/docproj_hu/www/hu/platforms/arm.sgml#9 (text+ko) ==== @@ -11,9 +11,9 @@ - + &header; ==== //depot/projects/docproj_hu/www/hu/share/sgml/news.xml#44 (text+ko) ==== @@ -5,7 +5,7 @@ @@ -19,6 +19,19 @@ 2009 + 8 + + + 10 + + +

    Új tag: Dima + Panov (ports)

    +
    +
    +
    + + 7 From owner-p4-projects@FreeBSD.ORG Sat Aug 15 23:43:47 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A44CD106568E; Sat, 15 Aug 2009 23:43:47 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 69123106568D for ; Sat, 15 Aug 2009 23:43:47 +0000 (UTC) (envelope-from alepulver@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 3EF0E8FC3D for ; Sat, 15 Aug 2009 23:43:47 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n7FNhloe045782 for ; Sat, 15 Aug 2009 23:43:47 GMT (envelope-from alepulver@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n7FNhlmV045780 for perforce@freebsd.org; Sat, 15 Aug 2009 23:43:47 GMT (envelope-from alepulver@freebsd.org) Date: Sat, 15 Aug 2009 23:43:47 GMT Message-Id: <200908152343.n7FNhlmV045780@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to alepulver@freebsd.org using -f From: Alejandro Pulver To: Perforce Change Reviews Cc: Subject: PERFORCE change 167389 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 15 Aug 2009 23:43:47 -0000 http://perforce.freebsd.org/chv.cgi?CH=167389 Change 167389 by alepulver@alepulver_deimos on 2009/08/15 23:43:26 - Increase width when displaying licenses in "dialog". - Add more information to "dual" and "multi" dialogs. Affected files ... .. //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.licenses.mk#11 edit Differences ... ==== //depot/projects/soc2008/alepulver-portslicense/ports/Mk/bsd.licenses.mk#11 (text+ko) ==== @@ -599,7 +599,7 @@ case $${result} in \ accept) break ;; \ reject) exit 1;; \ - view) ${DIALOG} --textbox "${_LICENSE_FILE}" 21 70 ;; \ + view) ${DIALOG} --textbox "${_LICENSE_FILE}" 21 75 ;; \ esac; \ done @@ -608,7 +608,7 @@ . for lic in ${_LICENSE_TO_ASK} @${ECHO_CMD} "${lic}:${_LICENSE_FILE_${lic}}" >> ${_LICENSE_ASK_DATA} . endfor - @menu_cmd="${DIALOG} --menu \"License for ${PKGNAME}\" 21 70 15"; \ + @menu_cmd="${DIALOG} --hline \"This port requires you to accept at least one license\" --menu \"License for ${PKGNAME} (dual)\" 21 70 15"; \ tmpfile=$$(mktemp -t portlicenses); \ for lic in ${_LICENSE_TO_ASK}; do \ menu_cmd="$${menu_cmd} VIEW_$${lic} \"View the license $${lic}\" USE_$${lic} \"Accept the license $${lic}\""; \ @@ -621,7 +621,7 @@ REJECT) exit 1;; \ VIEW_*) name=$$(${ECHO_CMD} $${result} | ${SED} -e 's/^VIEW_//'); \ file=$$(${GREP} "^$${name}:" ${_LICENSE_ASK_DATA} | ${CUT} -d : -f 2); \ - ${DIALOG} --textbox "$${file}" 21 70 ;; \ + ${DIALOG} --textbox "$${file}" 21 75 ;; \ USE_*) name=$$(${ECHO_CMD} $${result} | ${SED} -e 's/^USE_//'); \ ${ECHO_CMD} $${name} > ${_LICENSE_COOKIE}; \ break ;; \ @@ -633,7 +633,7 @@ . for lic in ${_LICENSE_TO_ASK} @${ECHO_CMD} "${lic}:${_LICENSE_FILE_${lic}}" >> ${_LICENSE_ASK_DATA} . endfor - @menu_cmd="${DIALOG} --menu \"License for ${PKGNAME}\" 21 70 15"; \ + @menu_cmd="${DIALOG} --hline \"This port requires you to accept all mentioned licenses\" --menu \"License for ${PKGNAME} (multi)\" 21 70 15"; \ tmpfile=$$(mktemp -t portlicenses); \ for lic in ${_LICENSE_TO_ASK}; do \ menu_cmd="$${menu_cmd} VIEW_$${lic} \"View the license $${lic}\""; \ @@ -647,7 +647,7 @@ REJECT) exit 1 ;; \ VIEW_*) name=$$(${ECHO_CMD} $${result} | ${SED} -e 's/^VIEW_//'); \ file=$$(${GREP} "^$${name}:" ${_LICENSE_ASK_DATA} | ${CUT} -d : -f 2); \ - ${DIALOG} --textbox "$${file}" 21 70 ;; \ + ${DIALOG} --textbox "$${file}" 21 75 ;; \ esac; \ done . endif