Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct ip_session {
- struct ip_session *next;
- __be32 addr;
- __be32 netmask;
- };
- #define HASH_SESSION_SIZE 256
- #define HASH_SESSION(addr) (ntohr(addr) & 0xFF)
- static struct ip_session *ip_sessions[HASH_SESSION_SIZE] = {};
- static inline struct ip_session **ip_session_bucket(__be32 addr)
- {
- __be32 h0 = HASH_SESSION(addr);
- return (&(ip_sessions[h0]));
- }
- static int ip_session_add1(__be32 addr, __be32 netmask)
- {
- struct ip_session *session, **ms;
- write_lock(&session_lock);
- if((session = (struct ip_session *)kzalloc(sizeof(struct ip_session), GFP_ATOMIC)) == NULL)
- {
- write_unlock(&session_lock);
- return -1;
- }
- session->addr = addr;
- session->netmask = netmask;
- ms = ip_session_bucket(addr);
- session->next = *ms;
- *ms = session;
- write_unlock(&session_lock);
- return 0;
- }
- static int ip_session_add2(__be32 addr, __be32 netmask)
- {
- struct ip_session *session, **ms;
- struct ip_session s;
- write_lock(&session_lock);
- session = &s;
- session->addr = addr;
- session->netmask = netmask;
- ms = ip_session_bucket(addr);
- session->next = *ms;
- *ms = session;
- write_unlock(&session_lock);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement