예제 #1
0
shared_ptr<Port> ThriftConfigApplier::updatePort(const shared_ptr<Port>& orig,
        const cfg::Port* cfg) {
    CHECK_EQ(orig->getID(), cfg->logicalID);

    auto vlans = portVlans_[orig->getID()];
    if (cfg->state == orig->getState() &&
            VlanID(cfg->ingressVlan) == orig->getIngressVlan() &&
            vlans == orig->getVlans() &&
            cfg->speed == orig->getSpeed() &&
            (cfg->name.empty() || cfg->name == orig->getName())) {
        return nullptr;
    }

    auto newPort = orig->clone();
    newPort->setState(cfg->state);
    newPort->setIngressVlan(VlanID(cfg->ingressVlan));
    newPort->setVlans(vlans);
    newPort->setSpeed(cfg->speed);
    // If the port name isn't set in the config (it's optional),
    // leave it with the default value.
    if (!cfg->name.empty()) {
        newPort->setName(cfg->name);
    }
    return newPort;
}
예제 #2
0
void BcmPort::program(const shared_ptr<Port>& port) {
  setIngressVlan(port);
  setSpeed(port);
  setPause(port);
  // Update FEC settings if needed. Note this is not only
  // on speed change as the port's default speed (say on a
  // cold boot) maybe what is desired by the config. But we
  // may still need to enable FEC
  setFEC(port);
  // Update Tx Setting if needed.
  setTxSetting(port);
  setSflowRates(port);
}
예제 #3
0
파일: BcmPort.cpp 프로젝트: XPliant/fboss
void BcmPort::program(const shared_ptr<Port>& port) {
  setIngressVlan(port);
  setSpeed(port);
}