static int filter(alpm_pkg_t *pkg) { /* check if this package was explicitly installed */ if(config->op_q_explicit && alpm_pkg_get_reason(pkg) != ALPM_PKG_REASON_EXPLICIT) { return 0; } /* check if this package was installed as a dependency */ if(config->op_q_deps && alpm_pkg_get_reason(pkg) != ALPM_PKG_REASON_DEPEND) { return 0; } /* check if this pkg isn't in a sync DB */ if(config->op_q_foreign && !is_foreign(pkg)) { return 0; } /* check if this pkg is unrequired */ if(config->op_q_unrequired && !is_unrequired(pkg)) { return 0; } /* check if this pkg is outdated */ if(config->op_q_upgrade && (alpm_sync_newversion(pkg, alpm_option_get_syncdbs(config->handle)) == NULL)) { return 0; } return 1; }
static int skb_remove_foreign_references(struct sk_buff *skb) { struct page *page; unsigned long pfn; int i, off; char *vaddr; BUG_ON(skb_shinfo(skb)->frag_list); if (skb_cloned(skb) && unlikely(pskb_expand_head(skb, 0, 0, GFP_ATOMIC))) return 0; for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { pfn = page_to_pfn(skb_shinfo(skb)->frags[i].page); if (!is_foreign(pfn)) continue; page = alloc_page(GFP_ATOMIC | __GFP_NOWARN); if (unlikely(!page)) return 0; vaddr = kmap_skb_frag(&skb_shinfo(skb)->frags[i]); off = skb_shinfo(skb)->frags[i].page_offset; memcpy(page_address(page) + off, vaddr + off, skb_shinfo(skb)->frags[i].size); kunmap_skb_frag(vaddr); put_page(skb_shinfo(skb)->frags[i].page); skb_shinfo(skb)->frags[i].page = page; } return 1; }
bool Model_Checking::Full_Data::is_foreign_transfer() const { return is_foreign() && (this->TOACCOUNTID == Model_Translink::AS_TRANSFER); }