All of lore.kernel.org
 help / color / mirror / Atom feed
* Record keys
       [not found] <434F5E3A.5030003@cornell.edu>
@ 2005-10-14  7:30 ` Ivan Gyurdiev
  2005-10-15  9:33   ` Ivan Gyurdiev
  2005-10-19 14:02   ` Joshua Brindle
  0 siblings, 2 replies; 4+ messages in thread
From: Ivan Gyurdiev @ 2005-10-14  7:30 UTC (permalink / raw)
  To: selinux; +Cc: Joshua Brindle

(resent with correct list address this time)
> Please help me decide what to do with the record key for the record 
> structures which I've added into libsepol and libsemanage. Stephen has 
> now exported those functions into the shared library, so after an 
> official release, it would be good not to be changing those APIs.
>
> The job of the key is to identify a record uniquely among a collection 
> of the same record type.
> They do this by the record.compare(key) function. Currently the key is 
> required to be a subset of the record fields (so it has to be 
> contained within the record...does that make it useless? could this 
> change in the future, and how?)
>
> ================
> I added the key structure, because it just seemed wrong to pass an 
> "incomplete" record structure containing just the key fields 
> into..say...a query() handler. Note that the key constructor forces 
> the caller to specify all the fields (since this is a key, all fields 
> are required), while splitting this up into set calls to a record 
> structure could result in invalid keys.
>
> Currently keys are contained _within_ the record - they're a subset of 
> the record's fields. That's the primary reason why I ask whether keys 
> should be kept or not - a method called extract_key is supported....If 
> the key can be extracted from the record, you can use that on 
> modify(), and add() to pass a single argument (the record). That also 
> makes it easier for the caller (specify key fields in only one place, 
> instead of both in key and record). It's easy to just add the record, 
> but then the API just *looks* wrong..  also that prevents use of keys 
> that are not contained within the record in the future... but I'm not 
> clear as to whether this will ever change.
>
> If such "external" keys are to be used, then the extract_key method 
> can't be used (but there's nothing to require this method
> for each record - it's just expected internally to be implemented - 
> internals can easily change to fit what's required). Basically, I'm 
> trying to imagine a scenario where the key would not be contained 
> within the record, and what would be required to support that.
>


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Record keys
  2005-10-14  7:30 ` Record keys Ivan Gyurdiev
@ 2005-10-15  9:33   ` Ivan Gyurdiev
  2005-10-19 14:02   ` Joshua Brindle
  1 sibling, 0 replies; 4+ messages in thread
From: Ivan Gyurdiev @ 2005-10-15  9:33 UTC (permalink / raw)
  To: selinux; +Cc: Joshua Brindle


>
>> Please help me decide what to do with the record key for the record 
>> structures which I've added into libsepol and libsemanage. Stephen 
>> has now exported those functions into the shared library, so after an 
>> official release, it would be good not to be changing those APIs.
Joshua? No comments?
(see original message for details)

If nobody suggests anything, I am likely to leave the key in, and add a 
key_unpack function, and pass the key down to the sepol level....


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Record keys
  2005-10-14  7:30 ` Record keys Ivan Gyurdiev
  2005-10-15  9:33   ` Ivan Gyurdiev
@ 2005-10-19 14:02   ` Joshua Brindle
  2005-10-19 16:50     ` Ivan Gyurdiev
  1 sibling, 1 reply; 4+ messages in thread
From: Joshua Brindle @ 2005-10-19 14:02 UTC (permalink / raw)
  To: Ivan Gyurdiev; +Cc: selinux

Ivan Gyurdiev wrote:
> (resent with correct list address this time)
> 
>> Please help me decide what to do with the record key for the record 
>> structures which I've added into libsepol and libsemanage. Stephen has 
>> now exported those functions into the shared library, so after an 
>> official release, it would be good not to be changing those APIs.
>>
>> The job of the key is to identify a record uniquely among a collection 
>> of the same record type.
>> They do this by the record.compare(key) function. Currently the key is 
>> required to be a subset of the record fields (so it has to be 
>> contained within the record...does that make it useless? could this 
>> change in the future, and how?)
>>
>> ================
>> I added the key structure, because it just seemed wrong to pass an 
>> "incomplete" record structure containing just the key fields 
>> into..say...a query() handler. Note that the key constructor forces 
>> the caller to specify all the fields (since this is a key, all fields 
>> are required), while splitting this up into set calls to a record 
>> structure could result in invalid keys.
>>
>> Currently keys are contained _within_ the record - they're a subset of 
>> the record's fields. That's the primary reason why I ask whether keys 
>> should be kept or not - a method called extract_key is supported....If 
>> the key can be extracted from the record, you can use that on 
>> modify(), and add() to pass a single argument (the record). That also 
>> makes it easier for the caller (specify key fields in only one place, 
>> instead of both in key and record). It's easy to just add the record, 
>> but then the API just *looks* wrong..  also that prevents use of keys 
>> that are not contained within the record in the future... but I'm not 
>> clear as to whether this will ever change.
>>
>> If such "external" keys are to be used, then the extract_key method 
>> can't be used (but there's nothing to require this method
>> for each record - it's just expected internally to be implemented - 
>> internals can easily change to fit what's required). Basically, I'm 
>> trying to imagine a scenario where the key would not be contained 
>> within the record, and what would be required to support that.
>>
> 
I can't think of any time a key wouldn't be within the record. I don't 
know what the problem is though, the record will always be serialized 
some way into a flat text file so you have to key_extract either way, if 
you keep a key around you do it once on read, if you don't you do it 
anytime there is a query, set, etc, it seems better to do it once.

--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Record keys
  2005-10-19 14:02   ` Joshua Brindle
@ 2005-10-19 16:50     ` Ivan Gyurdiev
  0 siblings, 0 replies; 4+ messages in thread
From: Ivan Gyurdiev @ 2005-10-19 16:50 UTC (permalink / raw)
  To: Joshua Brindle; +Cc: selinux


> I can't think of any time a key wouldn't be within the record. I don't 
> know what the problem is though, the record will always be serialized 
> some way into a flat text file
You keep keep referring to the problem I'm trying to solve as 
parsing/writing a flat text file. Please realize that records are 
supposed to be backend-independent data structures. In particular, I 
currently use them for transfer with a flat file, or a policydb object. 
I am hoping you can use them over the wire for the policy server... 
so..no, the record will not always go in a text file.

I understand the serialization argument...
There's the same problem with policy - the key is a bunch of primitives 
that need to be assembled together (and disassembled).
> so you have to key_extract either way, if you keep a key around you do 
> it once on read, if you don't you do it anytime there is a query, set, 
> etc, it seems better to do it once.
Sepol doesn't have much use for the key structure - it's mostly to 
benefit semanage polymorphism. Sepol would just disassembles the key 
back into its components to do a query. I need to add a function to do 
that, since currently the key is opaque.

Also, if the key is separate from the record, the user can do something 
stupid, like add a record with a mismatch key.
=======

Anyway, there's no significant problem here - either way is fine. I'm 
just trying to finalize the API.

--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2005-10-19 16:42 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <434F5E3A.5030003@cornell.edu>
2005-10-14  7:30 ` Record keys Ivan Gyurdiev
2005-10-15  9:33   ` Ivan Gyurdiev
2005-10-19 14:02   ` Joshua Brindle
2005-10-19 16:50     ` Ivan Gyurdiev

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.