smilint output for ./CABH-IETF-CAP-MIB


Message Severities
SeverityCount
error1
warning3
Message Types
TypeCount
integer-misuse (warning)2
node-implicit (warning)1
object-identifier-not-prefix (error)1

Messages:

CABH-IETF-CAP-MIB

   1: -- extracted from draft-ietf-ipcdn-cable-gateway-addressing-mib-00.txt
   2: -- at Wed Jun 25 06:13:38 2003
   3: 
   4:    CABH-IETF-CAP-MIB DEFINITIONS ::= BEGIN 
   5:     
   6:    IMPORTS 
   7:        MODULE-IDENTITY, 
   8:        OBJECT-TYPE, 
   9:        Unsigned32, 
  10:        mib-2                FROM SNMPv2-SMI 
  11:        TEXTUAL-CONVENTION, 
  12:        TimeStamp, 
  13:        TruthValue, 
  14:        RowStatus,  
  15:        PhysAddress          FROM SNMPv2-TC 
  16:        OBJECT-GROUP, 
  17:        MODULE-COMPLIANCE    FROM SNMPv2-CONF 
  18:        InetAddressType, 
  19:        InetAddress, 
  20:        InetPortNumber       FROM INET-ADDRESS-MIB; 
  21:     
  22:    cabhCapMib MODULE-IDENTITY 
  23:        LAST-UPDATED    "200306210000Z" -- Jun 21, 2003 
  24:        ORGANIZATION    "IETF IPCDN Working Group" 
  25:        CONTACT-INFO 
  26:                "Kevin Luehrs 
  27:                Postal: Cable Television Laboratories, Inc. 
  28:                400 Centennial Parkway 
  29:                Louisville, Colorado 80027-1266 
  30:                U.S.A. 
  31:                Phone:  +1 303-661-9100 
  32:                Fax:    +1 303-661-9199 
  33:                E-mail: k.luehrs@cablelabs.com; mibs@cablelabs.com 
  34:     
  35:                IETF IPCDN Working Group 
  36:                General Discussion: ipcdn@ietf.org 
  37:                Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn 
  38:                Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn 
  39:                Co-chairs: Richard Woundy, 
  40:                           Richard_Woundy@cable.comcast.com 
  41:                           Jean-Francois Mule, jf.mule@cablelabs.com" 
  42:        DESCRIPTION 
  43:                "This MIB module supplies the basic management objects 
  44:                for the CableHome Addressing Portal (CAP) portion of 
  45:                the PS database. 
  46:     
  47:                Copyright (C) The Internet Society (2003). This version 
  48:                of this MIB module is part of RFC xxxx; see the RFC 
  49:                itself for full legal notices." 
  50:        REVISION         "200306210000Z" -- Jun 21, 2003 
  51:        DESCRIPTION 
  52:                "Initial version, published as RFC xxxx." 
  53:                -- RFC editor to assign xxxx 
  54:        ::= { mib-2 xx }    
  54: error - Object identifier element `xx' name only allowed as first element
  55:      -- xx to be assigned by IANA 
  56:     
  57:    -- Textual conventions 
  58:     
  59:    CabhCapPacketMode ::= TEXTUAL-CONVENTION 
  60:        STATUS    current 
  61:        DESCRIPTION 
  62:                "The data type established when a binding/mapping is  
  63:                established." 
  64:        SYNTAX    INTEGER { 
  65:                      napt(1),          -- NAT with port translation 
  66:                      nat(2),           -- Basic NAT 
  67:                      passthrough(3)    -- Pass Through External Address 
  68:                  } 
  69:     
  70:     
  71:    cabhCapObjects      OBJECT IDENTIFIER ::= { cabhCapMib 1 } 
  72:    cabhCapBase         OBJECT IDENTIFIER ::= { cabhCapObjects 1 } 
  73:    cabhCapMap          OBJECT IDENTIFIER ::= { cabhCapObjects 2 } 
  74:     
  75:     
  76:    --=================================================================== 
  77:    -- 
  78:    --    General CAP Parameters 
  79:    -- 
  80:    --=================================================================== 
  81:     
  82:    cabhCapTcpTimeWait OBJECT-TYPE 
  83:        SYNTAX Unsigned32 
  84:        UNITS "seconds" 
  85:        MAX-ACCESS read-write 
  86:        STATUS current 
  87:        DESCRIPTION 
  88:                "This object is the maximum inactivity time to wait 
  89:                before assuming TCP session is terminated. It has no 
  90:                relation to the TCP session TIME_WAIT state referred 
  91:                to in [RFC793]" 
  92:        DEFVAL { 300 }  
  93:        ::= { cabhCapBase 1 } 
  94:     
  95:     
  96:    cabhCapUdpTimeWait OBJECT-TYPE 
  97:        SYNTAX      Unsigned32 
  98:        UNITS       "seconds" 
  99:        MAX-ACCESS  read-write 
 100:        STATUS      current 
 101:        DESCRIPTION 
 102:                "The inactivity time to wait before destroying CAP 
 103:                mappings for UDP." 
 104:        DEFVAL { 300 }  -- 5 minutes 
 105:        ::={ cabhCapBase 2 } 
 106:     
 107:    cabhCapIcmpTimeWait OBJECT-TYPE 
 108:        SYNTAX     Unsigned32 
 109:        UNITS      "seconds" 
 110:        MAX-ACCESS read-write 
 111:        STATUS     current 
 112:        DESCRIPTION 
 113:                "The inactivity time to wait before destroying CAP 
 114:                mappings for ICMP." 
 115:        DEFVAL { 300 }  --  5 minutes 
 116:        ::= { cabhCapBase 3 } 
 117:     
 118:     
 119:    cabhCapPrimaryMode OBJECT-TYPE 
 120:        SYNTAX     CabhCapPacketMode 
 121:        MAX-ACCESS  read-write 
 122:        STATUS      current 
 123:        DESCRIPTION 
 124:                "The Primary Packet Handling Mode to be used." 
 125:        DEFVAL { napt } 
 126:        ::= { cabhCapBase 4 } 
 127:         
 128:    cabhCapSetToFactory OBJECT-TYPE 
 129:        SYNTAX      TruthValue 
 130:        MAX-ACCESS  read-write 
 131:        STATUS      current 
 132:        DESCRIPTION 
 133:                "Reading this object always returns false(2). When the  
 134:                cabhCapSetToFactory object is set to true(1), the PS must  
 135:                take the following actions: 
 136:     
 137:                1. Clear all entries in the cabhCapMappingTable and  
 138:                   cabhCapPassthroughTable. 
 139:                2. Reset the following objects to their factory default  
 140:                   values: 
 141:                   cabhCapTcpTimeWait, 
 142:                   cabhCapUdpTimeWait, 
 143:                   cabhCapIcmpTimeWait, 
 144:                   cabhCapPrimaryMode" 
 145:        ::= { cabhCapBase 5 } 
 146:     
 147:    cabhCapLastSetToFactory    OBJECT-TYPE 
 148:            SYNTAX       TimeStamp 
 149:            MAX-ACCESS   read-only 
 150:            STATUS       current 
 151:            DESCRIPTION 
 152:                    "The value of sysUpTime when cabhCapSetToFactory was  
 153:                    last set to true. Zero if never reset." 
 154:        ::= { cabhCapBase 6 } 
 155:     
 156:    --=================================================================== 
 157:    -- 
 158:    --    cabhCapMappingTable (CAP Mapping Table) 
 159:    -- 
 160:    --    The cabhCapMappingTable contains the info for all CAP mappings. 
 161:    -- 
 162:    --=================================================================== 
 163:     
 164:    cabhCapMappingTable OBJECT-TYPE 
 165:        SYNTAX      SEQUENCE OF CabhCapMappingEntry 
 166:        MAX-ACCESS  not-accessible 
 167:        STATUS      current 
 168:        DESCRIPTION 
 169:                "This table contains IP address mappings between private  
 170:                network addresses, or network addresses and port  
 171:                numbers/ICMP sequence numbers, assigned to devices on the  
 172:                subscriber's home LAN, and network addresses, or network  
 173:                addresses and port numbers/ICMP sequence number, assigned  
 174:                by the cable operator, presumed to be on a separate  
 175:                subnetwork than the private IP addresses.  
 176:                The CAP Mapping Table is used by the CableHome Address  
 177:                Portal (CAP) function of the PS to make packet forwarding  
 178:                decisions." 
 179:        ::= {  cabhCapMap 1 } 
 180:         
 181:    cabhCapMappingEntry OBJECT-TYPE 
 182:        SYNTAX      CabhCapMappingEntry 
 183:        MAX-ACCESS  not-accessible 
 184:        STATUS      current 
 185:        DESCRIPTION 
 186:                "List of the private IP (LAN) address - to - cable 
 187:                operator assigned IP (WAN) address mappings stored in 
 188:                the PS and used by the PS to make packet forwarding 
 189:                decisions." 
 190:        INDEX { cabhCapMappingIndex } 
 191:        ::= { cabhCapMappingTable 1 } 
 192:     
 193:        CabhCapMappingEntry ::= SEQUENCE { 
 194:            cabhCapMappingIndex            INTEGER, 
 195:            cabhCapMappingWanAddrType      InetAddressType, 
 196:            cabhCapMappingWanAddr          InetAddress, 
 197:            cabhCapMappingWanPort          InetPortNumber, 
 198:            cabhCapMappingLanAddrType      InetAddressType, 
 199:            cabhCapMappingLanAddr          InetAddress, 
 200:            cabhCapMappingLanPort          InetPortNumber, 
 201:            cabhCapMappingMethod           INTEGER, 
 202:            cabhCapMappingProtocol         INTEGER, 
 203:            cabhCapMappingRowStatus        RowStatus 
 204:        } 
 205:     
 206:    cabhCapMappingIndex    OBJECT-TYPE 
 207:        SYNTAX              INTEGER   (1..65535) 
 207: warning - warning: use Integer32 instead of INTEGER in SMIv2
 208:        MAX-ACCESS  not-accessible 
 209:        STATUS      current 
 210:        DESCRIPTION 
 211:                "The Index into the CAP Mapping Table." 
 212:        ::= { cabhCapMappingEntry 1 } 
 213:     
 214:        cabhCapMappingWanAddrType OBJECT-TYPE 
 215:        SYNTAX      InetAddressType 
 216:        MAX-ACCESS  read-create 
 217:        STATUS      current 
 218:        DESCRIPTION 
 219:                "The IP address type assigned on the WAN side" 
 220:        DEFVAL { ipv4 } 
 221:        ::= { cabhCapMappingEntry 2 } 
 222:     
 223:    cabhCapMappingWanAddr OBJECT-TYPE 
 224:        SYNTAX      InetAddress 
 225:        MAX-ACCESS  read-create 
 226:        STATUS      current 
 227:        DESCRIPTION 
 228:                "The IP address assigned by the cable operator's address 
 229:                (DHCP) server, and comprising the WAN-side IP address of 
 230:                the CAP Mapping tuple. This object is populated either  
 231:                dynamically by LAN-to-WAN outbound traffic or statically 
 232:                by the cable operator." 
 233:        ::= { cabhCapMappingEntry 3 } 
 234:     
 235:    cabhCapMappingWanPort OBJECT-TYPE 
 236:        SYNTAX      InetPortNumber 
 237:        MAX-ACCESS  read-create 
 238:        STATUS      current 
 239:        DESCRIPTION 
 240:                "The TCP/UDP port number or ICMP sequence number on the 
 241:                WAN side.  A port number of 0 indicates a NAT mapping. 
 242:                A non-zero port number indicates an NAPT mapping." 
 243:        DEFVAL { 0 } 
 244:        ::= { cabhCapMappingEntry 4 } 
 245:     
 246:    cabhCapMappingLanAddrType OBJECT-TYPE 
 247:        SYNTAX      InetAddressType 
 248:        MAX-ACCESS  read-create 
 249:        STATUS      current 
 250:        DESCRIPTION 
 251:                "The IP address type assigned on the LAN side." 
 252:        DEFVAL { ipv4 } 
 253:        ::= { cabhCapMappingEntry 5 } 
 254:     
 255:    cabhCapMappingLanAddr OBJECT-TYPE 
 256:        SYNTAX      InetAddress 
 257:        MAX-ACCESS  read-create 
 258:        STATUS      current 
 259:        DESCRIPTION 
 260:                "The IP address assigned by the DHCP server function of 
 261:                the PS (CableHome DHCP Server, CDS), and comprising the 
 262:                LAN-side IP address of the CAP Mapping tuple.  
 263:                This object is populated either dynamically as a result 
 264:                of LAN-to-WAN outbound traffic or statically by the cable  
 265:                operator." 
 266:        ::= { cabhCapMappingEntry 6 } 
 267:     
 268:    cabhCapMappingLanPort OBJECT-TYPE 
 269:        SYNTAX      InetPortNumber 
 270:        MAX-ACCESS  read-create 
 271:        STATUS      current 
 272:        DESCRIPTION 
 273:                "The TCP/UDP port number or ICMP sequence number on the 
 274:                LAN side. A port number/sequence number of 0 indicates 
 275:                a NAT mapping. A non-zero port number/sequence number 
 276:                indicates a NAPT mapping." 
 277:        DEFVAL { 0 } 
 278:        ::= { cabhCapMappingEntry 7 } 
 279:     
 280:    cabhCapMappingMethod OBJECT-TYPE 
 281:        SYNTAX      INTEGER { 
 282:            static(1),     
 283:            dynamic(2) 
 284:            } 
 285:        MAX-ACCESS  read-only 
 286:        STATUS      current 
 287:        DESCRIPTION 
 288:                "Indicates how this mapping was created. Static means 
 289:                that it was provisioned, and dynamic means that it was 
 290:                handled by the PS itself." 
 291:        ::= { cabhCapMappingEntry 8 } 
 292:         
 293:    cabhCapMappingProtocol OBJECT-TYPE 
 294:        SYNTAX      INTEGER { 
 295:                        other(1),    -- any other protocol; e.g. IGMP 
 296:                        icmp(2), 
 297:                        udp(3), 
 298:                        tcp(4) 
 299: 
 300:                     } 
 301:        MAX-ACCESS  read-create 
 302:        STATUS      current 
 303:        DESCRIPTION 
 304:                "The protocol for this mapping." 
 305:        ::= { cabhCapMappingEntry 9 } 
 306:     
 307:    cabhCapMappingRowStatus OBJECT-TYPE 
 308:        SYNTAX      RowStatus 
 309:        MAX-ACCESS  read-create 
 310:        STATUS      current 
 311:        DESCRIPTION 
 312:                "The RowStatus interlock for the creation and deletion of 
 313:                a cabhCapMappingTable entry.  Changing the value of the 
 314:                IP address or port number columns of the CAP Mapping 
 315:                Table may have an effect on active traffic, so the PS 
 316:                will prevent modification of this table's columns and 
 317:                return an inconsistentValue error when 
 318:                cabhCapMappingRowStatus object is active(1). 
 319:              
 320:                The PS must not allow RowStatus to be set to 
 321:                notInService(2)by a manager. 
 322:               
 323:                A newly created row cannot be set to active(1) until the 
 324:                corresponding instances of cabhCapMappingWanAddrType, 
 325:                cabhCapMappingWanAddr, cabhCapMappingLanAddrType, 
 326:                cabhCapMappingLanAddr, and cabhCapMappingProtocol have 
 327:                been set. 
 328:              
 329:                When Primary Packet-handling Mode is NAPT  
 330:                (cabhCapPrimaryMode is napt(1)), required behavior with  
 331:                respect to the cabhCapMappingRowStatus object is 
 332:                dependent upon the version of CableHome specification 
 333:                implemented in the product: 
 334:              
 335:                  - In CableHome 1.0 compliant products configured for 
 336:                    NAPT Primary Packet-handling Mode, a newly 
 337:                    provisioned row can not be set to active(1) until a 
 338:                    non-zero value has been set for cabhCapMappingWanPort 
 339:                    and cabhCapMappingLanPort objects.  
 340:     
 341:                 -  Products compliant to CableHome specifications later  
 342:                    than CableHome 1.0 are not subject to the  
 343:                    cabhCapMappingWanPort and cabhCapMappingLanPort  
 344:                    restrictions imposed on CableHome 1.0 compliant  
 345:                    products. In CableHome 1.1 and later compliant 
 346:                    devices configured to operate in NAPT Primary 
 347:                    Packet-handling Mode, provisioned rows can be set to 
 348:                    active(1) regardless of whether the value to which  
 349:                    cabhCapMappingWanPort and cabhCapMappingLanPort have  
 350:                    been set is zero or nonzero. 
 351:     
 352:                When Primary Packet-handling Mode is NAT 
 353:                (cabhCapPrimaryMode is nat(2)), a newly created row 
 354:                cannot be set to active(1)if a non-zero value of 
 355:                cabhCapMappingWanPort and cabhCapMappingLanPort have 
 356:                been set." 
 357:            ::={ cabhCapMappingEntry 10 } 
 358:     
 359:    --=================================================================== 
 360:    -- 
 361:    --    cabhCapPassthroughTable (CAP Passthrough Table) 
 362:    -- 
 363:    --    The cabhCapPassthroughTable contains the MAC Addresses for all  
 364:    --    LAN-IP Devices which will be configured as passthrough. 
 365:    -- 
 366:    --=================================================================== 
 367:     
 368:    cabhCapPassthroughTable OBJECT-TYPE 
 369:        SYNTAX      SEQUENCE OF CabhCapPassthroughEntry 
 370:        MAX-ACCESS  not-accessible 
 371:        STATUS      current 
 372:        DESCRIPTION 
 373:                "This table contains MAC addresses for LAN-IP Devices 
 374:                which are configured as passthrough mode."  
 375:        ::= {  cabhCapMap 2 } 
 376:     
 377:    cabhCapPassthroughEntry    OBJECT-TYPE 
 378:        SYNTAX      CabhCapPassthroughEntry 
 379:        MAX-ACCESS  not-accessible 
 380:        STATUS      current 
 381:        DESCRIPTION 
 382:                "List of hardware addresses of LAN IP Devices which are  
 383:                configured for passthrough mode." 
 384:        INDEX {cabhCapPassthroughIndex} 
 385:    ::= {cabhCapPassthroughTable 1} 
 386:     
 387:    CabhCapPassthroughEntry::=SEQUENCE { 
 388:        cabhCapPassthroughIndex        INTEGER, 
 389:        cabhCapPassthroughMacAddr      PhysAddress, 
 390:        cabhCapPassthroughRowStatus    RowStatus 
 391:        } 
 392:     
 393:    cabhCapPassthroughIndex        OBJECT-TYPE 
 394:        SYNTAX    INTEGER (1..65535) 
 394: warning - warning: use Integer32 instead of INTEGER in SMIv2
 395:        MAX-ACCESS  not-accessible 
 396:        STATUS      current 
 397:        DESCRIPTION 
 398:                "The index into the CAP Passthrough Table." 
 399:        ::= { cabhCapPassthroughEntry 1 } 
 400: 
 401:    cabhCapPassthroughMacAddr        OBJECT-TYPE 
 402:        SYNTAX    PhysAddress (SIZE(0..16)) 
 403:        MAX-ACCESS    read-create 
 404:        STATUS    current 
 405:        DESCRIPTION 
 406:                "Hardware address of the LAN-IP Device to be configured 
 407:                as passthrough mode." 
 408:        ::={cabhCapPassthroughEntry 2} 
 409:     
 410:    cabhCapPassthroughRowStatus    OBJECT-TYPE 
 411:        SYNTAX        RowStatus 
 412:        MAX-ACCESS    read-create 
 413:        STATUS        current 
 414:        DESCRIPTION  
 415:                "The RowStatus interlock for the creation and deletion 
 416:                of a cabhCapPassthroughTable entry.  Any writable object 
 417:                in each row can be modified at any time while the row is 
 418:                active(1)." 
 419:        ::= { cabhCapPassthroughEntry 3 } 
 420:    -- 
 421:    -- notification group is for future extension. 
 422:    --  
 423:     
 424:    cabhCapNotification   OBJECT IDENTIFIER ::= { cabhCapMib 2 0 } 
 424: warning - warning: implicit node definition
 425:    cabhCapConformance    OBJECT IDENTIFIER ::= { cabhCapMib 3 } 
 426:    cabhCapCompliances    OBJECT IDENTIFIER ::= { cabhCapConformance 1 } 
 427:    cabhCapGroups         OBJECT IDENTIFIER ::= { cabhCapConformance 2 } 
 428:     
 429:    -- 
 430:    --    Notification Group 
 431:    -- 
 432:     
 433:     
 434:    -- compliance statements 
 435:     
 436:    cabhCapBasicCompliance MODULE-COMPLIANCE 
 437:        STATUS     current 
 438:        DESCRIPTION 
 439:                "The compliance statement for devices that implement the  
 440:                CableHome Portal Services functionality" 
 441:        MODULE   --cabhCapMib 
 442:     
 443:     
 444:    -- unconditionally mandatory groups 
 445:     
 446:    MANDATORY-GROUPS { 
 447:        cabhCapGroup 
 448:        } 
 449:        OBJECT cabhCapMappingWanAddrType 
 450:           SYNTAX InetAddressType { ipv4(1) } 
 451:           DESCRIPTION 
 452:               "An implementation is only required to support IPv4 
 453:                addresses." 
 454:     
 455:        OBJECT cabhCapMappingWanAddr 
 456:           SYNTAX  InetAddress (SIZE(4)) 
 457:           DESCRIPTION 
 458:               "An implementation is only required to support IPv4 
 459:                addresses." 
 460:     
 461:        OBJECT cabhCapMappingLanAddrType 
 462:           SYNTAX InetAddressType { ipv4(1) } 
 463:           DESCRIPTION 
 464:               "An implementation is only required to support IPv4 
 465:                addresses." 
 466:     
 467:        OBJECT cabhCapMappingLanAddr 
 468:           SYNTAX  InetAddress (SIZE(4)) 
 469:           DESCRIPTION 
 470:               "An implementation is only required to support IPv4 
 471:                addresses." 
 472:     
 473:    ::= { cabhCapCompliances 1 } 
 474:     
 475:     
 476:    cabhCapGroup OBJECT-GROUP 
 477:        OBJECTS { 
 478:            cabhCapTcpTimeWait, 
 479:            cabhCapUdpTimeWait, 
 480:            cabhCapIcmpTimeWait, 
 481:            cabhCapPrimaryMode, 
 482:            cabhCapSetToFactory, 
 483:            cabhCapLastSetToFactory, 
 484:            cabhCapMappingWanAddrType, 
 485:            cabhCapMappingWanAddr, 
 486:            cabhCapMappingWanPort, 
 487:            cabhCapMappingLanAddrType, 
 488:            cabhCapMappingLanAddr, 
 489:            cabhCapMappingLanPort, 
 490:            cabhCapMappingMethod, 
 491:            cabhCapMappingProtocol, 
 492:            cabhCapMappingRowStatus, 
 493:            cabhCapPassthroughMacAddr, 
 494:            cabhCapPassthroughRowStatus 
 495:            } 
 496:        STATUS    current 
 497:        DESCRIPTION 
 498:                "Group of objects for CableHome CAP MIB." 
 499:        ::= { cabhCapGroups 1 } 
 500:     
 501:     
 502:    END 
 503: 
 504: --  
 505: --    Copyright (C) The Internet Society (2003). All Rights Reserved. 
 506: --     
 507: --    This document and translations of it may be copied and furnished to 
 508: --    others, and derivative works that comment on or otherwise explain it 
 509: --    or assist in its implementation may be prepared, copied, published 
 510: --    and distributed, in whole or in part, without restriction of any 
 511: --    kind, provided that the above copyright notice and this paragraph are 
 512: --    included on all such copies and derivative works.  However, this 
 513: --    document itself may not be modified in any way, such as by removing 
 514: --    the copyright notice or references to the Internet Society or other 
 515: --    Internet organizations, except as needed for the purpose of 
 516: --    developing Internet standards in which case the procedures for 
 517: --    copyrights defined in the Internet Standards process must be 
 518: --    followed, or as required to translate it into languages other than 
 519: --    English. 
 520: --     
 521: --    The limited permissions granted above are perpetual and will not be 
 522: --    revoked by the Internet Society or its successors or assigns. 
 523: --     
 524: --    This document and the information contained herein is provided on an 
 525: --    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 
 526: --    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 
 527: --    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 
 528: --    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 
 529: --    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 
 530: