func Auth(userip net.IP, basip net.IP, timeout uint32, username, userpwd []byte) (err error) { var res portal.Message if res, err = Challenge(userip, basip); err == nil { if cres, ok := res.(portal.ChallengeRes); ok { res, err = portal.ChapAuth(userip, *config.HuaweiSecret, basip, *config.HuaweiNasPort, username, userpwd, res.ReqId(), cres.GetChallenge()) if err == nil { res, err = portal.AffAckAuth(userip, *config.HuaweiSecret, basip, *config.HuaweiNasPort, res.SerialId(), res.ReqId()) } } } return }