static int __set_item(struct pppox_sock *po) { int hash = hash_item(po->pppoe_pa.sid, po->pppoe_pa.remote); struct pppox_sock *ret; ret = item_hash_table[hash]; while (ret) { if (cmp_2_addr(&ret->pppoe_pa, &po->pppoe_pa) && ret->pppoe_ifindex == po->pppoe_ifindex) return -EALREADY; ret = ret->next; } po->next = item_hash_table[hash]; item_hash_table[hash] = po; return 0; }
static int __set_item(struct pppox_opt *po) { int hash = hash_item(po->pppoe_pa.sid, po->pppoe_pa.remote); struct pppox_opt *ret; ret = item_hash_table[hash]; while (ret) { if (cmp_2_addr(&ret->pppoe_pa, &po->pppoe_pa)) return -EALREADY; ret = ret->next; } if (!ret) { po->next = item_hash_table[hash]; item_hash_table[hash] = po; } return 0; }