require '_h2ph_pre.ph'; no warnings 'redefine'; unless(defined(&_LINUX_KEY_H)) { eval 'sub _LINUX_KEY_H () {1;}' unless defined(&_LINUX_KEY_H); require 'linux/types.ph'; require 'linux/list.ph'; require 'linux/rbtree.ph'; require 'linux/rcupdate.ph'; require 'asm/atomic.ph'; if(defined(&__KERNEL__)) { if(defined(&CONFIG_KEYS)) { undef(&KEY_DEBUGGING) if defined(&KEY_DEBUGGING); eval 'sub KEY_POS_VIEW () {0x1000000;}' unless defined(&KEY_POS_VIEW); eval 'sub KEY_POS_READ () {0x2000000;}' unless defined(&KEY_POS_READ); eval 'sub KEY_POS_WRITE () {0x4000000;}' unless defined(&KEY_POS_WRITE); eval 'sub KEY_POS_SEARCH () {0x8000000;}' unless defined(&KEY_POS_SEARCH); eval 'sub KEY_POS_LINK () {0x10000000;}' unless defined(&KEY_POS_LINK); eval 'sub KEY_POS_SETATTR () {0x20000000;}' unless defined(&KEY_POS_SETATTR); eval 'sub KEY_POS_ALL () {0x3f000000;}' unless defined(&KEY_POS_ALL); eval 'sub KEY_USR_VIEW () {0x10000;}' unless defined(&KEY_USR_VIEW); eval 'sub KEY_USR_READ () {0x20000;}' unless defined(&KEY_USR_READ); eval 'sub KEY_USR_WRITE () {0x40000;}' unless defined(&KEY_USR_WRITE); eval 'sub KEY_USR_SEARCH () {0x80000;}' unless defined(&KEY_USR_SEARCH); eval 'sub KEY_USR_LINK () {0x100000;}' unless defined(&KEY_USR_LINK); eval 'sub KEY_USR_SETATTR () {0x200000;}' unless defined(&KEY_USR_SETATTR); eval 'sub KEY_USR_ALL () {0x3f0000;}' unless defined(&KEY_USR_ALL); eval 'sub KEY_GRP_VIEW () {0x100;}' unless defined(&KEY_GRP_VIEW); eval 'sub KEY_GRP_READ () {0x200;}' unless defined(&KEY_GRP_READ); eval 'sub KEY_GRP_WRITE () {0x400;}' unless defined(&KEY_GRP_WRITE); eval 'sub KEY_GRP_SEARCH () {0x800;}' unless defined(&KEY_GRP_SEARCH); eval 'sub KEY_GRP_LINK () {0x1000;}' unless defined(&KEY_GRP_LINK); eval 'sub KEY_GRP_SETATTR () {0x2000;}' unless defined(&KEY_GRP_SETATTR); eval 'sub KEY_GRP_ALL () {0x3f00;}' unless defined(&KEY_GRP_ALL); eval 'sub KEY_OTH_VIEW () {0x1;}' unless defined(&KEY_OTH_VIEW); eval 'sub KEY_OTH_READ () {0x2;}' unless defined(&KEY_OTH_READ); eval 'sub KEY_OTH_WRITE () {0x4;}' unless defined(&KEY_OTH_WRITE); eval 'sub KEY_OTH_SEARCH () {0x8;}' unless defined(&KEY_OTH_SEARCH); eval 'sub KEY_OTH_LINK () {0x10;}' unless defined(&KEY_OTH_LINK); eval 'sub KEY_OTH_SETATTR () {0x20;}' unless defined(&KEY_OTH_SETATTR); eval 'sub KEY_OTH_ALL () {0x3f;}' unless defined(&KEY_OTH_ALL); eval 'sub make_key_ref { my($key,$possession) = @_; eval q({ ( &key_ref_t) ( $key | $possession); }); }' unless defined(&make_key_ref); eval 'sub key { eval q(* &key_ref_to_ptr( &const &key_ref_t &key_ref) { ( &key_ref & ~1); }); }' unless defined(&key); eval 'sub is_key_possessed { my($key_ref) = @_; eval q({ $key_ref & 1; }); }' unless defined(&is_key_possessed); if(defined(&KEY_DEBUGGING)) { eval 'sub KEY_DEBUG_MAGIC () {0x18273645;}' unless defined(&KEY_DEBUG_MAGIC); eval 'sub KEY_DEBUG_MAGIC_X () {0xf8e9dacb;}' unless defined(&KEY_DEBUG_MAGIC_X); } eval 'sub KEY_FLAG_INSTANTIATED () {0;}' unless defined(&KEY_FLAG_INSTANTIATED); eval 'sub KEY_FLAG_DEAD () {1;}' unless defined(&KEY_FLAG_DEAD); eval 'sub KEY_FLAG_REVOKED () {2;}' unless defined(&KEY_FLAG_REVOKED); eval 'sub KEY_FLAG_IN_QUOTA () {3;}' unless defined(&KEY_FLAG_IN_QUOTA); eval 'sub KEY_FLAG_USER_CONSTRUCT () {4;}' unless defined(&KEY_FLAG_USER_CONSTRUCT); eval 'sub KEY_FLAG_NEGATIVE () {5;}' unless defined(&KEY_FLAG_NEGATIVE); eval 'sub KEY_ALLOC_IN_QUOTA () {0x;}' unless defined(&KEY_ALLOC_IN_QUOTA); eval 'sub KEY_ALLOC_QUOTA_OVERRUN () {0x1;}' unless defined(&KEY_ALLOC_QUOTA_OVERRUN); eval 'sub KEY_ALLOC_NOT_IN_QUOTA () {0x2;}' unless defined(&KEY_ALLOC_NOT_IN_QUOTA); eval 'sub key { eval q(* &key_get(1; &key; }); }' unless defined(&key); eval 'sub key_ref_put { my($key_ref) = @_; eval q({ &key_put( &key_ref_to_ptr($key_ref)); }); }' unless defined(&key_ref_put); eval 'sub key_serial { my($key) = @_; eval q((($key) ? ($key)-> &serial : 0)); }' unless defined(&key_serial); eval 'sub __install_session_keyring { my($tsk, $keyring) = @_; eval q(({ 1; ($tsk->{signal}->{session_keyring}) = $keyring; &old_session; })); }' unless defined(&__install_session_keyring); } else { eval 'sub key_validate { my($k) = @_; eval q(0); }' unless defined(&key_validate); eval 'sub key_serial { my($k) = @_; eval q(0); }' unless defined(&key_serial); eval 'sub key_get { my($k) = @_; eval q(({ &NULL; })); }' unless defined(&key_get); eval 'sub key_put { my($k) = @_; eval q( &do { } &while(0)); }' unless defined(&key_put); eval 'sub key_ref_put { my($k) = @_; eval q( &do { } &while(0)); }' unless defined(&key_ref_put); eval 'sub make_key_ref { my($k) = @_; eval q(({ &NULL; })); }' unless defined(&make_key_ref); eval 'sub key_ref_to_ptr { my($k) = @_; eval q(({ &NULL; })); }' unless defined(&key_ref_to_ptr); eval 'sub is_key_possessed { my($k) = @_; eval q(0); }' unless defined(&is_key_possessed); eval 'sub alloc_uid_keyring { my($u,$c) = @_; eval q(0); }' unless defined(&alloc_uid_keyring); eval 'sub switch_uid_keyring { my($u) = @_; eval q( &do { } &while(0)); }' unless defined(&switch_uid_keyring); eval 'sub __install_session_keyring { my($t, $k) = @_; eval q(({ &NULL; })); }' unless defined(&__install_session_keyring); eval 'sub copy_keys { my($f,$t) = @_; eval q(0); }' unless defined(©_keys); eval 'sub copy_thread_group_keys { my($t) = @_; eval q(0); }' unless defined(©_thread_group_keys); eval 'sub exit_keys { my($t) = @_; eval q( &do { } &while(0)); }' unless defined(&exit_keys); eval 'sub exit_thread_group_keys { my($tg) = @_; eval q( &do { } &while(0)); }' unless defined(&exit_thread_group_keys); eval 'sub suid_keys { my($t) = @_; eval q( &do { } &while(0)); }' unless defined(&suid_keys); eval 'sub exec_keys { my($t) = @_; eval q( &do { } &while(0)); }' unless defined(&exec_keys); eval 'sub key_fsuid_changed { my($t) = @_; eval q( &do { } &while(0)); }' unless defined(&key_fsuid_changed); eval 'sub key_fsgid_changed { my($t) = @_; eval q( &do { } &while(0)); }' unless defined(&key_fsgid_changed); eval 'sub key_init () { eval q( &do { } &while(0)); }' unless defined(&key_init); } } } 1;