• Home
  • Raw
  • Download

Lines Matching full:claim

74  * batadv_choose_claim() - choose the right bucket for a claim.
78 * Return: the hash index of the claim
82 struct batadv_bla_claim *claim = (struct batadv_bla_claim *)data; in batadv_choose_claim() local
85 hash = jhash(&claim->addr, sizeof(claim->addr), hash); in batadv_choose_claim()
86 hash = jhash(&claim->vid, sizeof(claim->vid), hash); in batadv_choose_claim()
139 * Return: true if the claim have the same data, 0 otherwise
184 * batadv_claim_release() - release claim from lists and queue for free after
186 * @ref: kref pointer of the claim
190 struct batadv_bla_claim *claim; in batadv_claim_release() local
193 claim = container_of(ref, struct batadv_bla_claim, refcount); in batadv_claim_release()
195 spin_lock_bh(&claim->backbone_lock); in batadv_claim_release()
196 old_backbone_gw = claim->backbone_gw; in batadv_claim_release()
197 claim->backbone_gw = NULL; in batadv_claim_release()
198 spin_unlock_bh(&claim->backbone_lock); in batadv_claim_release()
201 old_backbone_gw->crc ^= crc16(0, claim->addr, ETH_ALEN); in batadv_claim_release()
206 kfree_rcu(claim, rcu); in batadv_claim_release()
210 * batadv_claim_put() - decrement the claim refcounter and possibly release it
211 * @claim: claim to be free'd
213 static void batadv_claim_put(struct batadv_bla_claim *claim) in batadv_claim_put() argument
215 kref_put(&claim->refcount, batadv_claim_release); in batadv_claim_put()
219 * batadv_claim_hash_find() - looks for a claim in the claim hash
223 * Return: claim if found or NULL otherwise.
231 struct batadv_bla_claim *claim; in batadv_claim_hash_find() local
242 hlist_for_each_entry_rcu(claim, head, hash_entry) { in batadv_claim_hash_find()
243 if (!batadv_compare_claim(&claim->hash_entry, data)) in batadv_claim_hash_find()
246 if (!kref_get_unless_zero(&claim->refcount)) in batadv_claim_hash_find()
249 claim_tmp = claim; in batadv_claim_hash_find()
311 struct batadv_bla_claim *claim; in batadv_bla_del_backbone_claims() local
324 hlist_for_each_entry_safe(claim, node_tmp, in batadv_bla_del_backbone_claims()
326 if (claim->backbone_gw != backbone_gw) in batadv_bla_del_backbone_claims()
329 batadv_claim_put(claim); in batadv_bla_del_backbone_claims()
330 hlist_del_rcu(&claim->hash_entry); in batadv_bla_del_backbone_claims()
342 * batadv_bla_send_claim() - sends a claim frame according to the provided info
344 * @mac: the mac address to be announced within the claim
346 * @claimtype: the type of the claim (CLAIM, UNCLAIM, ANNOUNCE, ...)
380 * with XX = claim type in batadv_bla_send_claim()
394 /* normal claim frame in batadv_bla_send_claim()
399 "%s(): CLAIM %pM on vid %d\n", __func__, mac, in batadv_bla_send_claim()
608 struct batadv_bla_claim *claim; in batadv_bla_answer_request() local
613 "%s(): received a claim request, send all of our own claims again\n", in batadv_bla_answer_request()
627 hlist_for_each_entry_rcu(claim, head, hash_entry) { in batadv_bla_answer_request()
629 if (claim->backbone_gw != backbone_gw) in batadv_bla_answer_request()
632 batadv_bla_send_claim(bat_priv, claim->addr, claim->vid, in batadv_bla_answer_request()
649 * send an announcement claim with which we can check again.
692 * batadv_bla_add_claim() - Adds a claim in the claim hash
694 * @mac: the mac address of the claim
703 struct batadv_bla_claim *claim; in batadv_bla_add_claim() local
710 claim = batadv_claim_hash_find(bat_priv, &search_claim); in batadv_bla_add_claim()
712 /* create a new claim entry if it does not exist yet. */ in batadv_bla_add_claim()
713 if (!claim) { in batadv_bla_add_claim()
714 claim = kzalloc(sizeof(*claim), GFP_ATOMIC); in batadv_bla_add_claim()
715 if (!claim) in batadv_bla_add_claim()
718 ether_addr_copy(claim->addr, mac); in batadv_bla_add_claim()
719 spin_lock_init(&claim->backbone_lock); in batadv_bla_add_claim()
720 claim->vid = vid; in batadv_bla_add_claim()
721 claim->lasttime = jiffies; in batadv_bla_add_claim()
723 claim->backbone_gw = backbone_gw; in batadv_bla_add_claim()
724 kref_init(&claim->refcount); in batadv_bla_add_claim()
730 kref_get(&claim->refcount); in batadv_bla_add_claim()
733 batadv_choose_claim, claim, in batadv_bla_add_claim()
734 &claim->hash_entry); in batadv_bla_add_claim()
738 kfree(claim); in batadv_bla_add_claim()
742 claim->lasttime = jiffies; in batadv_bla_add_claim()
743 if (claim->backbone_gw == backbone_gw) in batadv_bla_add_claim()
756 spin_lock_bh(&claim->backbone_lock); in batadv_bla_add_claim()
757 old_backbone_gw = claim->backbone_gw; in batadv_bla_add_claim()
759 claim->backbone_gw = backbone_gw; in batadv_bla_add_claim()
760 spin_unlock_bh(&claim->backbone_lock); in batadv_bla_add_claim()
763 /* remove claim address from old backbone_gw */ in batadv_bla_add_claim()
765 old_backbone_gw->crc ^= crc16(0, claim->addr, ETH_ALEN); in batadv_bla_add_claim()
771 /* add claim address to new backbone_gw */ in batadv_bla_add_claim()
773 backbone_gw->crc ^= crc16(0, claim->addr, ETH_ALEN); in batadv_bla_add_claim()
778 batadv_claim_put(claim); in batadv_bla_add_claim()
783 * claim
784 * @claim: claim whose backbone_gw should be returned
786 * Return: valid reference to claim::backbone_gw
789 batadv_bla_claim_get_backbone_gw(struct batadv_bla_claim *claim) in batadv_bla_claim_get_backbone_gw() argument
793 spin_lock_bh(&claim->backbone_lock); in batadv_bla_claim_get_backbone_gw()
794 backbone_gw = claim->backbone_gw; in batadv_bla_claim_get_backbone_gw()
796 spin_unlock_bh(&claim->backbone_lock); in batadv_bla_claim_get_backbone_gw()
802 * batadv_bla_del_claim() - delete a claim from the claim hash
804 * @mac: mac address of the claim to be removed
805 * @vid: VLAN id for the claim to be removed
810 struct batadv_bla_claim search_claim, *claim; in batadv_bla_del_claim() local
816 claim = batadv_claim_hash_find(bat_priv, &search_claim); in batadv_bla_del_claim()
817 if (!claim) in batadv_bla_del_claim()
825 batadv_choose_claim, claim); in batadv_bla_del_claim()
836 batadv_claim_put(claim); in batadv_bla_del_claim()
969 * batadv_handle_claim() - check for CLAIM frame
985 /* register the gateway if not yet available, and add the claim. */ in batadv_handle_claim()
993 /* this must be a CLAIM frame */ in batadv_handle_claim()
1006 * batadv_check_claim_group() - check for claim group membership
1011 * @ethhdr: pointer to the Ethernet header of the claim frame
1013 * checks if it is a claim packet and if its on the same group.
1018 * 2 - if it is a claim packet and on the same group
1019 * 1 - if is a claim packet from another group
1020 * 0 - if it is not a claim packet
1050 /* don't accept claim frames from ourselves */ in batadv_check_claim_group()
1070 "taking other backbones claim group: %#.4x\n", in batadv_check_claim_group()
1081 * batadv_bla_process_claim() - Check if this is a claim frame, and process it
1086 * Return: true if it was a claim frame, otherwise return false to
1115 * The depth of the VLAN headers is recorded to drop BLA claim in batadv_bla_process_claim()
1131 return false; /* not a claim frame */ in batadv_bla_process_claim()
1133 /* this must be a ARP frame. check if it is a claim. */ in batadv_bla_process_claim()
1159 /* check if it is a claim frame in general */ in batadv_bla_process_claim()
1164 /* check if there is a claim frame encapsulated deeper in (QinQ) and in batadv_bla_process_claim()
1175 /* check if it is a claim frame. */ in batadv_bla_process_claim()
1180 …"%s(): received a claim frame from another group. From: %pM on vid %d ...(hw_src %pM, hw_dst %pM)\… in batadv_bla_process_claim()
1190 /* check for the different types of claim frames ... */ in batadv_bla_process_claim()
1216 …"%s(): ERROR - this looks like a claim frame, but is useless. eth src %pM on vid %d ...(hw_src %pM… in batadv_bla_process_claim()
1289 struct batadv_bla_claim *claim; in batadv_bla_purge_claims() local
1302 hlist_for_each_entry_rcu(claim, head, hash_entry) { in batadv_bla_purge_claims()
1303 backbone_gw = batadv_bla_claim_get_backbone_gw(claim); in batadv_bla_purge_claims()
1311 if (!batadv_has_timed_out(claim->lasttime, in batadv_bla_purge_claims()
1321 claim->addr, claim->vid); in batadv_bla_purge_claims()
1325 claim->addr, claim->vid); in batadv_bla_purge_claims()
1526 /* The hash for claim and backbone hash receive the same key because they
1552 /* setting claim destination address */ in batadv_bla_init()
1896 * * we have to race for a claim
1909 struct batadv_bla_claim search_claim, *claim = NULL; in batadv_bla_rx() local
1956 claim = batadv_claim_hash_find(bat_priv, &search_claim); in batadv_bla_rx()
1958 if (!claim) { in batadv_bla_rx()
1959 /* possible optimization: race for a claim */ in batadv_bla_rx()
1960 /* No claim exists yet, claim it for us! in batadv_bla_rx()
1964 "%s(): Unclaimed MAC %pM found. Claim it. Local: %s\n", in batadv_bla_rx()
1975 /* if it is our own claim ... */ in batadv_bla_rx()
1976 backbone_gw = batadv_bla_claim_get_backbone_gw(claim); in batadv_bla_rx()
1983 claim->lasttime = jiffies; in batadv_bla_rx()
1999 * send a claim and update the claim table in batadv_bla_rx()
2019 if (claim) in batadv_bla_rx()
2020 batadv_claim_put(claim); in batadv_bla_rx()
2031 * * a claim was received which has to be processed
2045 struct batadv_bla_claim search_claim, *claim = NULL; in batadv_bla_tx() local
2071 claim = batadv_claim_hash_find(bat_priv, &search_claim); in batadv_bla_tx()
2073 /* if no claim exists, allow it. */ in batadv_bla_tx()
2074 if (!claim) in batadv_bla_tx()
2078 backbone_gw = batadv_bla_claim_get_backbone_gw(claim); in batadv_bla_tx()
2087 if (batadv_has_timed_out(claim->lasttime, 100)) { in batadv_bla_tx()
2088 /* only unclaim if the last claim entry is in batadv_bla_tx()
2099 batadv_dbg(BATADV_DBG_BLA, bat_priv, "%s(): Race for claim %pM detected. Drop packet.\n", in batadv_bla_tx()
2126 if (claim) in batadv_bla_tx()
2127 batadv_claim_put(claim); in batadv_bla_tx()
2133 * batadv_bla_claim_table_seq_print_text() - print the claim table in a seq file
2145 struct batadv_bla_claim *claim; in batadv_bla_claim_table_seq_print_text() local
2168 hlist_for_each_entry_rcu(claim, head, hash_entry) { in batadv_bla_claim_table_seq_print_text()
2169 backbone_gw = batadv_bla_claim_get_backbone_gw(claim); in batadv_bla_claim_table_seq_print_text()
2178 claim->addr, batadv_print_vid(claim->vid), in batadv_bla_claim_table_seq_print_text()
2195 * batadv_bla_claim_dump_entry() - dump one entry of the claim table
2201 * @claim: entry to dump
2208 struct batadv_bla_claim *claim) in batadv_bla_claim_dump_entry() argument
2223 is_own = batadv_compare_eth(claim->backbone_gw->orig, in batadv_bla_claim_dump_entry()
2226 spin_lock_bh(&claim->backbone_gw->crc_lock); in batadv_bla_claim_dump_entry()
2227 backbone_crc = claim->backbone_gw->crc; in batadv_bla_claim_dump_entry()
2228 spin_unlock_bh(&claim->backbone_gw->crc_lock); in batadv_bla_claim_dump_entry()
2236 if (nla_put(msg, BATADV_ATTR_BLA_ADDRESS, ETH_ALEN, claim->addr) || in batadv_bla_claim_dump_entry()
2237 nla_put_u16(msg, BATADV_ATTR_BLA_VID, claim->vid) || in batadv_bla_claim_dump_entry()
2239 claim->backbone_gw->orig) || in batadv_bla_claim_dump_entry()
2254 * batadv_bla_claim_dump_bucket() - dump one bucket of the claim table
2270 struct batadv_bla_claim *claim; in batadv_bla_claim_dump_bucket() local
2275 hlist_for_each_entry_rcu(claim, head, hash_entry) { in batadv_bla_claim_dump_bucket()
2280 primary_if, claim); in batadv_bla_claim_dump_bucket()
2294 * batadv_bla_claim_dump() - dump claim table to a netlink socket
2597 * @addr: mac address of which the claim status is checked
2609 struct batadv_bla_claim *claim = NULL; in batadv_bla_check_claim() local
2624 claim = batadv_claim_hash_find(bat_priv, &search_claim); in batadv_bla_check_claim()
2626 /* If there is a claim and we are not owner of the claim, in batadv_bla_check_claim()
2629 if (claim) { in batadv_bla_check_claim()
2630 if (!batadv_compare_eth(claim->backbone_gw->orig, in batadv_bla_check_claim()
2633 batadv_claim_put(claim); in batadv_bla_check_claim()