Skip to content

Commit

Permalink
cmds/core/ip: wrap errors
Browse files Browse the repository at this point in the history
Signed-off-by: Siarhiej Siemianczuk <[email protected]>
  • Loading branch information
binjip978 committed Oct 21, 2024
1 parent 789e3b9 commit bd8c119
Show file tree
Hide file tree
Showing 8 changed files with 48 additions and 48 deletions.
8 changes: 4 additions & 4 deletions cmds/core/ip/address_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func (cmd *cmd) address() error {
}

if err := cmd.handle.AddrAdd(iface, addr); err != nil {
return fmt.Errorf("adding %v to %v failed: %v", addr.IP, cmd.currentToken(), err)
return fmt.Errorf("adding %v to %v failed: %w", addr.IP, cmd.currentToken(), err)
}

return nil
Expand All @@ -69,7 +69,7 @@ func (cmd *cmd) address() error {
}

if err := cmd.handle.AddrReplace(iface, addr); err != nil {
return fmt.Errorf("replacing %v on %v failed: %v", addr.IP, cmd.currentToken(), err)
return fmt.Errorf("replacing %v on %v failed: %w", addr.IP, cmd.currentToken(), err)
}

return nil
Expand All @@ -80,7 +80,7 @@ func (cmd *cmd) address() error {
}

if err := cmd.handle.AddrDel(iface, addr); err != nil {
return fmt.Errorf("deleting %v from %v failed: %v", addr.IP, cmd.currentToken(), err)
return fmt.Errorf("deleting %v from %v failed: %w", addr.IP, cmd.currentToken(), err)
}

return nil
Expand Down Expand Up @@ -214,7 +214,7 @@ func (cmd *cmd) addressFlush() error {
continue
}

return fmt.Errorf("deleting %v from %v failed: %v", a, iface, err)
return fmt.Errorf("deleting %v from %v failed: %w", a, iface, err)
}

