Date: Wed, 15 Dec 1999 14:44:21 -0500 (EST) From: Robert Watson <robert@cyrus.watson.org> To: freebsd-fs@freebsd.org Subject: Request for objections: extended attribute and ACL interfaces Message-ID: <Pine.BSF.3.96.991215143741.22637F-500000@fledge.watson.org>
next in thread | raw e-mail | index | archive | help
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-2036405370-945287061=:22637 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: <Pine.BSF.3.96.991215143741.22637H@fledge.watson.org> As previously discussed in some detail on freebsd-arch, freebsd-security, and posix1e, I have been working on adding support for file system access control lists (among other things), and the supporting extended attribute interface required to store additional meta-data in UFS and other file systems. After a fair amount of hashing out, the interfaces seem to please most interested parties (i.e., we've verified that the attribute interface is sufficiently flexible for the needs of the HPFS folk, the attribute interface provides the functionality for capabilities, acls, mandatory access control labels, privileged code signatures, etc, and the acl interface can handle posix.1e acls, as well as providing a mechanism for managing other acl schemes, such as those in AFS and Coda), and we're planning to commit these interfaces on Friday, unless objections are raised. Please note that these are only the interfaces, not the actually code itself, but standardizing the interfaces (especially vfs calls) makes it easy to add the code later via kernel modules, and used in other file systems currently provided by third parties (ARLA and Coda in particular). Attached please find four files, text introductions to both extended attributes and acls, and the sys/ header files providing more detailed information on the specifics of the interfaces. The extended descriptions include rationale, information on implementations in other operating systems, and the interface that descriptions and semantics. Commited would be: Changes to vnode_if.src to describe the new calls Changes to mount.h and vfs_default.c to add the vfsop calls Changes to vfsops arrays for various file systems so that they return EOPNOTSUPP for the vfs calls Syscalls in vfs_syscalls.c to perform name lookup and invoke the vfsops/vnops Addition of kern/kern_acl.c to provide common routines for third party file systems. No changes would be made to underlying file systems other than to allow them to return EOPNOTSUPP for the vfs call; with vnops this is not necessary as the vnode interface will return EOPNOTSUPP for any fs not supporting a call. The UFS EA supporting code would not be committed, as it is experimental and not well tested. Neither will the UFS ACLs over EAs support. Both of these will be made available soon, however, and will rely on having vnops/vfsops/syscalls assigned and available. :-) Robert N M Watson robert@fledge.watson.org http://www.watson.org/~robert/ PGP key fingerprint: AF B5 5F FF A6 4A 79 37 ED 5F 55 E9 58 04 6A B1 TIS Labs at Network Associates, Safeport Network Services --0-2036405370-945287061=:22637 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="extattr_details.txt" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.BSF.3.96.991215143114.22637B@fledge.watson.org> Content-Description: RXh0ZW5kZWQgQXR0cmlidXRlcw0KLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpJ bnRyb2R1Y3Rpb24NCg0KRXh0ZW5kZWQgQXR0cmlidXRlcyBwcm92aWRlIHRo ZSBhYmlsaXR5IGZvciB0aGUga2VybmVsIG9yIHVzZXJsYW5kIHByb2Nlc3Nl cw0KdG8gYXNzb2NpYXRlIGFkZGl0aW9uYWwgbWV0YS1kYXRhIHdpdGggZmls ZXMgYW5kIGRpcmVjdG9yaWVzLg0KDQoNClJhdGlvbmFsZQ0KDQpUaGVyZSBh cmUgYSBudW1iZXIgb2YgcG90ZW50aWFsIGFwcGxpY2F0aW9ucyBmb3IgZXh0 ZW5kZWQgYXR0cmlidXRlcywgYnV0DQp0aGUgZHJpdmluZyBmb3JjZSBiZWhp bmQgdGhlIGN1cnJlbnQgaW1wbGVtZXRhdGlvbiBpcyBleHRlbmRlZCBzZWN1 cml0eQ0Kc2VydmljZXM6IG1hbnkgbW9yZSBjb21wbGV4IHNlY3VyaXR5IG1l Y2hhbmlzbXMgcmVxdWlyZSBhZGRpdGlvbmFsIHN0YXRlDQphc3NvY2lhdGVk IHdpdGggZWFjaCBmaWxlIG9yIGRpcmVjdG9yeS4gIEZvciBleGFtcGxlLCBB Q0xzIHJlcXVpcmUgcGVyLQ0KZmlsZSBzdG9yYWdlLCBhcyBkbyBjYXBhYmls aXRpZXMsIGFuZCBNQUMgbGFiZWxzLiAgSW1wbGVtZW50YXRpb25zIG9mDQph bGwgb2YgdGhlc2UgZmVhdHVyZXMgZXhpc3QgZm9yIEZyZWVCU0QsIGJ1dCBh d2FpdCBzdG9yYWdlIGluIHRoZSBmaWxlDQpzeXN0ZW0uICBFeHRlbmRlZCBh dHRyaWJ1dGVzIHByb3ZpZGUgYSBnZW5lcmFsaXplZCB3YXkgaW4gd2hpY2gg dG8gbWFuYWdlDQp0aGlzIGFkZGl0aW9uYWwgbWV0YS1kYXRhLCBmb3IgZmls ZSBzdG9yZXMgdGhhdCBhcmUgZG8gbm90IGFsbG93IGZvcg0Kc3RvcmluZyB0 aGlzIGRhdGEgZGlyZWN0bHkuDQoNCkFkZGl0aW9uYWxseSwgdGhlcmUgYXJl IGEgbnVtYmVyIG9mIGV4aXN0aW5nIGZpbGUgc3lzdGVtcyB0aGF0IHN1cHBv cnQNCmV4dGVuZGVkIGF0dHJpYnV0ZXMsIGFuZCBpdCBpcyBkZXNpcmFibGUg dG8gZXhwb3NlIHRoaXMgZnVuY3Rpb25hbGl0eSBpbg0KRnJlZUJTRCB3aGVu IHByb2Nlc3NlcyBhcmUgYWNjZXNzaW5nIGRhdGEgc3RvcmVkIGluIHRoZSBm aWxlIHN5c3RlbS4NCg0KUHJvdmlkaW5nIGEgc2luZ2xlIGFuZCBjb21wcmVo ZW5zaXZlIHZub2RlIGFuZCBzeXNjYWxsIGludGVyZmFjZSB3aWxsDQphbGxv dyB0aGlzIHN0b3JhZ2UgYW5kIGFjY2VzcyB0byBvY2N1ciBpbiBhIGNvbnNp c3RlbnQgd2F5IGFjcm9zcyBmaWxlDQpzeXN0ZW1zLg0KDQoNClNlcnZpY2Vz DQoNCkVhY2ggdm5vZGUgbWF5IG5vdyBoYXZlIGEgc2VyaWVzIG9mIG5hbWVk IGF0dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoIGl0LA0KaW4gYWRkaXRpb24g dG8gdGhlIGV4aXN0aW5nIGZsYXQgZmlsZSBkYXRhIGFjY2Vzc2libGUgdmlh IGN1cnJlbnQgY2FsbHMsDQphbmQgZXhpc3RpbmcgYXR0cmlidXRlcy4gIFRo ZSBzaW1wbGlzdCB3YXkgdG8gZGVzY3JpYmUgdGhlIHNlbWFudGljcyBpcw0K dG8gY29tcGFyZSBuYW1lZCBhdHRyaWJ1dGVzIHRvIGEgc2V0IG9mIGVudmly b25tZW50YWwgdmFyaWFibGUgYXNzaWdubWVudHMuDQpBIHZhcmlhYmxlIG1h eSBiZSBkZWZpbmVkIG9yIHVuZGVmaW5lZCwgYW5kIGlmIGRlZmluZWQsIGl0 IG1heSBoYXZlIDAgb3INCm1vcmUgYnl0ZXMgb2YgZGF0YSBhc3NvY2lhdGVk IHdpdGggaXQuICBXaGlsZSBpdCBtaWdodCBiZSBwb3NzaWJsZSB0bw0KbW9k aWZ5IGFuIGF0dHJpYnV0ZSwgbWFueSBpbXBsZW1lbnRhdGlvbnMgbGltaXQg dGhpcyBiZWhhdmlvciB0byByZXBsYWNpbmcNCmFuIGV4aXN0aW5nIHZhbHVl IHJhdGhlciB0aGFuIGVkaXRpbmcgaXQgaW4gdGhlIHN0eWxlIG9mIFZPUF9X UklURQ0KYWN0aW5nIG9uIGEgc2VjdGlvbiBvZiBhIGZsYXQgZmlsZS4gIEF0 dHJpYnV0ZXMgbWF5IGJlIHJldHJpZXZlZCwgc2V0LA0KYW5kIHJlbW92ZWQg KHRvIHRha2UgYSBuYW1lIGZyb20gZGVmaW5lZCB0byB1bmRlZmluZWQpLiAg DQoNClRoZSB2bm9kZSBpbnRlcmZhY2UgbGltaXRzIG5hbWVzIHRvIG51bGwt dGVybWluYXRlZCBzdHJpbmdzLCBidXQgYWxsb3dzDQphdHRyaWJ1dGUgdmFs dWVzIHRvIGJlIGFueSBiaW5hcnkgYmxvYiBkZXNjcmliYWJsZSB1c2luZyBh IHN0cnVjdCB1aW8uDQpVbmRlcmx5aW5nIGZpbGUgc3lzdGVtcyBtYXkgcGxh Y2UgYWRkaXRpb25hbCBsaW1pdHMgb24gdGhlIHNpemUgYW5kDQpzdHJ1Y3R1 cmUgb2YgbmFtZXMsIGFzIHdlbGwgYXMgdGhlIHNpemUgb2YgZGF0YS4gIEZp bGUgc3lzdGVtcyBtYXkgYWxzbw0KcGxhY2Ugc3BlY2lmaWMgaW50ZXJwcmV0 YXRpb25zIG9uIHNwZWNpZmljIG5hbWVzLCBsaW1pdGluZyB0aGUgc3RydWN0 dXJlDQpvZiB2YWx1ZXMgYXNzaWduZWQgdG8gdGhvc2UgbmFtZXMuICBXaGls ZSB1bmRlcmx5aW5nIGZpbGUgc3lzdGVtcyBtYXkNCmNob29zZSB0byBtb2Rp ZnkgYXR0cmlidXRlIHZhbHVlcywgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0 aGV5IHJlcGxhY2UNCmV4aXN0aW5nIHZhbHVlcyB3aXRoIG5ldyB2YWx1ZXMg d2hlbiB0aGUgYXR0cmlidXRlIGlzIHNldCwgYWxsb3dpbmcgYW4NCmVmZmVj dGl2ZWx5IGF0b21pYyB2YWx1ZSByZXBsYWNlbWVudCBzZXJ2aWNlLg0KDQoN CkV4aXRpbmcgSW1wbGVtZW50YXRpb25zDQoNCkEgbnVtYmVyIG9mIGV4aXN0 aW5nIGZpbGUgc3lzdGVtcyBwcm92aWRlIHN1cHBvcnQgZm9yIGV4dGVuZGVk IGF0dHJpYnV0ZXMsDQppbmNsdWRpbmcgSUJNJ3MgSFBGUywgQXBwbGUncyBI RlMrLCBhbmQgU0dJJ3MgWEZTLiAgSW4gZ2VuZXJhbCwgdGhpcyBzdXBwb3J0 DQphbGxvd3MgZm9yIHNvbWUgbnVtYmVyIG9mIG5hbWVzLCBhbmQgYWRkaXRp b25hbGx5IHZhbHVlcywgdG8gYmUgYXNzb2NpYXRlZA0Kd2l0aCBlYWNoIGZp bGUsIGFuZCBwbGFjZXMgY29uc3RyYWludHMgb24gdGhlIHNpemUgb2YgdGhl c2UgYXR0cmlidXRlcy4gIEZvcg0KZXhhbXBsZSwgaW4gSFBGUywgdGhlcmUg aXMgYSBtYXhpbXVtIG9mIDY0ayBvZiBhZGRpdGlvbmFsIG1ldGEtZGF0YSBm b3IgZWFjaA0KZmlsZSBvciBkaXJlY3RvcnkuDQoNCkEgc2ltaWxhciBidXQg ZGlzdGluY3Qgc2VydmljZSBpcyB0aGF0IG9mIG5hbWVkIGZpbGUgZm9ya3Mt LWVhY2ggZmlsZSBpcw0KaW4gZmFjdCBhIHNldCBvZiBuYW1lZCBmbGF0IGZp bGUgc3BhY2VzLCBlYWNoIGRpc3RpbmN0IGFuZCBpbmRpdmlkdWFsbHkNCmFk ZHJlc3NhYmxlIHVzaW5nIHRoZSBnZW5lcmFsLXB1cnBvc2UgZmlsZSBhY2Nl c3Mgc2VtYW50aWNzLiAgRm9yIGV4YW1wbGUsIA0KaW4gV2luZG93cyBOVCwg aXQgaXMgcG9zc2libGUgdG8gb3BlbiBzZXBlcmF0ZSBmaWxlIGRlc2NyaXB0 b3JzIGZvciBlYWNoDQpmaWxlIGZvcmssIGFuZCBzdG9yZSBsYXJnZSB2b2x1 bWVzIG9mIGluZm9ybWF0aW9uIGluIGVhY2ggZm9yay4gIEFuIGF0dHJpYnV0 ZQ0Kc2VydmljZSBpcyBub3QgaW50ZW5kZWQgdG8gcHJvdmlkZSBzdWNoIGJy b2FkIHNlcnZpY2VzLCBhbHRob3VnaCBhdHRyaWJ1dGVzDQpjb3VsZCBiZSBz dXBwb3J0IGJ5IHN1Y2ggYSBzZXJ2aWNlOiBzaW1pbGFybHksIGl0IHdvdWxk IGJlIHBvc3NpYmxlIHRvDQpleHBvc2UgZmlsZSBmb3JrcyB0aHJvdWdoIHRo ZSBhdHRyaWJ1dGUgaW50ZXJmYWNlLCBidXQgcHJvYmFibHkgbm90IGRlc2ly YWJsZQ0KZ2l2ZW4gdGhhdCB0aGUgYXR0cmlidXRlIGludGVyZmFjZSBpcyBp bnRlbmRlZCBmb3IgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHkuDQoNCg0KVm5v ZGUgSW50ZXJmYWNlIEV4dGVuc2lvbnMNCg0KVGhyZWUgbmV3IHZub2RlIGNh bGxzIHByb3ZpZGUgdGhlIG1ham9yaXR5IG9mIHJlcXVpcmVkIGFuZCBjb21t b24gYWNjZXNzDQptZXRob2RzIHRvIGV4dGVuZGVkIGF0dHJpYnV0ZXMuICBU aGVzZSBjYWxscyBhcmUgc2ltaWxhciB0byB0aGUgZXhpc3RpbmcNCmNhbGxz IGZvciBtb2RpZnlpbmcgdm5vZGUgYXR0cmlidXRlcyAoVk9QX0dFVEFUVFIg YW5kIFZPUF9TRVRBVFRSKSwgZXhjZXB0DQp0aGF0IHRoZXkgYWRkaXRpb25h bGx5IGFsbG93IHRoZSBzcGVjaWZpY2F0aW9uIG9mIGFuIGF0dHJpYnV0ZSBu YW1lLCBhcw0Kd2VsbCBhcyBhY2NlcHRpbmcgYSBnZW5lcmFsIHB1cnBvc2Ug YmluYXJ5IGJsb2IsIG5vdCBhIHNwZWNpZmljIHN0cnVjdHVyZS4NCg0KIw0K IyUgZ2V0ZXh0YXR0ciAgIHZwICAgICAgPSA9ID0NCiMNCnZvcF9nZXRleHRh dHRyIHsNCiAgICAgICAgSU4gc3RydWN0IHZub2RlICp2cDsNCiAgICAgICAg SU4gY2hhciAqbmFtZTsNCiAgICAgICAgSU5PVVQgc3RydWN0IHVpbyAqdWlv Ow0KICAgICAgICBJTiBzdHJ1Y3QgdWNyZWQgKmNyZWQ7DQogICAgICAgIElO IHN0cnVjdCBwcm9jICpwOw0KfTsNCg0Kdm9wX2dldGV4dGF0dHIgcmV0cmll dmVzIGEgbmFtZWQgYXR0cmlidXRlIChuYW1lKSBmcm9tIGEgc3BlY2lmaWMg dm5vZGUNCih2cCksIGFuZCByZXR1cm5zIGl0IHRvIGEgc2V0IG9mIGJ1ZmZl cnMgKHVpbyksIGVpdGhlciBpbiB1c2Vyc3BhY2Ugb3INCnN5c3NwYWNlLiAg VG8gYXV0aG9yaXplIHRoZSBjYWxsLCBhIGNyZWRlbnRpYWwgc3RydWN0dXJl IGlzIHByb3ZpZGVkIChjcmVkKSwNCmFzIHdlbGwgYXMgYSBwcm9jZXNzIGZv ciBoYW5kbGluZyBzY2hlZHVsaW5nIGFuZCBsb2NrcyAocCkuICBUaGlzIGNh bGwNCm1ha2VzIHRoZSBzYW1lIHVzZSBvZiB1aW8gYXMgVk9QX1JFQUQgKGFu ZCBpbiBmYWN0IG1heSBiZSBpbXBsZW1lbnRlZCBvdmVyDQpWT1BfUkVBRCBp biBzb21lIGNhc2VzKSwgcGF5aW5nIGF0dGVudGlvbiB0byB0aGUgdWlvIHJl c2lkIGFuZCBvZmZzZXQNCnZhcmlhYmxlcywgYnV0IGJvdW5kaW5nIHJldHJp ZXZhbCBhdCB0aGUgc2l6ZSBvZiB0aGUgYXR0cmlidXRlIGRhdGEgY3VycmVu dGx5DQpzdG9yZWQgaW4gdGhlIGF0dHJpYnV0ZS4gIEEgbnVsbCBjcmVkZW50 aWFsIHBvaW50ZXIgbWF5IGJlIHBhc3NlZCB0bw0KaW5kaWNhdGUgdGhhdCB0 aGUga2VybmVsLCBhbmQgbm90IGEgc3BlY2lmaWMgcHJvY2VzcywgaXMgbWFr aW5nIHRoaXMgcmVxdWVzdC4NCg0KQXMgd2l0aCByZWFkdiwgdGhlIHVpbyBy ZXNpZCBmaWVsZCB3aWxsIGJlIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGUgYW1v dW50DQpvZiBkYXRhIHJlYWQuICBaZXJvIGlzIHJldHVybmVkIG9uIHN1Y2Nl c3MsIG90aGVyd2lzZSBhbiBlcnJubyB2YWx1ZSB0bw0KcmVmbGVjdCB0aGUg ZmFpbHVyZS4NCg0KTm8gbG9ja3MgbXVzdCBiZSBoZWxkIHRvIG1ha2UgdGhp cyBWT1BfIGNhbGwuDQoNClRoaXMgY2FsbCBtYXkgZmFpbCBpbiBhIG51bWJl ciBvZiB3YXlzLCBpbmNsdWRpbmcNCnJldHVybmluZyBFTk9FTlQgaWYgdGhl IGF0dHJpYnV0ZSBuYW1lIGlzIG5vdCBkZWZpbmVkLCBFSU8gaWYgYW4gSS9P DQplcnJvciBvY2N1cnMsIEVOWElPIGlmIHRoZSB1bmRlcmx5aW5nIGZpbGUg c3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgdGhlIHR5cGUNCm9mIGFjY2VzcyBy ZXF1ZXN0ZWQgKGkuZS4sIHJlYWRpbmcgYXR0cmlidXRlcyBmcm9tIGFuIHVu c3VwcG9ydGVkIHR5cGUgb2YNCmZpbGUpDQosIEVOT01FTSBpZiBtZW1vcnkg aXMgbm90IGF2YWlsYWJsZSB0byBzdXBwb3J0IHRoaXMNCm9wZXJhdGlvbiwg RURFQURMSyBpZiBsb2NrcyBhcmUgbm90IGF2YWlsYWJsZSwgRUFDQ0VTIGlm IHRoZSBjcmVkZW50aWFscw0KcGFzc2VkIGNhbm5vdCBhdXRob3JpemUgdGhl IHJlcXVlc3QsIEVGQVVMVCBpZiB0aGUgdWlvIHN0cnVjdHVyZSByZWZlcnMg dG8NCmFuIGludmFsaWQgdXNlcnNwYWNlIGFkZHJlc3MgKHNlZSBjb3B5aW4o KSksIGFuZCBFSU5WQUwgaWYgdGhlIGFyZ3VtZW50cyAoc3VjaA0KYXMgbmFt ZSBmb3JtYXR0aW5nKSBhcmUgaW52YWxpZC4gIEFkZGl0aW9uYWxseSwgRU9Q Tk9UU1VQUCBtYXkgYmUgcmV0dXJuZWQNCmlmIHRoZSBmaWxlIHN5c3RlbSBk b2VzIG5vdCBzdXBwb3J0IHRoZSByZXRyaWV2YWwgb2YgZXh0ZW5kZWQgYXR0 cmlidXRlcy4NCg0KIw0KIyUgc2V0ZXh0YXR0ciAgIHZwICAgICAgTCBMIEwN CiMNCnZvcF9zZXRleHRhdHRyIHsNCiAgICAgICAgSU4gc3RydWN0IHZub2Rl ICp2cDsNCiAgICAgICAgSU4gY2hhciAqbmFtZTsNCiAgICAgICAgSU5PVVQg c3RydWN0IHVpbyAqdWlvOw0KICAgICAgICBJTiBzdHJ1Y3QgdWNyZWQgKmNy ZWQ7DQogICAgICAgIElOIHN0cnVjdCBwcm9jICpwOw0KfTsNCg0Kdm9wX3Nl dGV4dGF0dHIgc2V0cyBhIG5hbWVkIGF0dHJpYnV0ZSAobmFtZSkgZm9yIGEg c3BlY2lmaWMgdm5vZGUgKHZwKSwNCmZpbmRpbmcgdGhlIHZhbHVlIHRvIHNl dCBpbiBhIHNldCBvZiBidWZmZXJzICh1aW8pLCBlaXRoZXIgaW4gdXNlcnNw YWNlDQpvciBzeXNzcGFjZS4gIFRvIGF1dGhvcml6ZSB0aGlzIGNhbGwsIGEg Y3JlZGVudGlhbCBzdHJ1Y3R1cmUgaXMgcHJvdmlkZWQNCihjcmVkKSwgYXMg d2VsbCBhcyBhIHByb2Nlc3MgZm9yIGhhbmRsaW5nIHNjaGVkdWxpbmcgYW5k IGxvY2tzIChwKS4gIFRoaXMNCmNhbGwgbWFrZXMgdGhlIHNhbWUgdXNlIG9m IHVpbyBhcyBWT1BfV1JJVEUgKGFuZCBpbiBmYWN0IG1heSBiZSBpbXBsZW1l bnRlZA0Kb3ZlciBWT1BfV1JJVEUgaW4gc29tZSBjYXNlcyksIHBheWluZyBh dHRlbnRpb24gdG8gdGhlIHVpbyByZXNpZCB2YXJpYWJsZSwNCmFsdGhvdWdo IG9wdGlvbmFsbHkgcmVqZWN0aW5nIG5vbi16ZXJvIG9mZnNldCBmaWVsZHMg YXMgdGhleSBtYXkgdmlvbGF0ZQ0KdGhlIHJlcGxhY2VtZW50IG5vdCBtb2Rp ZmljYXRpb24gcnVsZSBkZXNjcmliZWQgaW4gU2VtYW50aWNzLiAgQSBudWxs DQpjcmVkZW50aWFsIHBvaW50ZXIgbWF5IGJlIHBhc3NlZCB0byBpbmRpY2F0 ZSB0aGF0IHRoZSBrZXJuZWwsIGFuZCBub3QgYQ0Kc3BlY2lmaWMgcHJvY2Vz cywgaXMgbWFraW5nIHRoaXMgcmVxdWVzdC4NCg0KQXMgd2l0aCB3cml0ZXYs IHRoZSB1aW8gcmVzaWQgZmllbGQgd2lsbCBiZSB1cGRhdGVkIHRvIHJlZmxl Y3QgdGhlDQphbW91bnQgb2YgZGF0YSByZWFkLiAgWmVybyBpcyByZXR1cm5l ZCBvbiBzdWNjZXNzLCBvdGhlcndpc2UgYW4gZXJybm8NCnZhbHVlIHRvIHJl ZmxlY3QgdGhlIGZhaWx1cmUuDQoNCkFuIGV4Y2x1c2l2ZSBsb2NrIG11c3Qg YmUgaGVsZCBvbiAodnApIHRvIG1ha2UgdGhpcyBWT1BfIGNhbGwuDQoNClRo aXMgY2FsbCBtYXkgZmFpbCBpbiBhIG51bWJlciBvZiB3YXlzLCBpbmNsdWRp bmcgYWxsIGZhaWx1cmUgbW9kZXMgb2YNCnZvcF9nZXRleHRhdHRyLiAgQWRk aXRpb25hbGx5LCBpdCBpcyBwb3NzaWJsZSB0byByZWNlaXZlOiBFRkJJRyBp ZiB0aGUNCmF0dHJpYnV0ZSB2YWx1ZSBpcyBsYXJnZXIgdGhhbiBzb21lIGFk bWluaXN0cmF0aXZlIG9yIGFsbG9jYXRpb24gbGltaXQsDQpFTk9TUEMgaWYg dGhlIGRldmljZSBpcyBvdXQgb2Ygc3BhY2UgYnV0IG90aGVyd2lzZSB3b3Vs ZCBoYXZlIGFsbG93ZWQNCnRoZSBjYWxsIHRvIHN1Y2NlZWQsIGFuZCBFUk9G UyBpZiB0aGUgZmlsZSBzeXN0ZW0gaXMgbW91bnRlZCByZWFkb25seS4NCkVP UE5PVFNVUFAgbWF5IGJlIHJldHVybmVkIGlmIHRoZSBmaWxlIHN5c3RlbSBk b2VzIG5vdCBzdXBwb3J0IHRoZQ0Kc2V0dGluZyBvZiBleHRlbmRlZCBhdHRy aWJ1dGVzLg0KDQojDQojJSBybWV4dGF0dHIgICAgdnAgICAgICBMIEwgTA0K Iw0Kdm9wX3JtZXh0YXR0ciB7DQogICAgICAgIElOIHN0cnVjdCB2bm9kZSAq dnA7DQogICAgICAgIElOIGNoYXIgKm5hbWU7DQogICAgICAgIElOIHN0cnVj dCB1Y3JlZCAqY3JlZDsNCiAgICAgICAgSU4gc3RydWN0IHByb2MgKnA7DQp9 Ow0KDQp2b3Bfcm1leHRhdHRyIHJlbW92ZXMgYSBuYW1lZCBhdHRyaWJ1dGUg KG5hbWUpIGZvciBhIHNwZWNpZmljIHZub2RlICh2cCkuDQpUbyBhdXRob3Jp emUgdGhpcyBjYWxsLCBhIGNyZWRlbnRpYWwgc3RydWN0dXJlIGlzIHByb3Zp ZGVkIChjcmVkKSwgYXMgd2VsbA0KYXMgYSBwcm9jZXNzIGZvciBoYW5kbGlu ZyBzY2hlZHVsaW5nIGFuZCBsb2NrcyAocCkuICBBIG51bGwgY3JlZGVudGlh bA0KcG9pbnRlciBtYXkgYmUgcGFzc2VkIHRvIGluZGljYXRlIHRoYXQgdGhl IGtlcm5lbCwgYW5kIG5vdCBhIHNwZWNpZmljDQpwcm9jZXNzLCBpcyBtYWtp bmcgdGhpcyByZXF1ZXN0Lg0KDQpaZXJvIGlzIHJldHVybmVkIG9uIHN1Y2Nl c3MsIG90aGVyd2lzZSBhbiBlcnJubyB2YWx1ZSB0byByZWZsZWN0IHRoZQ0K ZmFpbHVyZS4NCg0KQW4gZXhjbHVzaXZlIGxvY2sgbXVzdCBiZSBoZWxkIG9u ICh2cCkgdG8gbWFrZSB0aGlzIFZPUF8gY2FsbC4NCg0KVGhpcyBjYWxsIG1h eSBmYWlsIGluIGEgbnVtYmVyIG9mIHdheXMsIGFsbCBvZiB3aGljaCBhcmUg ZG9jdW1lbnRlZCBhYm92ZQ0KZm9yIHZvcF9zZXRleHRhdHRyLiAgRU9QTk9U U1VQUCBtYXkgYmUgcmV0dXJuZWQgaWYgdGhlIGZpbGUgc3lzdGVtIGRvZXMN Cm5vdCBzdXBwb3J0IHRoZSByZW1vdmFsIG9mIGFuIGV4dGVuZGVkIGF0dHJp YnV0ZS4NCg0KDQpWRlMgSW50ZXJmYWNlcw0KDQpUbyBzdXBwb3J0IGFuIGV4 dGVuZGVkIGF0dHJpYnV0ZSBpbXBsZW1lbnRhdGlvbiBvbiBVRlMsIG9uZSBh ZGRpdGlvbmFsDQpWRlMgY2FsbCBpcyBkZWZpbmVkOg0KDQogICAgICAgIGlu dCAgICAgKCp2ZnNfZXh0YXR0cmN0bCkgX19QKChzdHJ1Y3QgbW91bnQgKm1w LCBpbnQgY21kLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2hhciAqYXR0cm5hbWUsIGNhZGRyX3QgYXJnLA0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHJvYyAqcCkp OyANCg0KVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBVRlMgdmZzX3F1b3RhY3Rs IGNhbGwsIGFsbG93aW5nIGZvciB0aGUgcnVudGltZQ0KY29uZmlndXJhdGlv biBvZiBleHRlbmRlZCBhdHRyaWJ1dGUgbWVjaGFuaXNtcywgaW5jbHVkaW5n IGJhY2tpbmcNCmZpbGVzIGZvciBhdHRyaWJ1dGUgc3RvcmFnZS4gIFRoZSBk ZXRhaWxzIGFyZSBVRlMtc3BlY2lmaWMsIGJ1dCB0aGVyZSBpcw0KcHJlY2Vk ZW50IGZvciBVRlMtc3BlY2lmaWMgVkZTIGNhbGxzIHRvIGNvbmZpZ3VyZSBV U0Ytc3BlY2lmaWMgYmVoYXZpb3IuDQpXaGlsZSBpbiB0aGUgbG9uZyB0ZXJt LCBpdCB3b3VsZCBwcm9iYWJseSBiZSBkZXNpcmFibGUgdG8gc3BlY2lmeSBh DQpnZW5lcmFsIG1lY2hhbmlzbSBmb3IgcHVzaGluZyBjb25maWd1cmF0aW9u IHN0YXRlIGludG8gVkZTJ3MsIHRoaXMNCm1lY2hhbmlzbSB3b3JrcyB3ZWxs IGdpdmVuIHRoZSB0YXN0LiAgVGhlIFVGUyBleHRlbmRlZCBhdHRyaWJ1dGUN CmltcGxlbWVudGF0aW9uIGJhY2tzIGV4dGVuZGVkIGF0dHJpYnV0ZXMgaW50 byB2bm9kZXMgKHVzdWFsbHkgc3RvcmVkDQppbiB0aGUgc2FtZSBmaWxlIHN5 c3RlbSwgYWx0aG91Z2ggbm90IG5lY2Vzc2FyaWx5KSwgaW5kZXhlZCBieSB0 aGUNCmlub2RlIG51bWJlciBvZiB0aGUgdm5vZGUgdG8gd2hpY2ggdGhlIGF0 dHJpYnV0ZSBpcyBhcHBsaWVkLiAgY21kIG1heQ0KY3VycmVudGx5IHRha2Ug b24gdGhlIHZhbHVlczoNCg0KI2RlZmluZSBVRlNfRVhUQVRUUl9DTURfU1RB UlQgICAweDAwMDAwMDAxDQojZGVmaW5lIFVGU19FWFRBVFRSX0NNRF9TVE9Q ICAgIDB4MDAwMDAwMDINCiNkZWZpbmUgVUZTX0VYVEFUVFJfQ01EX0VOQUJM RSAgMHgwMDAwMDAwMw0KI2RlZmluZSBVRlNfRVhUQVRUUl9DTURfRElTQUJM RSAweDAwMDAwMDA0DQoNCldoaWNoIHJlZmVyIHRvIHN0YXJ0aW5nIGFuZCBz dG9wcGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCBvbiBhDQpwYXJ0 aWN1bGFyIFVGUyBmaWxlIHN5c3RlbSAobXApLCBhcyB3ZWxsIGFzIGVuYWJs aW5nIGFuZCBkaXNhYmxpbmcgdGhlDQpiYWNraW5nIG9mIHNwZWNpZmljIGF0 dHJpYnV0ZXMgb250byBzcGVjaWZpYyBhdHRyaWJ1dGUgZmlsZXMgKGFyZyBp cw0KY2FzdCBvZiBjaGFyICopLiAgVGhpcyBiZWhhdmlvciBtYXkgY2hhbmdl IHNvbWUsIGFuZCBhcyBzdWNoIGlzIG5vdA0KZG9jdW1lbnRlZCBoZXJlIGZ1 cnRoZXIuDQoNCg0KU3lzY2FsbHMNCg0KRWFjaCB2bm9kZSBjYWxsIGlzIGN1 cnJlbnRseSBleHBvc2VkIHZpYSBvbmUgc3lzY2FsbDoNCg0KaW50ICAgICBl eHRhdHRyX3NldF9maWxlKGNoYXIgKnBhdGgsIGNoYXIgKmF0dHJuYW1lLCBz dHJ1Y3QgaW92ZWMgKmlvdnAsDQogICAgICAgIHVfaW50IGlvdmNudCk7DQpp bnQgICAgIGV4dGF0dHJfZ2V0X2ZpbGUoY2hhciAqcGF0aCwgY2hhciAqYXR0 cm5hbWUsIHN0cnVjdCBpb3ZlYyAqaW92cCwNCiAgICAgICAgdV9pbnQgaW92 Y250KTsNCmludCAgICAgZXh0YXR0cl9ybV9maWxlKGNoYXIgKnBhdGgsIGNo YXIgKmF0dHJuYW1lKTsNCg0KRm9yIGVhY2ggY2FsbCwgcGF0aCBpcyBjb252 ZXJ0ZWQgdmlhIG5hbWVpKCkgdG8gYSB2bm9kZSwgd2l0aCBsb2NraW5nDQpm b3IgdGhlIHNlY29uZCBhbmQgdGhpcmQgY2FsbHMuICBXaGlsZSB0aGUgdm5v ZGUgaW50ZXJmYWNlIGRvZXMgbm90IHBsYWNlDQphIGxpbWl0IG9uIHRoZSBs ZW5ndGggb2YgYXR0cmlidXRlIG5hbWVzLCB0aGUgc3lzY2FsbCBtdXN0IGNv cHkgdGhlIHVzZXJsYW5kDQpzdHJpbmcgaW50byBrZXJuZWwgc3BhY2UgZm9y IHRoZSB2bm9kZSBjYWxsLCBzbyBwbGFjZXMgYSBsaW1pdCBvZiANCkVYVEFU VFJfTUFYTkFNRUxFTiBjaGFyYWN0ZXJzIG9uIHRoZSBudWwtdGVybWluYXRl ZCBzdHJpbmcsIGluY2x1ZGluZyB0aGUNCm51bCB0ZXJtaW5hdG9yLiAgSW4g dGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIEVYVEFUVFJfTUFYTkFNRUxF TiBpcw0KZGVmaW5lZCBhcyBOQU1FX01BWCwgd2hpY2ggaXMgMjU1IGNoYXJh Y3RlcnMuICBUaGlzIGRvZXMgbm90IHByZWNsdWRlDQppbmNyZWFzaW5nIHRo aXMgbGltaXQsIG9yIHVuZGVybHlpbmcgZmlsZSBzeXN0ZW1zIHN1cHBvcnRp bmcgaGlnaGVyIG9yDQpsb3dlciBsaW1pdHMuICBUaGUgaW92cCBhbmQgaW92 Y250IGFyZ3VtZW50cyBhcmUgc2ltaWxhciB0byB0aG9zZSBmb3VuZA0KaW4g cmVhZHYgYW5kIHdyaXRldiwgYW5kIGFyZSBjb252ZXJ0ZWQgYnkgdGhlIHN5 c2NhbGwgd3JhcHBlcnMgaW50bw0KYXBwcm9wcmlhdGVseSBmb3JtYXRlZCB1 aW8gc3RydWN0dXJlcyBmb3IgdGhlIHZub2RlIGNhbGwuDQoNClRoZSBWRlMg Y2FsbCBpcyBleHBvc2VkIHZpYSBvbmUgc3lzY2FsbDoNCg0KaW50ICAgICBl eHRhdHRyY3RsKGNoYXIgKnBhdGgsIGludCBjbWQsIGNoYXIgKmF0dHJuYW1l LCBjYWRkcl90IGFyZyk7DQoNClRoZSBtb3VudHBvaW50IGlzIHJldHJpZXZl ZCBmcm9tIHBhdGgsIHRoZSBhdHRyaWJ1dGUgbmFtZSByZWFkIGludG8gYSBr ZXJuZWwNCmJ1ZmZlciwgYW5kIHRoZSBvdGhlciBhcmd1bWVudHMgcGFzc2Vk IHN0cmFpZ2h0IHRocm91Z2guDQoNCg== --0-2036405370-945287061=:22637 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="extattr.h" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.BSF.3.96.991215143115.22637C@fledge.watson.org> Content-Description: LyotDQogKiBDb3B5cmlnaHQgKGMpIDE5OTkgUm9iZXJ0IE4uIE0uIFdhdHNv bg0KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqDQogKiBSZWRpc3RyaWJ1 dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQNCiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KICogYXJl IG1ldDoNCiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQogKiAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIuDQogKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KICogICAgZG9jdW1lbnRhdGlvbiBh bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry aWJ1dGlvbi4NCiAqDQogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ IFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EDQog KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCiAqIElNUExJRUQgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFDQogKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW RU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM RQ0KICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwNCiAqIERBTUFH RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO VCBPRiBTVUJTVElUVVRFIEdPT0RTDQogKiBPUiBTRVJWSUNFUzsgTE9TUyBP RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ VElPTikNCiAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUDQogKiBM SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZDQogKiBPVVQgT0YgVEhFIFVT RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP U1NJQklMSVRZIE9GDQogKiBTVUNIIERBTUFHRS4NCiAqDQogKgkkSWQgJA0K ICovDQoNCiNpZm5kZWYgX1NZU19FWFRBVFRSX0hfDQojZGVmaW5lIF9TWVNf RVhUQVRUUl9IXw0KDQojZGVmaW5lIEVYVEFUVFJfTUFYTkFNRUxFTglOQU1F X01BWA0KDQojaWZkZWYgS0VSTkVMDQoNCiNlbHNlIC8qIEtFUk5FTCAqLw0K DQppbnQJZXh0YXR0cmN0bChjaGFyICpwYXRoLCBpbnQgY21kLCBjaGFyICph dHRybmFtZSwgY2FkZHJfdCBhcmcpOw0KaW50CWV4dGF0dHJfc2V0X2ZpbGUo Y2hhciAqcGF0aCwgY2hhciAqYXR0cm5hbWUsIHN0cnVjdCBpb3ZlYyAqaW92 cCwNCgl1X2ludCBpb3ZjbnQpOw0KaW50CWV4dGF0dHJfZ2V0X2ZpbGUoY2hh ciAqcGF0aCwgY2hhciAqYXR0cm5hbWUsIHN0cnVjdCBpb3ZlYyAqaW92cCwN Cgl1X2ludCBpb3ZjbnQpOw0KaW50CWV4dGF0dHJfcm1fZmlsZShjaGFyICpw YXRoLCBjaGFyICphdHRybmFtZSk7DQoNCg0KI2VuZGlmIC8qIEtFUk5FTCAq Lw0KDQoNCiNlbmRpZiAvKiBfU1lTX0VYVEFUVFJfSF8gKi8NCg== --0-2036405370-945287061=:22637 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="acl_details.txt" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.BSF.3.96.991215143115.22637D@fledge.watson.org> Content-Description: QWNjZXNzIENvbnRyb2wgTGlzdHMNCi0tLS0tLS0tLS0tLS0tLS0tLS0tDQoN CkludHJvZHVjdGlvbg0KDQpBY2Nlc3MgQ29udHJvbCBsaXN0cyBleHRlbmQg dGhlIFVOSVggZmlsZSBhbmQgZGlyZWN0b3J5IHBlcm1pc3Npb24gc2V0IHRv DQphbGxvdyBmaWxlIG93bmVycyB0byBkZWZpbmUgYWRkaXRpb25hbCByaWdo dHMgZm9yIHNwZWNpZmljIHVzZXJzIGFuZCBncm91cHMNCmZvciB0aGF0IGZp bGUuDQoNCg0KUmF0aW9uYWxlDQoNClRoZSBjdXJyZW50IFVOSVggcGVybWlz c2lvbiBtb2RlbCBpcyBxdWl0ZSBsaW1pdGVkOiBpdCBhbGxvd3MgYSBmaWxl IG93bmVyDQp0byBzcGVjaWZ5IGEgbGltaXRlZCBzZXQgb2YgcmlnaHRzIChy ZWFkLCB3cml0ZSwgZXhlY3V0ZS9sb29rdXApIG92ZXINCmEgbGltaXRlZCBz ZXQgb2YgcHJpbmNpcGFscyAoZmlsZSBvd25lciwgZmlsZSBncm91cCwgYW5k IG90aGVyKS4gIFRoaXMgcmVsaWVzDQpvbiB0aGUgc3lzdGVtIGFkbWluaXN0 cmF0b3IgdG8gbWFpbnRhaW4gZ3JvdXBzIGZvciBhbGwgcG9zc2libGUgcGVy bXV0YXRpb25zDQpvZiB1c2VycyB0aGF0IHdpc2ggdG8gc2hhcmUgZmlsZXMg d2hpbGUgbm90IG1ha2luZyB0aGUgZmlsZSBhY2Nlc3NpYmxlIHRvDQphbGwg dXNlcnMgb24gdGhlIHN5c3RlbSwgYW4gaW5hcHByb3ByaWF0ZSBhc3N1bXB0 aW9uIGluIG1vc3QgbXVsdGktdXNlcg0KZW52aXJvbm1lbnRzLiAgUE9TSVgu MWUgZGVmaW5lcyBhbiBBY2Nlc3MgQ29udHJvbCBMaXN0IGV4dGVuc2lvbiB0 aGF0DQphbGxvd3MgdXNlcnMgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIHVzZXJz IGFuZCBncm91cHMgZm9yIGEgZmlsZSwgYW5kDQpyaWdodHMgZm9yIHRoZW0g b3ZlciB0aGUgZmlsZS4NCg0KVGhpcyBhbGxvd3MgYSBudW1iZXIgb2Ygc2Vj dXJpdHkgaW1wcm92ZW1lbnRzLCBib3RoIGZyb20gdGhlIHBlcnNwZWN0aXZl DQpvZiByZWd1bGFyIHVzZXJzIHNoYXJpbmcgZmlsZXMsIGFuZCBhbHNvIGZy b20gYSBzeXN0ZW1zIHBlcnNwZWN0aXZlIGFzIGl0DQphbGxvd3MgdGhlIGlu Y3JlYXNlZCB1c2Ugb2YgdGhlIHByaXZpbGVnZSBvZiBsZWFzdCBwcmluY2lw YWw6IHRoYXQgcHJvY2Vzc2VzDQpiZSBnaXZlbiBvbmx5IHRoZSByaWdodHMg dGhhdCB0aGV5IHJlcXVpcmUuICBGb3IgZXhhbXBsZSwgQUNMcyBzaW1wbGlm eQ0KbWFuYWdpbmcgZGF0YSBzaGFyaW5nIGZvciBzeXN0ZW0gc2VydmljZXMg c3VjaCBhcyBtYWlsLg0KDQpBbHRob3VnaCBBQ0xzIG1heSB2YXJ5IGluIHNl bWFudGljcyBmcm9tIGZpbGUgc3lzdGVtIHRvIGZpbGUgc3lzdGVtLCBqdXN0 DQphcyB0aGUgcHJlY2lzZSBkZXRhaWxzIG9mIGZpbGUgc2VtYW50aWNzIHZh cnksIGl0IGlzIHVzZWZ1bCB0byBkZWZpbmUNCmEgc2luZ2xlIGFuZCBjb21w cmVoZW5zaXZlIHZub2RlIGFuZCBzeXNjYWxsIGludGVyZmFjZSB0byBhbGxv dw0KY29uc2lzdGVudCBhY2Nlc3MgYWNyb3NzIGZpbGUgc3lzdGVtcy4NCg0K DQpTZXJ2aWNlcw0KDQpBcyB3aXRoIGZpbGUgc2VtYW50aWNzLCBBQ0wgc2Vt YW50aWNzIG1heSB2YXJ5IGZyb20gZmlsZSBzeXN0ZW0gdG8gZmlsZQ0Kc3lz dGVtLiAgRm9yIGV4YW1wbGUsIHBlcm1pc3Npb25zIGluIGEgZGlzdHJpYnV0 ZWQgc3lzdGVtIHN1Y2ggYXMgQUZTIG9yDQpDb2RhIG1heSBoYXZlIHF1aXRl IGRpZmZlcmVudCBpbXBsaWNhdGlvbnMgZnJvbSBwZXJtaXNzaW9ucyB1c2Vk IGxvY2FsbHkNCmluIFVGUy9GRlMuICBIb3dldmVyLCBBQ0xzIGdlbmVyYWxs eSBoYXZlIHJvdWdobHkgdGhlIHNhbWUgc3ludGFjdGljIGZvcm06DQphIGxp c3Qgb2YgcHJpbmNpcGFscywgYW5kIGZvciBlYWNoIHByaW5jaXBhbCwgYSBz ZXQgb2YgcmlnaHRzLiAgU2ltaWxhcmx5LA0KdGhlcmUgYXJlIHNpbWlsYXIg b3BlcmF0aW9ucyByZWdhcmRsZXNzIG9mIHRoZSBmaWxlIHN5c3RlbTogc2V0 dGluZyBhbmQNCnJldHJpZXZpbmcgQUNMcywgYXMgd2VsbCBhcyBjaGVja2lu ZyB0aGUgdmFsaWRpdHkgb2YgYW4gQUNMIGZvciBhIHRhcmdldA0KZmlsZSBp biBhbiBlbnZpcm9ubWVudCB3aGVyZSB0aGUgdmFsaWRpdHkgb2YgQUNMcyB2 YXJpZXMgYnkgdGFyZ2V0LiAgQXMNCnN1Y2gsIHdlIGRlZmluZSBhIHN0YW5k YXJkIHZub2RlIGludGVyZmFjZSwgc3lzY2FsbCBpbnRlcmZhY2UsIGFuZA0K c2V0IG9mIHN5bnRheCByZXF1aXJlbWVudHMgZm9yIEFDTHMuICBUaGlzIHBl cm1pdHMgaW5kaXZpZHVhbCBpbXBsZW1lbnRhdGlvbnMsDQpzdWNoIGFzIFBP U0lYLjFlIG9uIFVGUy9GRlMsIHRvIGRlZmluZSB0aGVpciBvd24gc2VtYW50 aWNzLCB5ZXQgdXNlIHRoZQ0Kc2FtZSBpbnRlcmZhY2UgYXMgb3RoZXIgaW1w bGVtZW50YXRpb25zLCBzdWNoIGFzIEFGUyBvciBDb2RhIHBlcm1pc3Npb25z Lg0KDQoNCkV4aXN0aW5nIEltcGxlbWVudGF0aW9ucw0KDQpBIG51bWJlciBv ZiBvcGVyYXRpbmcgc3lzdGVtcyBzdXBwb3J0IEFDTHMsIG9yIGhhdmUgYWRk b24gcGFja2FnZXMgdGhhdA0KcHJvdmlkZSBBQ0wgZnVuY3Rpb25hbGl0eS4g IE1hbnkgb2YgdGhlc2UgaW1wbGVtZW50YXRpb25zIGFyZSBiYXNlZCBvbiB0 aGUNClBPU0lYLjFlIGRyYWZ0LCBzb21lIHdpdGggbWlub3IgaW50ZXJmYWNl IGNoYW5nZXMuICBTb2xhcmlzIGFuZCBJUklYDQpib3RoIHN1cHBvcnQgQUNM cyBpbiB0aGUgYmFzZSBmaWxlIHN5c3RlbSB3aXRob3V0IGFkZG9uczsgaW4g dGhlIGNhc2Ugb2YNCklSSVgsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBhbG1v c3QgZW50aXJlbHkgUE9TSVguMWUtY29tcGxpYW50LiAgSW4gdGhlDQpjYXNl IG9mIFNvbGFyaXMsIHRoZXJlIGFyZSBzaWduaWZpY2FudCBkaWZmZXJlbmNl cyBiZXR3ZWVuIHRoZSBpbnRlcmZhY2UNCmFuZCBQT1NJWC4xZS4gIExpbnV4 IGFsc28gaGFzIGFuIEFDTCBpbXBsZW1lbnRhdGlvbiwgb3JpZ2luYWxseSBj bG9zZXINCnRvIFNvbGFyaXMsIGJ1dCBub3cgbW92aW5nIGluIHRoZSBkaXJl Y3Rpb24gb2YgUE9TSVguMWUuICBBIG51bWJlciBvZg0Kb3RoZXIgb3BlcmF0 aW5nIHN5c3RlbXMgYWxzbyBzdXBwb3J0IEFDTHMsIGJ1dCB3ZXJlIG5vdCBh dmFpbGFibGUgdG8gdXMNCmZvciBpbnNwZWN0aW9uLiAgQSBjcm9zcy1wbGF0 Zm9ybSBQT1NJWC4xZSBpbXBsZW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QNCmlz IGF2YWlsYWJsZSBmb3IgZGlzY3Vzc2lvbiBvZiB0aGUgUE9TSVguMWUgaW50 ZXJmYWNlIGFuZCBpdHMgcHJhY3RpY2FsDQppbXBsZW1lbnRhdGlvbiBhc3Bl Y3RzLiAgU2VuZCBlbWFpbCB0byBtYWpvcmRvbW9AY3lydXMud2F0c29uLm9y ZywgDQpjb250YWluaW5nICJzdWJzY3JpYmUgcG9zaXgxZSIuDQoNCg0KQUNM IFN5bnRheA0KDQpQT1NJWC4xZSBkZWZpbmVzIEFDTHMgYW5kIEFDTCBFbnRy aWVzLCB0aGUgY29tcG9uZW50cyBvZiBBQ0xzLiAgSW4gdGhlDQpGcmVlQlNE IFBPU0lYLjFlIEFDTCBpbXBsZW1lbnRhdGlvbiwgdGhlc2Ugb2JqZWN0IHR5 cGVzIGFyZSBiYWNrZWQgYnkNCnN0cnVjdHVyZXM6DQoNCnN0cnVjdCBhY2xf ZW50cnkgew0KICAgICAgICBhY2xfdGFnX3QgICAgICAgYWVfdGFnOw0KICAg ICAgICB1aWRfdCAgIGFlX2lkOw0KICAgICAgICBhY2xfcGVybV90ICAgICAg YWVfcGVybTsNCn07DQp0eXBlZGVmIHN0cnVjdCBhY2xfZW50cnkgICAgICAg ICphY2xfZW50cnlfdDsNCg0Kc3RydWN0IGFjbCB7DQogICAgICAgIGludCAg ICAgYWNsX2NudDsNCiAgICAgICAgc3RydWN0IGFjbF9lbnRyeSAgICAgICAg YWNsX2VudHJ5W01BWF9BQ0xfRU5UUklFU107DQp9Ow0KdHlwZWRlZiBzdHJ1 Y3QgYWNsICAgICAgKmFjbF90Ow0KDQpFYWNoIGVudHJ5IHJlZmVycyB0byBh IHByaW5jaXBhbCBuYW1lc3BhY2UgKGFjbF90YWdfdCksIGhhcw0KYSBxdWFs aWZpZXIgaW5kaWNhdGluZyB3aGljaCBwcmluY2lwYWwgaW4gdGhlIG5hbWVz cGFjZSBpcyBpbnRlbmRlZA0KKHVpZF90KSwgYW5kIGFzc2lnbnMgYSBzcGVj aWZpYyBzZXQgb2YgcmlnaHRzIChhY2xfcGVybV90KS4gIEEgc2V0IG9mDQp0 aGVzZSBlbnRyaWVzIGlzIHRoZW4gY29tYmluZWQgdG8gZm9ybSBhIGNvbXBs ZXRlIEFDTC4NCg0KUE9TSVguMWUgZGVmaW5lcyBhIGxhcmdlIGxpYnJhcnkg b2YgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmcgdGhlc2UNCkFDTHMgYW5k IEFDTCBlbnRyaWVzIGluIHRoZSBhYnN0cmFjdCAod2l0aG91dCBhd2FyZW5l c3Mgb2YgdGhlIHVuZGVybHlpbmcNCkMgc3RydWN0dXJlcywgd2hlcmV2ZXIg cG9zc2libGUpLCBhcyB3ZWxsIGFzIHRoZSBtb3JlIHJlbGV2YW50IGludGVy ZmFjZXMNCmZvciByZXRyaWV2aW5nIGFuZCBzdWJtaXR0aW5nIEFDTHMgYXNz b2NpYXRlZCB3aXRoIG9iamVjdHMuICBJbiB0aGUgRnJlZUJTRA0KaW1wbGVt ZW50YXRpb24sIHRoZXNlIGludGVyZmFjZXMgYXJlIGJhY2tlZCBieSBzbGln aHRseSBtb3JlIGdlbmVyYWwNCnN5c2NhbGxzLCB3aGljaCBpbiB0dXJuIGZv cndhcmQgcmVxdWVzdHMgdG8gc2xpZ2h0bHkgbW9yZSBnZW5lcmFsIHZub2Rl DQpvcGVyYXRpb25zOyBhdCBlYWNoIHN0ZXAgYWxvbmcgdGhlIHdheSwgdGhl IHNhbWUgc3ludGF4IGZvciBBQ0xzIGlzDQpwcmVzZXJ2ZWQsIGFuZCB0aGUg Y2hlY2tpbmcgb2Ygc2VtYW50aWNzIGlzIGdlbmVyYWxseSBsZWZ0IHRvIHRo ZQ0KaW1wbGVtZW50aW5nIGZpbGUgc3lzdGVtcy4NCg0KUE9TSVguMWUgYWxz byBkZWZpbmVzIGFuIEFDTCB0eXBlLCB0byBkaXN0aW5ndWlzaCBkaWZmZXJl bnQgQUNMcyBpbiB0aGUNCmNhc2UgdGhhdCBhbiBvYmplY3QgbWF5IGhhdmUg bW9yZSB0aGFuIG9uZSBBQ0wgYXNzaWduZWQgdG8gaXQuICBQT1NJWC4xZQ0K dXNlcyB0d28gdmFsdWVzLS1vbmUgZm9yIGFjY2VzcyBBQ0xzLCBhbmQgb25l IGZvciBkZWZhdWx0IEFDTHMgb25seQ0KYXBwcm9wcmlhdGUgd2hlcmUgdGhl IG9iamVjdCBpcyBhIGRpcmVjdG9yeS4gIFRoaXMgdHlwZSBzcGVjaWZpZXIg aXMNCmV4cG9zZWQgaW4gdGhlIEFQSSwgYW5kIG5vdCBzdG9yZWQgaW4gYW4g QUNMLCBhcyBhIHBhcnRpY3VsYXIgQUNMIG1heQ0KYmUgdmFsaWQgKGFuZCBh cHBsaWNhYmxlKSBpbiBib3RoIGNhc2VzLCBhbmQgaXQgaXMgbmVjZXNzYXJ5 IHRvIGNvbXBhcmUNCkFDTHMgYXMgdGhlIHNhbWUgdHlwZSwgZXZlbiBpZiB0 aGV5IGFyZSBkaWZmZXJlbnQgImFjbCB0eXBlcyIgaW4gdGhlDQpQT1NJWC4x ZSBzZW5zZS4NCg0KSW4gdGhlIGN1cnJlbnQgVkZTIGludGVyZmFjZSwgYWNj ZXNzIHRvIGZpbGVzIGlzIHZlcmlmaWVkIGJ5IHN1Ym1pdHRpbmcNCmEgdm5v ZGUgcmVmZXJlbmNlLCBhcyB3ZWxsIGFzIGNyZWRlbnRpYWxzLCB0byBWT1Bf QUNDRVNTIChhbmQgb3RoZXJzKQ0KYW5kIGNoZWNraW5nIG9mIHJpZ2h0cyBp cyBoYW5kbGVkIHdpdGhpbiB0aGUgVkZTLiAgV2l0aCBBQ0xzLCB0aGlzIGRv ZXMNCm5vdCBjaGFuZ2UsIHNvIHRoZSB2ZXJpZmljYXRpb24gb2YgQUNMcyBp cyBnZW5lcmFsbHkgaGlkZGVuIGZyb20gbW9zdA0Ka2VybmVsIGNvZGUuICBT aW1pbGFybHksIGFzIHdpdGggYXR0cmlidXRlcywgdGhlIHN0b3JhZ2Ugb2Yg QUNMcyBpcyBsZWZ0DQp1cCB0byB0aGUgZmlsZSBzeXN0ZW06IGluIHRoZSBj YXNlIG9mIHRoZSBGcmVlQlNEIFVGUy9GRlMgaW1wbGVtZW50YXRpb24sDQph biBleHRlbmRlZCBhdHRyaWJ1dGUgbWVjaGFuaXNtIGlzIHJlbGllZCB1cG9u IHRvIHByb3ZpZGUgc3RvcmFnZSBmb3INCkFDTHMuDQoNCg0KVm5vZGUgSW50 ZXJmYWNlIEV4dGVuc2lvbnMNCg0KVGhyZWUgbmV3IHZub2RlIGNhbGxzIHBy b3ZpZGUgdGhlIG1ham9yaXR5IG9mIHJlcXVpcmVkIGFuZCBjb21tb24gYWNj ZXNzDQptZXRob2RzIGZvciBBQ0xzLCBhbHRob3VnaCB0aGUgcHJhY3RpY2Fs IGltcGxlbWVudGF0aW9uIG9mIGEgbnVtYmVyIG9mDQp0aGVzZSBvcGVyYXRp b25zIGlzIGFmZmVjdGVkIGJ5IEFDTHMgaW4gZmlsZSBzeXN0ZW1zIHRoYXQg c3VwcG9ydCBBQ0xzLg0KVGhlc2UgY2FsbHMgYXJlIHNpbWlsYXIgdG8gZXhp c3RpbmcgY2FsbHMgZm9yIG1vZGlmeWluZyB2bm9kZSBhdHRyaWJ1dGVzDQoo Vk9QX0dFVEFUVFIgYW5kIFZPUF9TRVRBVFRSKSwgZXhjZXB0IHRoYXQgaW5z dGVhZCBvZiBwYXNzaW5nIHZhdHRycywNCnRoZXNlIHJvdXRpbmVzIHBhc3Mg c3RydWN0IGFjbCdzLCBhcyB3ZWxsIGFzIGFuICJhY2wgdHlwZSIuICBXaGls ZSB0aGUNCmludGVyZmFjZSBkb2VzIG5vdCBwdXQgbGltaXRzIG9uIHRoZSBj b250ZW50cyBvZiBlaXRoZXIgdGhlIEFDTCBub3IgaXRzDQp0eXBlLCB0aGUg dW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiB3aWxsIGV2YWx1YXRlIHRoZSBz dWJtaXR0ZWQgQUNMcw0KYmFzZWQgb24gaXRzIG93biBzZW1hbnRpY3MsIGFu ZCBtYXkgcmVqZWN0IGFueSBpdCBmaW5kcyB1bmZpdC4NCg0KIw0KIyUgZ2V0 YWNsICAgICAgIHZwICAgICAgPSA9ID0NCiMNCnZvcF9nZXRhY2wgew0KICAg ICAgICBJTiBzdHJ1Y3Qgdm5vZGUgKnZwOw0KICAgICAgICBJTiBhY2xfdHlw ZV90IHR5cGU7DQogICAgICAgIE9VVCBzdHJ1Y3QgYWNsICphY2xwOw0KICAg ICAgICBJTiBzdHJ1Y3QgdWNyZWQgKmNyZWQ7DQogICAgICAgIElOIHN0cnVj dCBwcm9jICpwOw0KfTsNCg0Kdm9wX2dldGFjbCByZXR1cm5zIGFuIEFDTCBv ZiB0eXBlICh0eXBlKSBmcm9tIGEgc3BlY2lmaWMgdm5vZGUgKHZwKSwgYW5k DQpyZXR1cm5zIGl0IHRvIGFuIEFDTCBidWZmZXIgKGFjbHApIGluIHN5c3Nw YWNlLiAgVG8gYXV0aG9yaXplIHRoZSBjYWxsLCBhDQpjcmVkZW50aWFsIHN0 cnVjdHVyZSBpcyBwcm92aWRlZCAoY3JlZCksIGFzIHdlbGwgYXMgYSBwcm9j ZXNzIGZvciBoYW5kbGluZw0Kc2NoZWR1bGluZyBhbmQgbG9ja3MgKHApLiAg QSBudWxsIGNyZWRlbnRpYWwgcG9pbnRlciBtYXkgYmUgcGFzc2VkIGluIHRv DQppbmRpY2F0ZSB0aGF0IHRoZSBrZXJuZWwsIGFuZCBub3QgYSBzcGVjaWZp YyBwcm9jZXNzLCBpcyBtYWtpbmcgdGhpcw0KcmVxdWVzdC4NCg0KQXMgd2l0 aCB2b3BfZ2V0YXR0ciwgdGhlIEFDTCBzdHJ1Y3R1cmUgcG9pbnRlZCB0byBi eSBhY2xwIHdpbGwgYmUgdXBkYXRlZA0KdG8gcmVmbGVjdCB0aGUgY3VycmVu dCBzdGF0ZSBvZiB0aGUgdm5vZGUgQUNMIGluIHF1ZXN0aW9uLiAgWmVybyBp cw0KcmV0dXJuZWQgb24gc3VjY2Vzcywgb3RoZXJ3aXNlIGFuIGVycm5vIHZh bHVlIHRvIHJlZmxlY3QgdGhlIGZhaWx1cmUuDQoNCk5vIGxvY2tzIG11c3Qg YmUgaGVsZCB0byBtYWtlIHRoaXMgVk9QXyBjYWxsLg0KDQpUaGlzIGNhbGwg bWF5IGZhaWwgaW4gYSBudW1iZXIgb2Ygd2F5cywgaW5jbHVkaW5nOg0KDQpF Tk9NRU0JSW5zdWZmaWNpZW50IG1lbW9yeSB0byBmdWxmaWxsIHJlcXVlc3QN CkVBQ0NFUwlQZXJtaXNzaW9uIHdhcyBkZW5pZWQgaW4gcmVhZGluZyB0aGlz IEFDTA0KRUlOVkFMCVRoZSBhY2wgdHlwZSBwYXNzZWQgaXMgaW52YWxpZCBm b3IgdGhlIHZub2RlDQpFT1BOT1RTVVBQCVRoaXMgZmlsZSBzeXN0ZW0gZG9l cyBub3Qgc3VwcG9ydCB2b3BfZ2V0YWNsDQoNCiMNCiMlIHNldGFjbCAgICAg ICB2cCAgICAgIEwgTCBMDQojIA0Kdm9wX3NldGFjbCB7DQogICAgICAgIElO IHN0cnVjdCB2bm9kZSAqdnA7DQogICAgICAgIElOIGFjbF90eXBlX3QgdHlw ZTsNCiAgICAgICAgSU4gc3RydWN0IGFjbCAqYWNscDsNCiAgICAgICAgSU4g c3RydWN0IHVjcmVkICpjcmVkOw0KICAgICAgICBJTiBzdHJ1Y3QgcHJvYyAq cDsNCn07DQoNCnZvcF9zZXRhY2wgc2V0cyBhbiBBQ0wgb2YgdHlwZSAodHlw ZSkgZm9yIGEgc3BlY2lmaWMgdm5vZGUgKHZwKSwgZmluZGluZw0KdGhlIEFD TCB0byBzZXQgaW4gdGhlIHN0cnVjdHVyZSBwb2ludGVkIHRvIGJ5IGFjbHAg aW4gc3lzc3BhY2UuICBUbw0KZGVsZXRlIGFuIEFDTCBvZiB0aGF0IHR5cGUs IGEgbnVsbCBhY2xwIHBvaW50ZXIgbWF5IGJlIHBhc3NlZC4gIFRvDQphdXRo b3JpemUgdGhpcyBjYWxsLCBhIGNyZWRlbnRpYWwgc3RydWN0dXJlIGlzIHBy b3ZpZGVkIChjcmVkKSwgYXMgd2VsbA0KYXMgYSBwcm9jZXNzIGZvciBoYW5k bGluZyBzY2hlZHVsaW5nIGFuZCBsb2NrcyAocCkuICBBIG51bGwgY3JlZGVu dGlhbA0KcG9pbnRlciBtYXkgYmUgcGFzc2VkIGluIHRvIGluZGljYXRlIHRo YXQgdGhlIGtlcm5lbCwgYW5kIG5vdCBhIHNwZWNpZmljDQpwcm9jZXNzLCBp cyBtYWtpbmcgdGhpcyByZXF1ZXN0Lg0KDQpaZXJvIGlzIHJldHVybmVkIG9u IHN1Y2Nlc3MsIG90aGVyd2lzZSBhbiBlcnJubyB2YWx1ZSB0byByZWZsZWN0 IHRoZQ0KZmFpbHVyZS4NCg0KQW4gZXhjbHVzaXZlIGxvY2sgbXVzdCBiZSBo ZWxkIG9uICh2cCkgdG8gbWFrZSB0aGlzIFZPUCBjYWxsLg0KDQpUaGlzIGNh bGwgbWF5IGZhaWwgaW4gYSBudW1iZXIgb2Ygd2F5cywgaW5jbHVkaW5nIGFs bCBmYWlsdXJlIG1vZGVzIG9mDQp2b3BfZ2V0YWNsLiAgQWRkaXRpb25hbGx5 LCBpdCBpcyBwb3NzaWJsZSB0byByZWNlaXZlOg0KDQpFTk9TUEMJVGhlIGZp ZWwgc3lzdGVtIGlzIG91dCBvZiBzcGFjZQ0KRVJPRlMJVGhlIGZpbGUgc3lz dGVtIGlzIHJlYWRvbmx5DQoNCiMgDQojJSBhY2xjaGVjayAgICAgdnAgICAg ICA9ID0gPSANCiMNCnZvcF9hY2xjaGVjayB7DQogICAgICAgIElOIHN0cnVj dCB2bm9kZSAqdnA7DQogICAgICAgIElOIGFjbF90eXBlX3QgdHlwZTsNCiAg ICAgICAgSU4gc3RydWN0IGFjbCAqYWNscDsNCiAgICAgICAgSU4gc3RydWN0 IHVjcmVkICpjcmVkOw0KICAgICAgICBJTiBzdHJ1Y3QgcHJvYyAqcDsNCn07 DQoNCnZvcF9hY2xjaGVjayBhbGxvd3MgdGhlIGNhbGxlciB0byB2ZXJpZnkg dGhlIHZhbGlkaXR5IG9mIGFuIEFDTCAoYWNscCkNCm9mIHR5cGUgKHR5cGUp IGZvciBhIHNwZWNpZmljIHZub2RlICh2cCkuICBUaGlzIHNob3VsZCB1c3Vh bGx5IGJlIGFuDQppbmRpY2F0b3Igb2Ygd2hldGhlciBvciBub3QgdGhlIFZG UyBsYXllciB3b3VsZCByZXR1cm4gRUlOVkFMIGZvciBhDQpzaW1pbGFyIGNh bGwgdG8gdm9wX3NldGFjbCwgYW5kIGFsbG93cyB1c2VybGFuZCBwcm9jZXNz ZXMgdG8gY2hlY2sgQUNMDQp2YWxpZGl0eSBmb3IgYSBwYXJ0aWN1bGFyIHRh cmdldC4gIFRvIGF1dGhvcml6ZSB0aGlzIGNhbGwsIGEgY3JlZGVudGlhbA0K c3RydWN0dXJlIGlzIHByb3ZpZGVkIChjcmVkKSwgYXMgd2VsbCBhcyBhIHBy b2Nlc3MgZm9yIGhhbmRsaW5nIHNjaGVkdWxpbmcNCmFuZCBsb2NrcyAocCku ICBBIG51bGwgY3JlZGVudGlhbCBwb2ludGVyIG1heSBiZSBwYXNzZWQgaW4g dG8gaW5kaWNhdGUNCnRoYXQgdGhlIGtlcm5lbCwgYW5kIG5vdCBhIHNwZWNp ZmljIHByb2Nlc3MsIGlzIG1ha2luZyB0aGlzIHJlcXVlc3QuDQoNClplcm8g aXMgcmV0dXJuZWQgb24gc3VjY2Vzcywgb3RoZXJ3aXNlIGFuIGVycm5vIHZh bHVlIHRvIHJlZmxlY3QgdGhlDQpmYWlsdXJlLg0KDQpObyBsb2NrcyBtdXN0 IGJlIGhlbGQgdG8gbWFrZSB0aGlzIFZPUF8gY2FsbC4NCg0KVGhpcyBjYWxs IG1heSBmYWlsIGluIGEgbnVtYmVyIG9mIHdheXMsIGluY2x1ZGluZyBhbGwg ZmFpbHVyZSBtb2RlcyBvZg0Kdm9wX2dldGFjbC4NCg0KDQpWRlMgSW50ZXJm YWNlcw0KDQpUaGVyZSBhcmUgbm8gVkZTIGludGVyZmFjZXMgcmVsYXRpbmcg dG8gQUNMcyBjdXJyZW50bHkgZGVmaW5lZC4NCg0KDQpTeXNjYWxscw0KDQpF YWNoIHZub2RlIGNhbGwgaXMgZXhwb3NlZCB2aWEgYSBudW1iZXIgb2Ygc3lz Y2FsbHM6DQoNCmludCAgICAgYWNsX3N5c2NhbGxfZ2V0X2ZpbGUoY2hhciAq cGF0aCwgYWNsX3R5cGVfdCB0eXBlLCBzdHJ1Y3QgYWNsICphY2xwKTsNCmlu dCAgICAgYWNsX3N5c2NhbGxfc2V0X2ZpbGUoY2hhciAqcGF0aCwgYWNsX3R5 cGVfdCB0eXBlLCBzdHJ1Y3QgYWNsICphY2xwKTsNCmludCAgICAgYWNsX3N5 c2NhbGxfZ2V0X2ZkKGludCBmaWxlZGVzLCBhY2xfdHlwZV90IHR5cGUsIHN0 cnVjdCBhY2wgKmFjbHApOw0KaW50ICAgICBhY2xfc3lzY2FsbF9zZXRfZmQo aW50IGZpbGVkZXMsIGFjbF90eXBlX3QgdHlwZSwgc3RydWN0IGFjbCAqYWNs cCk7DQppbnQgICAgIGFjbF9zeXNjYWxsX2RlbGV0ZV9kZWZfZmlsZShjb25z dCBjaGFyICpwYXRoX3ApOw0KaW50ICAgICBhY2xfc3lzY2FsbF9kZWxldGVf ZGVmX2ZkKGludCBmaWxlZGVzKTsNCmludCAgICAgYWNsX3N5c2NhbGxfYWNs Y2hlY2tfZmlsZShjaGFyICpwYXRoLCBhY2xfdHlwZV90IHR5cGUsDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFjbCAqYWNs cCk7DQppbnQgICAgIGFjbF9zeXNjYWxsX2FjbGNoZWNrX2ZkKGludCBmaWxl ZGVzLCBhY2xfdHlwZV90IHR5cGUsDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBhY2wgKmFjbHApOw0KDQpUaGVzZSBhcmUgdGhl IHN5c2NhbGxzIG5lY2Vzc2FyeSB0byBwcm92aWRlIHRoZSBQT1NJWC4xZSBB Q0wgbWFuaXB1bGF0aW9uDQpmdW5jdGlvbnMuICBJbiBzb21lIGNhc2VzLCBh IGJyb2RlciByYW5nZSBvZiBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZSB0 aGFuDQpyZXF1aXJlZCBmb3IgUE9TSVguMWUuDQoNCg== --0-2036405370-945287061=:22637 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="acl.h" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.BSF.3.96.991215143115.22637E@fledge.watson.org> Content-Description: LyotDQogKiBDb3B5cmlnaHQgKGMpIDE5OTkgUm9iZXJ0IE4uIE0uIFdhdHNv bg0KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqDQogKiBSZWRpc3RyaWJ1 dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQNCiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KICogYXJl IG1ldDoNCiAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQogKiAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIuDQogKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KICogICAgZG9jdW1lbnRhdGlvbiBh bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry aWJ1dGlvbi4NCiAqDQogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ IFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EDQog KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCiAqIElNUExJRUQgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFDQogKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW RU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM RQ0KICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwNCiAqIERBTUFH RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO VCBPRiBTVUJTVElUVVRFIEdPT0RTDQogKiBPUiBTRVJWSUNFUzsgTE9TUyBP RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ VElPTikNCiAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUDQogKiBM SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZDQogKiBPVVQgT0YgVEhFIFVT RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP U1NJQklMSVRZIE9GDQogKiBTVUNIIERBTUFHRS4NCiAqDQogKgkkSWQgJA0K ICovDQovKiANCiAqIFVzZXJsYW5kL2tlcm5lbCBpbnRlcmZhY2UgZm9yIEFj Y2VzcyBDb250cm9sIExpc3RzDQogKi8NCg0KI2lmbmRlZiBfU1lTX0FDTF9I DQojZGVmaW5lIF9TWVNfQUNMX0gNCg0KLyoNCiAqIFBPU0lYLjFlIEFDTCB0 eXBlcw0KICovDQoNCiNkZWZpbmUgTUFYX0FDTF9FTlRSSUVTIDMyICAgIC8q IG1heGltdW0gZW50cmllcyBpbiBhbiBBQ0wgKi8NCiNkZWZpbmUgX1BPU0lY X0FDTF9QQVRIX01BWCAgICAgTUFYX0FDTF9FTlRSSUVTDQoNCnR5cGVkZWYg aW50CWFjbF90eXBlX3Q7DQp0eXBlZGVmIGludAlhY2xfdGFnX3Q7DQp0eXBl ZGVmIG1vZGVfdAlhY2xfcGVybV90Ow0KDQpzdHJ1Y3QgYWNsX2VudHJ5IHsN CglhY2xfdGFnX3QJYWVfdGFnOw0KCXVpZF90CWFlX2lkOw0KCWFjbF9wZXJt X3QJYWVfcGVybTsNCn07DQp0eXBlZGVmIHN0cnVjdCBhY2xfZW50cnkJKmFj bF9lbnRyeV90Ow0KDQpzdHJ1Y3QgYWNsIHsNCglpbnQJYWNsX2NudDsNCglz dHJ1Y3QgYWNsX2VudHJ5CWFjbF9lbnRyeVtNQVhfQUNMX0VOVFJJRVNdOw0K fTsNCnR5cGVkZWYgc3RydWN0IGFjbAkqYWNsX3Q7DQoNCi8qDQogKiBQb3Nz aWJsZSB2YWxpZCB2YWx1ZXMgZm9yIGFfdHlwZSBvZiBhY2xfZW50cnlfdA0K ICovDQojZGVmaW5lIEFDTF9VU0VSX09CSgkweDAwMDAwMDAxDQojZGVmaW5l IEFDTF9VU0VSCTB4MDAwMDAwMDINCiNkZWZpbmUgQUNMX0dST1VQX09CSgkw eDAwMDAwMDA0DQojZGVmaW5lIEFDTF9HUk9VUAkweDAwMDAwMDA4DQojZGVm aW5lIEFDTF9NQVNLCTB4MDAwMDAwMTANCiNkZWZpbmUgQUNMX09USEVSCTB4 MDAwMDAwMjANCiNkZWZpbmUgQUNMX09USEVSX09CSglBQ0xfT1RIRVINCiNk ZWZpbmUgQUNMX0FGU19JRAkweDAwMDAwMDQwDQoNCiNkZWZpbmUgQUNMX1RZ UEVfQUNDRVNTCQkweDAwMDAwMDAwDQojZGVmaW5lIEFDTF9UWVBFX0RFRkFV TFQJMHgwMDAwMDAwMQ0KDQovKg0KICogUG9zc2libGUgZmxhZ3MgaW4gYV9w ZXJtIGZpZWxkDQogKi8NCiNkZWZpbmUgQUNMX1BFUk1fRVhFQwkJMHgwMDAx DQojZGVmaW5lIEFDTF9QRVJNX1dSSVRFCQkweDAwMDINCiNkZWZpbmUgQUNM X1BFUk1fUkVBRAkJMHgwMDA0DQojZGVmaW5lIEFDTF9QRVJNX05PTkUJCTB4 MDAwMA0KI2RlZmluZSBBQ0xfUEVSTV9CSVRTCQkoQUNMX1BFUk1fRVhFQyB8 IEFDTF9QRVJNX1dSSVRFIHwgQUNMX1BFUk1fUkVBRCkNCiNkZWZpbmUgQUNM X1BPU0lYMUVfQklUUwkoQUNMX1BFUk1fRVhFQyB8IEFDTF9QRVJNX1dSSVRF IHwgQUNMX1BFUk1fUkVBRCkNCg0KI2lmZGVmIEtFUk5FTA0KDQovKg0KICog U3RvcmFnZSBmb3IgQUNMcyBhbmQgc3VwcG9ydCBzdHJ1Y3R1cmVzDQogKi8N CiNpZmRlZiBNQUxMT0NfREVDTEFSRQ0KTUFMTE9DX0RFQ0xBUkUoTV9BQ0wp Ow0KI2VuZGlmDQoNCg0KLyoNCiAqIER1bW15IGRlY2xhcmF0aW9ucyBzbyB0 aGF0IHdlIGNhbiBleHBvc2UgYWNsX2FjY2VzcyBhbGwgb3ZlciB0aGUgcGxh Y2UNCiAqIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgaW5jbHVkaW5nIHVjcmVk IGFuZCBmcmllbmRzLiAgdm5vZGUuaCBkb2VzIHRoZQ0KICogc2FtZSB0aGlu Zy4NCiAqLw0Kc3RydWN0IHVjcmVkOw0Kc3RydWN0IHByb2M7DQoNCg0KLyoN CiAqIEZ1bmN0aW9ucyBleHBvc2VkIHRvIHRoZSByZXN0IG9mIHRoZSBrZXJu ZWwvdmZzDQogKi8NCmludAlwb3NpeDFlX2FjbF9hY2Nlc3Moc3RydWN0IGFj bCAqYV9hY2wsIGludCBhX21vZGUsIHN0cnVjdCB1Y3JlZCAqYV9jcmVkLA0K CQkJICAgc3RydWN0IHByb2MgKmFfcCk7DQoNCi8qIA0KICogQ3VycmVudGx5 IGRpc2FibGVkIGR1ZSB0byBjeWNsaWMgaW5jbHVkZSBhY2wuaCByZXF1aXJl cyB2bm9kZSwgYW5kIHZpY2UNCiAqIHZlcnNhPw0KICogI2lmZGVmIF9TWVNf Vk5PREUuSA0KICogWFhYIHRoaXMgcHJldmVudHMgd2FybmluZ3MgaGl0aGVy IGFuZCB0aGl0aGVyLCBidXQgcHJvYmFibHkgaXNuJ3QgYSBnb29kDQogKiBp ZGVhLiAgSXQncyBzdXJwcmlzaW5nIGhvdyBtYW55IEZTIHNvdXJjZSBmaWxl cyBkb24ndCBpbmNsdWRlIHZub2RlLmgsDQogKiB5ZXQgZG8gaW5jbHVkZSBv dGhlciBjb2RlIGZvciBGUyBzdXBwb3J0Lg0KICovDQpzdHJ1Y3QgdmF0dHI7 DQpzdHJ1Y3Qgdm9wX2dldGFjbF9hcmdzOw0Kc3RydWN0IHZvcF9hY2xjaGVj a19hcmdzOw0Kdm9pZAlnZW5lcmljX2F0dHJfdG9fcG9zaXgxZV9hY2woc3Ry dWN0IGFjbCAqYV9hY2wsIHN0cnVjdCB2YXR0ciAqdmF0dHIpOw0KaW50CWdl bmVyaWNfdm9wX2dldGFjbChzdHJ1Y3Qgdm9wX2dldGFjbF9hcmdzICphcCk7 DQppbnQJZ2VuZXJpY192b3BfYWNsY2hlY2soc3RydWN0IHZvcF9hY2xjaGVj a19hcmdzICphcCk7DQppbnQJcG9zaXgxZV92b3BfYWNsY2hlY2soc3RydWN0 IHZvcF9hY2xjaGVja19hcmdzICphcCk7DQoNCg0KI2Vsc2UgLyogS0VSTkVM ICovDQoNCi8qDQogKiBTeXNjYWxsIGludGVyZmFjZSAtLSB1c2UgdGhlIGxp YnJhcnkgY2FsbHMgaW5zdGVhZCBhcyB0aGUgc3lzY2FsbHMNCiAqIGhhdmUg c3RyaWN0IGFjbCBlbnRyeSBvcmRlcmluZyByZXF1aXJlbWVudHMNCiAqLw0K aW50CWFjbF9zeXNjYWxsX2dldF9maWxlKGNoYXIgKnBhdGgsIGFjbF90eXBl X3QgdHlwZSwgc3RydWN0IGFjbCAqYWNscCk7DQppbnQJYWNsX3N5c2NhbGxf c2V0X2ZpbGUoY2hhciAqcGF0aCwgYWNsX3R5cGVfdCB0eXBlLCBzdHJ1Y3Qg YWNsICphY2xwKTsNCmludAlhY2xfc3lzY2FsbF9nZXRfZmQoaW50IGZpbGVk ZXMsIGFjbF90eXBlX3QgdHlwZSwgc3RydWN0IGFjbCAqYWNscCk7DQppbnQJ YWNsX3N5c2NhbGxfc2V0X2ZkKGludCBmaWxlZGVzLCBhY2xfdHlwZV90IHR5 cGUsIHN0cnVjdCBhY2wgKmFjbHApOw0KaW50CWFjbF9zeXNjYWxsX2RlbGV0 ZV9kZWZfZmlsZShjb25zdCBjaGFyICpwYXRoX3ApOw0KaW50CWFjbF9zeXNj YWxsX2RlbGV0ZV9kZWZfZmQoaW50IGZpbGVkZXMpOw0KaW50CWFjbF9zeXNj YWxsX2FjbGNoZWNrX2ZpbGUoY2hhciAqcGF0aCwgYWNsX3R5cGVfdCB0eXBl LA0KCQkJCSAgc3RydWN0IGFjbCAqYWNscCk7DQppbnQJYWNsX3N5c2NhbGxf YWNsY2hlY2tfZmQoaW50IGZpbGVkZXMsIGFjbF90eXBlX3QgdHlwZSwNCgkJ CQlzdHJ1Y3QgYWNsICphY2xwKTsNCg0KDQovKg0KICogU3VwcG9ydGVkIFBP U0lYLjFlIEFDTCBtYW5pcHVsYXRpb24gYW5kIGFzc2lnbm1lbnQvcmV0cmll dmFsIEFQSQ0KICovDQppbnQJYWNsX2NhbGNfbWFzayhhY2xfdCAqYWNsX3Ap Ow0KaW50CWFjbF9kZWxldGVfZGVmX2ZpbGUoY29uc3QgY2hhciAqcGF0aF9w KTsNCmludAlhY2xfZGVsZXRlX2RlZl9mZChpbnQgZmlsZWRlcyk7DQphY2xf dAlhY2xfZnJvbV90ZXh0KGNvbnN0IGNoYXIgKmJ1Zl9wKTsNCmFjbF90CWFj bF9nZXRfZmQoaW50IGZkLCBhY2xfdHlwZV90IHR5cGUpOw0KYWNsX3QJYWNs X2dldF9maWxlKGNvbnN0IGNoYXIgKnBhdGhfcCwgYWNsX3R5cGVfdCB0eXBl KTsNCmFjbF90CWFjbF9pbml0KGludCBjb3VudCk7DQppbnQJYWNsX3NldF9m ZChpbnQgZmQsIGFjbF90IGFjbCwgYWNsX3R5cGVfdCB0eXBlKTsNCmludAlh Y2xfc2V0X2ZpbGUoY29uc3QgY2hhciAqcGF0aF9wLCBhY2xfdHlwZV90IHR5 cGUsIGFjbF90IGFjbCk7DQpjaGFyCSphY2xfdG9fdGV4dChhY2xfdCBhY2ws IHNzaXplX3QgKmxlbl9wKTsNCmludAlhY2xfdmFsaWQoYWNsX3QgYWNsKTsN CmludAlhY2xfdmFsaWRfZmlsZShjb25zdCBjaGFyICpwYXRoX3AsIGFjbF90 eXBlX3QgdHlwZSwgYWNsX3QgYWNsKTsNCmludAlhY2xfdmFsaWRfZmQoaW50 IGZkLCBhY2xfdHlwZV90IHR5cGUsIGFjbF90IGFjbCk7DQppbnQJYWNsX2Zy ZWUodm9pZCAqb2JqX3ApOw0KDQoNCiNlbmRpZiAvKiBLRVJORUwgKi8NCiNl bmRpZiAvKiBfU1lTX0FDTF9IICovDQo= --0-2036405370-945287061=:22637-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-fs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.991215143741.22637F-500000>