break
Expand Down
10 changes: 5 additions & 5 deletions cmds/core/ip/ip_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -207,25 +207,25 @@ func parseFlags(args []string, out io.Writer) (cmd, error) {
if cmd.Opts.Netns != "" {
nsHandle, err := netns.GetFromName(cmd.Opts.Netns)
if err != nil {
return cmd, fmt.Errorf("failed to find network namespace %q: %v", cmd.Opts.Netns, err)
return cmd, fmt.Errorf("failed to find network namespace %q: %w", cmd.Opts.Netns, err)
}
defer nsHandle.Close()

handle, err = netlink.NewHandleAt(nsHandle, unix.NETLINK_ROUTE)
if err != nil {
return cmd, fmt.Errorf("failed to create netlink handle in network namespace %q: %v", cmd.Opts.Netns, err)
return cmd, fmt.Errorf("failed to create netlink handle in network namespace %q: %w", cmd.Opts.Netns, err)
}
} else {
handle, err = netlink.NewHandle(unix.NETLINK_ROUTE)
if err != nil {
return cmd, fmt.Errorf("failed to create netlink handle: %v", err)
return cmd, fmt.Errorf("failed to create netlink handle: %w", err)
}
}

if cmd.Opts.RcvBuf != "" {
bufSize, err := strconv.Atoi(cmd.Opts.RcvBuf)
if err != nil {
return cmd, fmt.Errorf("failed to parse rcvbuf flag: %v", err)
return cmd, fmt.Errorf("failed to parse rcvbuf flag: %w", err)
}

handle.SetSocketReceiveBufferSize(bufSize, true)
Expand Down Expand Up @@ -299,7 +299,7 @@ func (cmd *cmd) batchCmds() error {
if cmd.Opts.Force {
log.Printf("Error (force mode on, continuing): Failed to run command '%s': %v", line, err)
} else {
return fmt.Errorf("failed to run command '%s': %v", line, err)
return fmt.Errorf("failed to run command '%s': %w", line, err)
}
}
}
Expand Down
18 changes: 9 additions & 9 deletions cmds/core/ip/link_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,11 @@ func (cmd *cmd) linkSet() error {
return cmd.setLinkHardwareAddress(iface)
case "up":
if err := cmd.handle.LinkSetUp(iface); err != nil {
return fmt.Errorf("%v can't make it up: %v", iface.Attrs().Name, err)
return fmt.Errorf("%v can't make it up: %w", iface.Attrs().Name, err)
}
case "down":
if err := cmd.handle.LinkSetDown(iface); err != nil {
return fmt.Errorf("%v can't make it down: %v", iface.Attrs().Name, err)
return fmt.Errorf("%v can't make it down: %w", iface.Attrs().Name, err)
}
case "arp":
switch cmd.nextToken("on", "off") {
Expand Down Expand Up @@ -143,7 +143,7 @@ func (cmd *cmd) setLinkHardwareAddress(iface netlink.Link) error {

err = cmd.handle.LinkSetHardwareAddr(iface, hwAddr)
if err != nil {
return fmt.Errorf("%v cant set mac addr %v: %v", iface.Attrs().Name, hwAddr, err)
return fmt.Errorf("%v cant set mac addr %v: %w", iface.Attrs().Name, hwAddr, err)
}

return nil
Expand All @@ -154,7 +154,7 @@ func (cmd *cmd) setLinkMTU(iface netlink.Link) error {

mtu, err := strconv.Atoi(token)
if err != nil {
return fmt.Errorf("invalid mtu %v: %v", token, err)
return fmt.Errorf("invalid mtu %v: %w", token, err)
}

return cmd.handle.LinkSetMTU(iface, mtu)
Expand All @@ -165,7 +165,7 @@ func (cmd *cmd) setLinkGroup(iface netlink.Link) error {

group, err := strconv.Atoi(token)
if err != nil {
return fmt.Errorf("invalid group %v: %v", token, err)
return fmt.Errorf("invalid group %v: %w", token, err)
}

return cmd.handle.LinkSetMTU(iface, group)
Expand All @@ -183,7 +183,7 @@ func (cmd *cmd) setLinkTxQLen(iface netlink.Link) error {
token := cmd.nextToken("<qlen>")
qlen, err := strconv.Atoi(token)
if err != nil {
return fmt.Errorf("invalid queuelen %v: %v", token, err)
return fmt.Errorf("invalid queuelen %v: %w", token, err)
}

return cmd.handle.LinkSetTxQLen(iface, qlen)
Expand All @@ -194,12 +194,12 @@ func (cmd *cmd) setLinkNetns(iface netlink.Link) error {

ns, err := strconv.Atoi(token)
if err != nil {
return fmt.Errorf("invalid int %v: %v", token, err)
return fmt.Errorf("invalid int %v: %w", token, err)
}

if err := cmd.handle.LinkSetNsPid(iface, ns); err != nil {
if err := cmd.handle.LinkSetNsFd(iface, ns); err != nil {
return fmt.Errorf("failed to set netns: %v", err)
return fmt.Errorf("failed to set netns: %w", err)
}
}

Expand Down Expand Up @@ -460,7 +460,7 @@ func (cmd *cmd) parseLinkShow() (netlink.Link, []string, error) {
devName := cmd.nextToken("device name")
device, err = netlink.LinkByName(devName)
if err != nil {
return nil, nil, fmt.Errorf("failed to get link %v: %v", device, err)
return nil, nil, fmt.Errorf("failed to get link %v: %w", device, err)
}
case "type":
for cmd.tokenRemains() {
Expand Down
22 changes: 11 additions & 11 deletions cmds/core/ip/monitor_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,22 +60,22 @@ func (cmd *cmd) monitor() error {
case "address":
singleOptionSelected = true
if err := netlink.AddrSubscribe(addrUpdates, done); err != nil {
return fmt.Errorf("failed to subscribe to address updates: %v", err)
return fmt.Errorf("failed to subscribe to address updates: %w", err)
}
case "link":
singleOptionSelected = true
if err := netlink.LinkSubscribe(linkUpdates, done); err != nil {
return fmt.Errorf("failed to subscribe to link updates: %v", err)
return fmt.Errorf("failed to subscribe to link updates: %w", err)
}
case "neigh":
singleOptionSelected = true
if err := netlink.NeighSubscribe(neighUpdates, done); err != nil {
return fmt.Errorf("failed to subscribe to neigh updates: %v", err)
return fmt.Errorf("failed to subscribe to neigh updates: %w", err)
}
case "route":
singleOptionSelected = true
if err := netlink.RouteSubscribe(routeUpdates, done); err != nil {
return fmt.Errorf("failed to subscribe to route updates: %v", err)
return fmt.Errorf("failed to subscribe to route updates: %w", err)
}
case "label":
addressLabel = "[ADDR]"
Expand All @@ -101,16 +101,16 @@ func (cmd *cmd) monitor() error {
// if either the all option was selected or no option was selected, subscribe to all
if !singleOptionSelected {
if err := netlink.AddrSubscribe(addrUpdates, done); err != nil {
return fmt.Errorf("failed to subscribe to address updates: %v", err)
return fmt.Errorf("failed to subscribe to address updates: %w", err)
}
if err := netlink.LinkSubscribe(linkUpdates, done); err != nil {
return fmt.Errorf("failed to subscribe to link updates: %v", err)
return fmt.Errorf("failed to subscribe to link updates: %w", err)
}
if err := netlink.NeighSubscribe(neighUpdates, done); err != nil {
return fmt.Errorf("failed to subscribe to neigh updates: %v", err)
return fmt.Errorf("failed to subscribe to neigh updates: %w", err)
}
if err := netlink.RouteSubscribe(routeUpdates, done); err != nil {
return fmt.Errorf("failed to subscribe to route updates: %v", err)
return fmt.Errorf("failed to subscribe to route updates: %w", err)
}
}

Expand All @@ -135,7 +135,7 @@ func (cmd *cmd) printUpdates(addrUpdates chan netlink.AddrUpdate, linkUpdates ch

link, err := netlink.LinkByIndex(update.LinkIndex)
if err != nil {
return fmt.Errorf("failed to get link by index %d: %v", update.LinkIndex, err)
return fmt.Errorf("failed to get link by index %d: %w", update.LinkIndex, err)
}

var action string
Expand Down Expand Up @@ -167,7 +167,7 @@ func (cmd *cmd) printUpdates(addrUpdates chan netlink.AddrUpdate, linkUpdates ch

link, err := netlink.LinkByIndex(update.Neigh.LinkIndex)
if err != nil {
return fmt.Errorf("failed to get link by index %d: %v", update.Neigh.LinkIndex, err)
return fmt.Errorf("failed to get link by index %d: %w", update.Neigh.LinkIndex, err)
}

fmt.Fprintf(cmd.Out, "%s%s%s%s dev %v lladdr %s %v\n", timestamp, neighLabel, action, update.Neigh.IP, link.Attrs().Name, update.Neigh.HardwareAddr.String(), neighStateToString(update.Neigh.State))
Expand All @@ -183,7 +183,7 @@ func (cmd *cmd) printUpdates(addrUpdates chan netlink.AddrUpdate, linkUpdates ch

link, err := netlink.LinkByIndex(update.Route.LinkIndex)
if err != nil {
return fmt.Errorf("failed to get link by index %d: %v", update.Route.LinkIndex, err)
return fmt.Errorf("failed to get link by index %d: %w", update.Route.LinkIndex, err)
}

fmt.Fprintf(cmd.Out, "%s%s%s %s dev %s table %d proto %s scope %s src %s\n", timestamp, routeLabel, action, update.Route.Dst, link.Attrs().Name, update.Route.Table, update.Route.Protocol.String(), update.Route.Scope.String(), update.Route.Src)
Expand Down
8 changes: 4 additions & 4 deletions cmds/core/ip/ops_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ import (
func (cmd *cmd) showAllLinks(withAddresses bool, filterByType ...string) error {
links, err := netlink.LinkList()
if err != nil {
return fmt.Errorf("can't enumerate interfaces: %v", err)
return fmt.Errorf("can't enumerate interfaces: %w", err)
}

addresses := make([][]netlink.Addr, len(links))
if withAddresses {
for idx, link := range links {
addrs, err := netlink.AddrList(link, cmd.Family)
if err != nil {
return fmt.Errorf("can't get addresses for link %s: %v", link.Attrs().Name, err)
return fmt.Errorf("can't get addresses for link %s: %w", link.Attrs().Name, err)
}

addresses[idx] = addrs
Expand All @@ -39,7 +39,7 @@ func (cmd *cmd) showLink(link netlink.Link, withAddresses bool, filterByType ...
if withAddresses {
addrs, err := netlink.AddrList(link, cmd.Family)
if err != nil {
return fmt.Errorf("can't get addresses for link %s: %v", link.Attrs().Name, err)
return fmt.Errorf("can't get addresses for link %s: %w", link.Attrs().Name, err)
}
addresses[0] = addrs
}
Expand Down Expand Up @@ -125,7 +125,7 @@ func (cmd *cmd) showLinks(addresses [][]netlink.Addr, links []netlink.Link, filt
if l.MasterIndex != 0 {
link, err := netlink.LinkByIndex(l.MasterIndex)
if err != nil {
return fmt.Errorf("can't get link with index %d: %v", l.MasterIndex, err)
return fmt.Errorf("can't get link with index %d: %w", l.MasterIndex, err)
}
master = fmt.Sprintf("master %s ", link.Attrs().Name)
}
Expand Down
18 changes: 9 additions & 9 deletions cmds/core/ip/route_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ func (cmd *cmd) routeAdddefault() error {
fmt.Fprintf(cmd.Out, "Add default route %v via %v", nhval, l.Attrs().Name)
r := &netlink.Route{LinkIndex: l.Attrs().Index, Gw: nhval}
if err := cmd.handle.RouteAdd(r); err != nil {
return fmt.Errorf("error adding default route to %v: %v", l.Attrs().Name, err)
return fmt.Errorf("error adding default route to %v: %w", l.Attrs().Name, err)
}
return nil
}
Expand All @@ -113,13 +113,13 @@ func (cmd *cmd) routeAdd() error {

link, err := netlink.LinkByName(d)
if err != nil {
return fmt.Errorf("error getting link %s: %v", d, err)
return fmt.Errorf("error getting link %s: %w", d, err)
}

route.LinkIndex = link.Attrs().Index

if err := cmd.handle.RouteAdd(route); err != nil {
return fmt.Errorf("error adding route %s -> %s: %v", route.Dst.IP, d, err)
return fmt.Errorf("error adding route %s -> %s: %w", route.Dst.IP, d, err)
}
return nil
}
Expand All @@ -134,13 +134,13 @@ func (cmd *cmd) routeAppend() error {

link, err := netlink.LinkByName(d)
if err != nil {
return fmt.Errorf("error getting link %s: %v", d, err)
return fmt.Errorf("error getting link %s: %w", d, err)
}

route.LinkIndex = link.Attrs().Index

if err := cmd.handle.RouteAppend(route); err != nil {
return fmt.Errorf("error appending route %s -> %s: %v", route.Dst.IP, d, err)
return fmt.Errorf("error appending route %s -> %s: %w", route.Dst.IP, d, err)
}
return nil
}
Expand All @@ -154,13 +154,13 @@ func (cmd *cmd) routeReplace() error {

link, err := netlink.LinkByName(d)
if err != nil {
return fmt.Errorf("error getting link %s: %v", d, err)
return fmt.Errorf("error getting link %s: %w", d, err)
}

route.LinkIndex = link.Attrs().Index

if err := cmd.handle.RouteReplace(route); err != nil {
return fmt.Errorf("error appending route %s -> %s: %v", route.Dst.IP, d, err)
return fmt.Errorf("error appending route %s -> %s: %w", route.Dst.IP, d, err)
}
return nil
}
Expand All @@ -174,13 +174,13 @@ func (cmd *cmd) routeDel() error {

link, err := netlink.LinkByName(d)
if err != nil {
return fmt.Errorf("error getting link %s: %v", d, err)
return fmt.Errorf("error getting link %s: %w", d, err)
}

route.LinkIndex = link.Attrs().Index

if err := cmd.handle.RouteDel(route); err != nil {
return fmt.Errorf("error deleting route %s -> %s: %v", route.Dst.IP, d, err)
return fmt.Errorf("error deleting route %s -> %s: %w", route.Dst.IP, d, err)
}
return nil
}
Expand Down
8 changes: 4 additions & 4 deletions cmds/core/ip/tunnel_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ func (cmd *cmd) showAllTunnels() error {
func (cmd *cmd) showTunnels(op *options) error {
links, err := netlink.LinkList()
if err != nil {
return fmt.Errorf("failed to list interfaces: %v", err)
return fmt.Errorf("failed to list interfaces: %w", err)
}

return cmd.printTunnels(filterTunnels(links, op))
Expand Down Expand Up @@ -520,7 +520,7 @@ func (cmd *cmd) tunnelAdd(op *options) error {
}

if err := cmd.handle.LinkAdd(link); err != nil {
return fmt.Errorf("failed to add tunnel: %v", err)
return fmt.Errorf("failed to add tunnel: %w", err)
}

return nil
Expand All @@ -533,7 +533,7 @@ func (cmd *cmd) tunnelDelete(op *options) error {

link, err := cmd.handle.LinkByName(op.name)
if err != nil {
return fmt.Errorf("failed to find tunnel %s: %v", op.name, err)
return fmt.Errorf("failed to find tunnel %s: %w", op.name, err)
}

valid := true
Expand All @@ -549,7 +549,7 @@ func (cmd *cmd) tunnelDelete(op *options) error {
}

if err := cmd.handle.LinkDel(link); err != nil {
return fmt.Errorf("failed to delete tunnel %s: %v", op.name, err)
return fmt.Errorf("failed to delete tunnel %s: %w", op.name, err)
}

return nil
Expand Down
4 changes: 2 additions & 2 deletions cmds/core/ip/util_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@ func printJSON[T Printable](cmd cmd, data T) error {
jsonData, err = json.Marshal(data)
}
if err != nil {
return fmt.Errorf("error marshalling JSON data: %v", err)
return fmt.Errorf("error marshalling JSON data: %w", err)
}

_, err = cmd.Out.Write(jsonData)
if err != nil {
return fmt.Errorf("error writing JSON data to writer: %v", err)
return fmt.Errorf("error writing JSON data to writer: %w", err)
}

return nil
Expand Down

0 comments on commit bd8c119

Please sign in to comment.